CN118012667A - 一种具备动态优化复制策略的混合一致性方法和系统 - Google Patents
一种具备动态优化复制策略的混合一致性方法和系统 Download PDFInfo
- Publication number
- CN118012667A CN118012667A CN202410080913.2A CN202410080913A CN118012667A CN 118012667 A CN118012667 A CN 118012667A CN 202410080913 A CN202410080913 A CN 202410080913A CN 118012667 A CN118012667 A CN 118012667A
- Authority
- CN
- China
- Prior art keywords
- write
- synchronization
- operations
- copy
- consistency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000010076 replication Effects 0.000 title claims abstract description 32
- 238000005457 optimization Methods 0.000 title claims abstract description 19
- 238000010801 machine learning Methods 0.000 claims abstract description 20
- 230000001364 causal effect Effects 0.000 claims abstract description 15
- 239000003795 chemical substances by application Substances 0.000 claims description 61
- 239000013598 vector Substances 0.000 claims description 44
- 230000001360 synchronised effect Effects 0.000 claims description 36
- 238000012545 processing Methods 0.000 claims description 10
- 230000004913 activation Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 101100481876 Danio rerio pbk gene Proteins 0.000 description 3
- 101100481878 Mus musculus Pbk gene Proteins 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及了一种具备动态优化复制策略的混合一致性方法和系统,方法采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量,提出了一种副本同步策略,在保证一致性级别的同时兼顾了系统性能的提升;基于该策略实现的混合一致性模型,相较于传统的强一致性算法和因果一致性算法有效的减少了无效写同步数量,大幅提高了系统吞吐量。
Description
技术领域
本申请实施例涉及分布式系统技术领域,尤其涉及一种具备动态优化复制策略的混合一致性方法和系统。
背景技术
分布式系统常使用静态、单一的一致性方法保证软件/系统组件之间数据的一致性,但随着工作负载的波动,现有技术无法保证一致性方法的性能能够适应复杂的工作流。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例的主要目的在于提出一种具备动态优化复制策略的混合一致性方法和系统,能够减少被覆盖的写操作同步次数,降低复制策略开销,而且能够保证一致性提高性能。
为实现上述目的,本发明实施例的第一方面提供一种具备动态优化复制策略的混合一致性方法,所述具备动态优化复制策略的混合一致性方法包括:
根据多个副本节点的历史读操作之间的写操作数量,采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量;
构建所述多个副本节点之间具备强一致性和因果一致性的混合一致性模型,在所述混合一致性模型中,统计当前时刻至最近一次读操作之间的写操作数量,并根据统计的写操作数量与预测的写操作数量之间的比较结果,执行所述多个副本节点之间的同步操作。
在一些实施例中,所述机器学习预测模型为LSTM模型,所述LSTM模型包括:
ht=f(Wh·[ht-1,Xt]+bh)
yt=g(Wc·ht+bc)
其中,ht为LSTM的隐藏状态,Wh和Wc为权重矩阵,bh和bc为偏置向量,f和g为激活函数,Xt=[xt-1,xt-2,…,xt-T],T为时序窗口的大小,t=T,…,n,n为历史读操作之间的写操作数量,yt为预测的写操作数量。
在一些实施例中,所述具备动态优化复制策略的混合一致性方法还包括:
根据每个副本节点的得分,对所述多个副本节点的同步优先级进行排序;其中得分通过如下方式计算:
其中,c为副本节点存储容量,φ为副本节点可用内存,为副本节点处理请求的时延,ξ为副本节点宕机概率,l1,l2,l3为系数。
在一些实施例中,当同步操作为写同步操作时,执行所述多个副本节点之间的同步操作包括:
通过所述多个副本节点中的协调者接收第一键值对信息的目标写操作;
通过系统代理判断所述第一键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,由所述协调者和参与者执行所述目标写操作,当所述协调者和所述参与者执行完成所述目标写操作,由所述系统代理更新当前时刻至最近一次读操作之间的写操作数量;所述系统代理是指搭载有所述机器学习预测模型的副本节点,所述参与者是待执行所述目标写操作的副本节点;
通过系统代理判断所述第一键值对信息在当前时刻至最近一次读操作之间的写操作数量小于预测的写操作数量,由所述协调者执行所述目标写操作,当所述协调者执行完成所述目标写操作,由所述系统代理更新当前时刻至最近一次读操作之间的写操作数量。
在一些实施例中,所述由所述协调者和参与者执行所述目标写操作,包括:
通过所述系统代理发送所述参与者的地址至所述协调者;
通过所述协调者向所述参与者发送包含所述目标写操作的Commit Request消息;
通过所述参与者向所述协调者反馈能执行所述目标写操作的消息;
通过所述协调者在本地副本执行所述目标写操作,并向所述参与者发送Commit消息;
通过所述参与者执行所述目标写操作并向所述协调者反馈执行所述目标写操作的成功消息;
通过所述协调者向所述系统代理反馈执行所述目标写操作的成功消息。
在一些实施例中,当同步操作为读同步操作时,执行所述多个副本节点之间的同步操作包括:
通过系统代理判断第二键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,读取所述多个副本节点中的过半副本节点中的所述第二键值对信息,并由所述系统代理更新读操作次数并重新统计当前时刻至最近一次读操作之间的写操作次数;所述系统代理是指搭载有所述机器学习预测模型的副本节点;
通过系统代理判断所述第二键值对信息在当前时刻至最近一次读操作之间的写操作数量小于预测的写操作数量,等待所述多个副本节点中的优先级排序最后一个副本节点执行所述第二键值对信息的写操作之后,再读取所述多个副本节点中的过半副本节点中的所述第二键值对信息,并由所述系统代理更新读操作次数并重新统计当前时刻至最近一次读操作之间的写操作次数。
在一些实施例中,每个副本节点保存一个向量时钟,一个向量时钟以map的方式记录对应的副本节点所执行的同步操作次数;当所述同步操作为写同步操作时,执行所述多个副本节点之间的同步操作包括:
通过第一副本节点执行第三键值对信息的写同步操作,并更新对应的向量时钟;
通过系统代理判断所述第三键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,通过所述第一副本节点将本地的向量时钟和所述第三键值对信息的写同步操作组合成混合格数据结构,由所述第一副本节点将所述混合格数据结构发送至第二副本节点;
通过所述第二副本节点根据所述混合格数据结构中的向量时钟与预设的合并规则,判断执行写同步操作,并更新本地的向量时钟;
通过所述系统代理更新当前时刻至最近一次读操作之间的写操作数量。
在一些实施例中,每个副本节点保存一个向量时钟,一个向量时钟以map的方式记录对应的副本节点所执行的同步操作次数;当所述同步操作为读同步操作时,执行所述多个副本节点之间的同步操作包括:
当读同步操作对应的第四键值对信息的写同步操作次数为0,执行所述第四键值对信息的读同步操作;当读同步操作对应的所述第四键值对信息的写同步操作次数为0,由系统代理通知待执行写同步操作的副本节点执行第四键值对信息的写同步操作,所述系统代理是指搭载有所述机器学习预测模型的副本节点。
在一些实施例中,在执行所述多个副本节点之间的同步操作之前,所述具备动态优化复制策略的混合一致性方法还包括:
通过使最后一次执行写操作的副本节点执行同步操作,直至所有副本节点均执行同步操作完成。
为实现上述目的,本发明实施例的第二方面提供一种具备动态优化复制策略的混合一致性系统,所述具备动态优化复制策略的混合一致性系统包括:
写操作预测单元,用于根据多个副本节点的历史读操作之间的写操作数量,采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量;
同步执行单元,用于构建所述多个副本节点之间具备强一致性和因果一致性的混合一致性模型,在所述混合一致性模型中,统计当前时刻至最近一次读操作之间的写操作数量,并根据统计的写操作数量与预测的写操作数量之间的比较结果,执行所述多个副本节点之间的同步操作。
本申请的一个实施例提供了一种具备动态优化复制策略的混合一致性方法,本方法根据历史读操作之间的写操作数量预测最近一次读操作与下一次读操作之间的写操作数量,减少被覆盖的写操作同步次数,降低复制策略开销,而且能够通过预测的写操作数量构建具备强一致性和因果一致性的混合一致性模型,以适应不同类型的工作负载要求。
可以理解的是,上述第二方面和相关技术相比存在的有益效果和上述第一方面和相关技术相比存在的有益效果相同,可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的一种具备动态优化复制策略的混合一致性方法的流程示意图;
图2是本申请一个实施例提供的副本间同步操作时浪费的读操作示意图;
图3是本申请一个实施例提供的Commit Request阶段的示意图;
图4是本申请一个实施例提供的Commit阶段的示意图;
图5是本申请一个实施例提供的混合格数据结构的构建过程示意图;
图6是本申请一个实施例提供的因果一致性方法内数据合并过程图;
图7是本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
除非另有定义,本文所使用的所有的技术和科学术语和属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
背景介绍:
分布式系统常使用静态、单一的一致性方法保证软件/系统组件之间数据的一致性,但随着工作负载的波动,现有技术无法保证一致性方法的性能能够适应复杂的工作流。以下简要介绍Quorum复制策略和Raft算法:
Quorum复制策略通过设定读写操作执行的节点数来保证一致性,通常要求读操作执行节点数r与写操作执行节点数w之和大于系统总节点数n,即w+r>n,通过读写操作节点数重叠的方式,保证读取结果都为最新值。但是Quorum复制策略无法适应动态变化的工作负载,该策略的每次读写操作都需要等待一定数量的节点执行,但是在重写工作负载中存在许多被快速覆盖的写操作结果,因此该策略存在很多无谓的开销。
Raft算法是一种常见的强一致性算法,Raft能为在计算机集群之间部署有限状态机提供一种通用方法,并确保集群内的任意节点在某种状态转换上保持一致,Raft算法中的所有节点都有三种状态:leader、candidate、follower,每个节点在任意时刻只能是三种状态中的一种,并且集群中只能有一个节点是leader状态,以保证集群对操作的共识和一致性。但是Raft算法由于存在单个leader节点的限制,并且不能为该节点无限制提高性能,仍会存在单点性能瓶颈,并且该算法仅仅只能提供单一的一致性级别,无法适应多样的负载工作流。
实施例介绍:
参照图1,本申请的一个实施例提供了一种具备动态优化复制策略的混合一致性方法,本方法包括步骤S110-S120:
步骤S110、根据多个副本节点的历史读操作之间的写操作数量,采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量。
步骤S120、构建多个副本节点之间具备强一致性和因果一致性的混合一致性模型,在混合一致性模型中,统计当前时刻至最近一次读操作之间的写操作数量,并根据统计的写操作数量与预测的写操作数量之间的比较结果,执行多个副本节点之间的同步操作。
在以覆盖更新为主要写入方式的键值存储系统中,重写工作流下的性能较差,不仅仅是因为写入更新的开销,还因为副本节点间存在着大量无效的同步更新操作。如图2所示,在副本R2上同步副本R1的写入更新可能并不是副本R1的最新写入,所以副本R2的该次同步更新又会被副本R1的最新写入更新覆盖,则可以称之前的写入更新的同步操作是被浪费的,是无效的同步操作。
为了减少无效同步次数,本实施例设计一种副本同步策略,本实施例的副本同步策略可以基于读写工作流历史特征,预测最近一次读操作至下一次读操作之间的写操作数量,根据在下一次读操作发生之前将最新版本的数据(如键值对信息)进行同步,最大程度的降低无效同步次数,并且副本同步策略可以根据读写负载的变化来对同步策略进行动态优化。
以下主要介绍副本同步策略的实现过程以及利用副本同步策略实现的同步操作:
副本同步策略使用机器学习预测模型进行预测,优选机器学习预测模型使用LSTM模型,因为LSTM对时序数据的预测较为准确,并且该模型较小,方便在不同副本节点之间进行传播。
LSTM模型根据历史读操作之间的写操作数量数据来预测下一次读操作所经历的写操作次数,模型的输入为历史读操作之间的写操作次数,输出为下一次两个读操作之间的写操作次数。定义输入序列为:X=(x1,…,xn),其中xi表示第i-1次读操作到第i次读操作之间的写操作次数。之后定义输出序列:Y=(y1,…,yn),其中yi表示第i次读操作到第i+1次读操作之间的写操作次数。从输入序列和输出序列构建样本数据集D,其中每个样本由历史的时间步组成的输入序列和下一次的输出序列组成,即D={(x1,…,xt),(yt)|t=T,…,n}。
接着定义LSTM模型中的输入向量为:Xt=[xt-1,xt-2,…,xt-T],其中T是时序窗口的大小,表示LSTM模型的输入序列包含多少个历史时间步。在训练过程中,LSTM模型将根据历史时间步的输入序列X,预测下一次读操作经历的写操作次数yt+1。LSTM模型可以表示为:
ht=f(Wh·[ht-1,Xt]+bh)
yt=g(Wc·ht+bc)
其中,ht是LSTM的隐藏状态,Wh和Wc是权重矩阵,bh和bc是偏置向量,f和g是激活函数。
将上述LSTM模型部署在单个副本节点(系统代理)中,可基于全局读写工作负载情况进行模型训练和预测。LSTM模型可以是具有一层LSTM神经元的简单模型,便于搭载在系统代理上。
考虑一个由k个副本节点组成的分布式系统,表示为r0,r1,…,rk-1。系统中所有副本节点可能存在的状态为S,si∈S表示ri的状态。为了简单起见,假设该系统是完全连通的,副本节点上的每一次同步操作最终都会传递至所有副本中并且每次同步操作都是基于状态的覆盖操作,而非基于操作的合并。在副本节点ri上的第k次操作定义为副本节点ri初始状态为/>因此副本节点ri同步来自其它副本节点的第k次操作发送的状态改变可以表示为:/>可以验证副本同步策略的可行性,定义操作之间存在着偏序关系<,对于一组偏序操作集合F={f1,f2,…,fk},其中f1<f2<…<fk,无论副本节点ri执行了该集合中多少次操作、以什么顺序执行,只要保证执行了最后一个操作fk,它都会达成状态 F'k是F中包含fk的任意子集。所有副本节点可达到收敛状态,即数据一致状态。
在通过LSTM模型进行预测后,确定了副本节点间需要开始进行同步的时刻。随后再基于考虑副本节点的通信性能、处理能力、存储容量和可靠性等因素,确定所有副本节点之间同步优先级顺序。下表1是按副本同步优先级对所有节点进行排序的算法的伪代码:
表1
将所有节点按照需要节点的优先级进行排序。副本节点的评分是根据存储容量c、可用内存φ、处理请求的时延和节点宕机概率ξ使用以下加权公式量化得到,此外,li表示它们的系数。从而可以得出所有节点的评分(score)公式:
解释上述伪代码:用LSTM模型预测得出节点需要开始进行副本同步的时间,再从上面的方程式可以得出每个节点的评分score。根据各个节点的多种因素对所有节点的副本同步优先级进行排序。
(1)算法1的输入是节点得分数组score[]和节点的总数k。输出是一个存储了k个节点索引号的数组topk[];
(2)算法7至25行,如果k=1,算法首先会在[L,L+n-1]范围内找到最大的mx数,随后,在[L+n,R]范围内按序找到一个比mx大的数,存入topk数组,如果找不到,就把mx存入topk数组;
(3)如果k>1,搜索空间被分为两组,在[L,L+m-1]中找到floor(k/2)个索引,在[L+m,R]中找到k-floor(k/2)个索引。其中m是一个服从二项分布的随机数;
(4)重复执行,直到k=1得到一个索引号。
在步骤S200中,根据预测的写操作数量,构建了具备强一致性和因果一致性的混合一致性模型。
在一些实施例中,当同步操作为写同步操作时,执行多个副本节点之间的同步操作包括以下步骤S210-S230:
步骤S210、通过多个副本节点中的协调者接收第一键值对信息的目标写操作。
步骤S220、通过系统代理判断第一键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,由协调者和参与者执行目标写操作,当协调者和参与者执行完成目标写操作,由系统代理更新当前时刻至最近一次读操作之间的写操作数量;系统代理是指搭载有机器学习预测模型的副本节点,参与者是待执行目标写操作的副本节点。
步骤S230、通过系统代理判断第一键值对信息在当前时刻至最近一次读操作之间的写操作数量小于预测的写操作数量,由协调者执行目标写操作,当协调者执行完成目标写操作,由系统代理更新当前时刻至最近一次读操作之间的写操作数量。
步骤S210至S230是基于两阶段提交(2PC)方案并进行了相关复制策略的优化实现了强一致性。主要思想是在传统两阶段提交中加入了本实施例所述副本同步策略,优化了节点选择。参照图3,加入了副本同步策略的两阶段提交包括(写操作):
第一阶段,即Commit Request阶段,服务器集群收到了写处理请求的副本节点会充当为协调者,协调者会向系统代理(搭载有LSTM模型)发送响应的写操作请求。系统代理收到写请求之后,存在两种情况:
第一种情况:是该次写请求达到了key(键值对的主键)的写同步阈值(由副本同步策略预测),则系统代理会认为此次操作需要进行同步,则会通知协调者其他参与者的地址,协调者向这些参与者发送响应的Request消息,询问这些参与者能否执行此次操作,如果这些参与者均能执行此次操作,则此次操作可以顺利进入第二个阶段,即Commit阶段。
第二种情况:是此次写请求未能达到该key的写同步阈值,则系统代理会认为此次操作不需要进行同步,那么该协调者就不需要向其他参与者发送Request消息,可直接进入Commit阶段。
第二阶段,即Commit阶段,参照图4,各个节点会按照写请求具体执行操作,由于第一阶段会发生两种情况,那么Commit阶段也需要按照两种情况进行处理:
第一种情况:是该次写请求达到了该key的写同步阈值,之前提到第一阶段协调者会将操作发给参与者,此时所有参与者和协调者均能保证可以执行成功此次写操作,那么这次写操作可以顺利执行。协调者首先是在本地执行写操作,然后在该阶段中向同一批参与者发送Commit消息,通知参与者们执行写操作,参与者均向协调者发送执行成功的消息后,协调者会向系统代理发送执行成功的消息。那么系统代理就会对副本同步策略相关的元信息进行更新,具体来说是将该key的写操作次数加1。
第二种情况:是该次写请求未能达到该key的写同步阈值,那么就不存在其余的参与者,协调者只需要在本地执行该写操作即可向协调者返回执行成功的信息,让系统代理更新相关元信息即可,可以有效降低集群之间写操作的同步频率。
在一些实施例中,当同步操作为读同步操作时,执行多个副本节点之间的同步操作包括步骤S310至S320:
步骤S310、通过系统代理判断第二键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,读取多个副本节点中的过半副本节点中的第二键值对信息,并由系统代理更新读操作次数并重新统计当前时刻至最近一次读操作之间的写操作次数;系统代理是指搭载有机器学习预测模型的副本节点。
步骤S320、通过系统代理判断第二键值对信息在当前时刻至最近一次读操作之间的写操作数量小于预测的写操作数量,等待多个副本节点中的优先级排序最后一个副本节点执行第二键值对信息的写操作之后,再读取多个副本节点中的过半副本节点中的第二键值对信息,并由系统代理更新读操作次数并重新统计当前时刻至最近一次读操作之间的写操作次数。
上述步骤S210至S230是强一致性的写操作处理,步骤S310至步骤S320是强一致性的读操作,读操作具体分为两种处理情况:
第一种情况:是副本同步策略预测成功,即统计的写操作次数大于预测的写操作次数。由于副本同步策略预测成功,那么也就是说此次读操作涉及到的key相关的同步操作均已经向其他参与者节点同步成功了,因此可以直接通过过半读取节点的方式保证强一致性。然后系统代理就会更新副本同步策略的元信息,将该key这次读操作距离上次读操作经历的写操作次数写入自己的变量内记录,这里使用变量putCountsInTotal进行记录,然后再基于新的信息进行下一次读操作需要经历的写操作次数进行预测。
第二种情况是:副本同步策略预测失败。在此种情况中,由于副本同步策略预测失败,那么也就是说,在多个副本节点中,存在着某个节点关于该key的最新写操作还没有同步,那么它需要等待该次写操作同步完成之后才能进行读操作。系统代理会判断出哪一个节点是最后一次更新此次key的数据,因此它会发送消息让该节点进行写操作的同步。该节点写同步完成之后会通知系统代理,系统代理则会更新元信息,即把本次变量信息(通过变量putCountsInProxy记录)追加至putCountsInTotal变量内,然后将本次putCountsInProxy变量置0,重新记录下一次读操作要经历的写操作次数。副本同步策略则会根据putCountsInTotal变量信息重新对下一次读操作经历的写操作次数进行预测。
在一些实施例中,每个副本节点保存一个向量时钟,一个向量时钟以map的方式记录对应的副本节点所执行的同步操作次数;当同步操作为写同步操作时,执行多个副本节点之间的同步操作包括以下步骤S410至S440:
步骤S410、通过第一副本节点执行第三键值对信息的写同步操作,并更新对应的向量时钟。
步骤S420、通过系统代理判断第三键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,通过第一副本节点将本地的向量时钟和第三键值对信息的写同步操作组合成混合格数据结构,由第一副本节点将混合格数据结构发送至第二副本节点。
步骤S430、通过第二副本节点根据混合格数据结构中的向量时钟与预设的合并规则,判断执行写同步操作,并更新本地的向量时钟。
步骤S440、通过系统代理更新当前时刻至最近一次读操作之间的写操作数量。
步骤S410至S440是基于副本同步策略实现因果一致性方法,使用向量钟、时间戳等方式实现因果一致性。方案内实现了混合格数据结构,以下介绍该结构:
混合格数据结构属于无冲突可复制数据类型,该类型可保证分布式系统的强最终一致性,因此基于该数据结构实现因果一致性模型,可以保证系统一致性的下限,同时也可以通过修改合并规则来实现其他一致性方法。
参照图5,本方案基于向量时钟和时间戳的方式构建混合分布式向量时钟VCLattice,这是混合格数据结构中最基本的格数据结构,其保证了格结构所具备的性质。结合相关待同步的数据操作信息,如键值对信息,形成具备数据同步合并规则属性并且携带待同步数据信息的格数据结构ValueLattice,最后再与键值对信息中的主键组合构成混合格数据结构HybridLattice。
因果一致性方法内合并过程如图6所示,在待同步的副本R1和副本R2中,分别保存各自用于数据合并的元数据信息向量时钟,向量时钟均以map的方式记录系统中各个副本所执行的操作次数,在该场景下存在两个副本,且开始时均未执行操作,则向量时钟均为(0,0),其含义表示为(<副本R1执行次数>,<副本R2执行次数>),副本节点每执行一次写操作,则会更新本节点向量时钟,对应数据自增。如图所示,副本R2首先在本节点中对集合变量X执行了一次写入操作X={0},更新本地向量时钟,对应的副本执行次数自增,因此副本R2向量时钟为VC_R2=(0,1)。副本R2将该次操作与各类元信息组合形成系统内数据同步传输结构混合格数据结构,并发送至副本R1。副本R1收到该数据同步消息,首先会根据混合格数据结构中的合并规则判断该操作是否有效,再决定是否执行该操作。副本R1所携带向量时钟为VC_R1=(0,0),混合格数据中携带的向量钟信息为VC=(0,1),预先制定的合并规则判定VC>VC_R1,则副本R1中集合变量X被混合格结构数据中的集合变量X覆盖,更新为X={0},向量时钟更新为VC_R1=(0,1),此时副本R1执行另一次写操作写入集合变量X={0,1},再次更新本地向量时钟为VC_R1=(1,1),之后副本同步操作均按照以上规则进行。
步骤S410至步骤S440对写操作的处理方法具体包括:
首先本节点内会执行此次写操作,然后更新本地的混合格元数据,由于本地节点执行了这次写操作,因此需要对本地节点的向量时钟信息进行额外加1;本地节点执行完毕之后,基于该次写操作请求构建待向其它节点同步的混合格数据结构信息,相应的,由于该key执行了一次写操作请求,因此需要更新系统代理节点内的相关元数据,并用更新之后的putCountsInProxy信息和预测值(用变量predictPutCounts记录)进行比较,如果超过了预测值,则会将该待同步混合格数据写入至同步缓冲通道中,并发送至其他节点。最后向客户端返回执行结果和本地向量时钟,让客户端更新自己的向量时钟。
putCountsInProxy会对每个key的写操作进行统计,设定触发副本同步策略的阈值(基于LSTM模型预测得到),当某个key的写操作次数满足此阈值时,则使用LSTM模型对其未来的读写操作进行预测。predictPutCounts是LSTM模型以单个key-value(键值对)为单位进行预测的结果,predictPutCounts[k]表示key为k的键值对的写操作次数。客户端调用写操作时,将会刷新putCountsInProxy,并与predictPutCounts比对,当putCountsInProxy>=predictPutCounts,则会触发同步操作,否则本地执行并立即返回执行结果。
在一些实施例中,每个副本节点保存一个向量时钟,一个向量时钟以map的方式记录对应的副本节点所执行的同步操作次数;当同步操作为读同步操作时,执行多个副本节点之间的同步操作包括步骤S510和步骤S520:
步骤S510、当读同步操作对应的第四键值对信息的写同步操作次数为0,执行第四键值对信息的读同步操作;当读同步操作对应的第四键值对信息的写同步操作次数为0,由系统代理通知待执行写同步操作的副本节点执行第四键值对信息的写同步操作,系统代理是指搭载有机器学习预测模型的副本节点。
步骤S510对读操作的处理方法具体包括:
首先由于收到了读操作请求,如果该key的写操作次数为0,则说明不存在待同步的操作,则可以直接进行读取操作也可以保证因果一致性;如果不等于,则说明存在待同步的操作,则系统代理则会通知待同步节点完成同步操作,完成同步操作之后,本地节点会将读取数据封装之混合格数据之内,返回给客户端。
客户端调用读操作,为了避免副本之间的数据不一致,会让最后一次执行写操作的副本节点进行同步操作,待副本节点均确认同步完成时才会执行GET操作,返回对应数据。
本发明采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量,提出了一种副本同步策略,在保证一致性级别的同时兼顾了系统性能的提升。基于该策略实现的混合一致性模型,相较于传统的强一致性算法和因果一致性算法有效的减少了无效写同步数量,大幅提高了系统吞吐量。
本申请还提供了一种具备动态优化复制策略的混合一致性系统,本系统包括写操作预测单元和同步执行单元:
写操作预测单元,用于根据键值存储系统中多个副本节点的历史读操作之间的写操作数量,采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量。
同步执行单元,用于构建多个副本节点之间具备强一致性和因果一致性的混合一致性模型,在混合一致性模型中,统计当前时刻至最近一次读操作之间的写操作数量,并根据统计的写操作数量与预测的写操作数量之间的比较结果,执行多个副本节点之间的同步操作。
需要注意的是,本实施例提供的具备动态优化复制策略的混合一致性系统与上述具备动态优化复制策略的混合一致性方法实施例是基于相同的发明构思,因此上述具备动态优化复制策略的混合一致性方法实施例的相关内容同样适用于具备动态优化复制策略的混合一致性系统实施例,此处不再细述。
如图7,本申请实施例还提供了一种电子设备,本电子设备包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
程序被存储在存储器中,处理器执行至少一个程序以实现本公开实施上述的具备动态优化复制策略的混合一致性方法。
该电子设备可以为包括手机、平板电脑、个人数字助理(Personal DigitalAssistant,PDA)、车载电脑等任意智能终端。
下面对本申请实施例的电子设备进行详细介绍。
处理器1600,可以采用通用的中央处理器(Central Processing Unit,CPU)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明实施例所提供的技术方案;
存储器1700,可以采用只读存储器(Read Only Memory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)等形式实现。存储器1700可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,的程序代码保存在存储器1700中,并由处理器1600来调用执行本发明实施例的具备动态优化复制策略的混合一致性方法。
输入/输出接口1800,用于实现信息输入及输出;
通信接口1900,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线2000,在设备的各个组件(例如处理器1600、存储器1700、输入/输出接口1800和通信接口1900)之间传输信息;
其中处理器1600、存储器1700、输入/输出接口1800和通信接口1900通过总线2000实现彼此之间在设备内部的通信连接。
本发明实施例还提供了一种存储介质,该存储介质是计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使计算机执行上述的具备动态优化复制策略的混合一致性方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明描述的实施例是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本发明实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上是对本申请实施例的较佳实施进行了具体说明,但本申请实施例并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请实施例精神的前提下还可作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请实施例权利要求所限定的范围内。
Claims (10)
1.一种具备动态优化复制策略的混合一致性方法,其特征在于,所述具备动态优化复制策略的混合一致性方法包括:
根据多个副本节点的历史读操作之间的写操作数量,采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量;
构建所述多个副本节点之间具备强一致性和因果一致性的混合一致性模型,在所述混合一致性模型中,统计当前时刻至最近一次读操作之间的写操作数量,并根据统计的写操作数量与预测的写操作数量之间的比较结果,执行所述多个副本节点之间的同步操作。
2.根据权利要求1所述的具备动态优化复制策略的混合一致性方法,其特征在于,所述机器学习预测模型为LSTM模型,所述LSTM模型包括:
ht=f(Wh·[ht-1,Xt]+bh)
yt=g(Wc·ht+bc)
其中,ht为LSTM的隐藏状态,Wh和Wc为权重矩阵,bh和bc为偏置向量,f和g为激活函数,Xt=[xt-1,xt-2,...,xt-T],T为时序窗口的大小,t=T,...,n,n为历史读操作之间的写操作数量,yt为预测的写操作数量。
3.根据权利要求1所述的具备动态优化复制策略的混合一致性方法,其特征在于,所述具备动态优化复制策略的混合一致性方法还包括:
根据每个副本节点的得分,对所述多个副本节点的同步优先级进行排序;其中得分通过如下方式计算:
其中,c为副本节点存储容量,φ为副本节点可用内存,为副本节点处理请求的时延,ξ为副本节点宕机概率,l1,l2,l3为系数。
4.根据权利要求1所述的具备动态优化复制策略的混合一致性方法,其特征在于,当同步操作为写同步操作时,执行所述多个副本节点之间的同步操作包括:
通过所述多个副本节点中的协调者接收第一键值对信息的目标写操作;
通过系统代理判断所述第一键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,由所述协调者和参与者执行所述目标写操作,当所述协调者和所述参与者执行完成所述目标写操作,由所述系统代理更新当前时刻至最近一次读操作之间的写操作数量;所述系统代理是指搭载有所述机器学习预测模型的副本节点,所述参与者是待执行所述目标写操作的副本节点;
通过系统代理判断所述第一键值对信息在当前时刻至最近一次读操作之间的写操作数量小于预测的写操作数量,由所述协调者执行所述目标写操作,当所述协调者执行完成所述目标写操作,由所述系统代理更新当前时刻至最近一次读操作之间的写操作数量。
5.根据权利要求4所述的具备动态优化复制策略的混合一致性方法,其特征在于,所述由所述协调者和参与者执行所述目标写操作,包括:
通过所述系统代理发送所述参与者的地址至所述协调者;
通过所述协调者向所述参与者发送包含所述目标写操作的Commit Request消息;
通过所述参与者向所述协调者反馈能执行所述目标写操作的消息;
通过所述协调者在本地副本执行所述目标写操作,并向所述参与者发送Commit消息;
通过所述参与者执行所述目标写操作并向所述协调者反馈执行所述目标写操作的成功消息;
通过所述协调者向所述系统代理反馈执行所述目标写操作的成功消息。
6.根据权利要求1或4或5所述的具备动态优化复制策略的混合一致性方法,其特征在于,当同步操作为读同步操作时,执行所述多个副本节点之间的同步操作包括:
通过系统代理判断第二键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,读取所述多个副本节点中的过半副本节点中的所述第二键值对信息,并由所述系统代理更新读操作次数并重新统计当前时刻至最近一次读操作之间的写操作次数;所述系统代理是指搭载有所述机器学习预测模型的副本节点;
通过系统代理判断所述第二键值对信息在当前时刻至最近一次读操作之间的写操作数量小于预测的写操作数量,等待所述多个副本节点中的优先级排序最后一个副本节点执行所述第二键值对信息的写操作之后,再读取所述多个副本节点中的过半副本节点中的所述第二键值对信息,并由所述系统代理更新读操作次数并重新统计当前时刻至最近一次读操作之间的写操作次数。
7.根据权利要求1所述的具备动态优化复制策略的混合一致性方法,其特征在于,每个副本节点保存一个向量时钟,一个向量时钟以map的方式记录对应的副本节点所执行的同步操作次数;当所述同步操作为写同步操作时,执行所述多个副本节点之间的同步操作包括:
通过第一副本节点执行第三键值对信息的写同步操作,并更新对应的向量时钟;
通过系统代理判断所述第三键值对信息在当前时刻至最近一次读操作之间的写操作数量大于预测的写操作数量,通过所述第一副本节点将本地的向量时钟和所述第三键值对信息的写同步操作组合成混合格数据结构,由所述第一副本节点将所述混合格数据结构发送至第二副本节点;
通过所述第二副本节点根据所述混合格数据结构中的向量时钟与预设的合并规则,判断执行写同步操作,并更新本地的向量时钟;
通过所述系统代理更新当前时刻至最近一次读操作之间的写操作数量。
8.根据权利要求1或7所述的具备动态优化复制策略的混合一致性方法,其特征在于,每个副本节点保存一个向量时钟,一个向量时钟以map的方式记录对应的副本节点所执行的同步操作次数;当所述同步操作为读同步操作时,执行所述多个副本节点之间的同步操作包括:
当读同步操作对应的第四键值对信息的写同步操作次数为0,执行所述第四键值对信息的读同步操作;当读同步操作对应的所述第四键值对信息的写同步操作次数为0,由系统代理通知待执行写同步操作的副本节点执行第四键值对信息的写同步操作,所述系统代理是指搭载有所述机器学习预测模型的副本节点。
9.根据权利要求8所述的具备动态优化复制策略的混合一致性方法,其特征在于,在执行所述多个副本节点之间的同步操作之前,所述具备动态优化复制策略的混合一致性方法还包括:
通过使最后一次执行写操作的副本节点执行同步操作,直至所有副本节点均执行同步操作完成。
10.一种具备动态优化复制策略的混合一致性系统,其特征在于,所述具备动态优化复制策略的混合一致性系统包括:
写操作预测单元,用于根据多个副本节点的历史读操作之间的写操作数量,采用机器学习预测模型预测最近一次读操作与下一次读操作之间的写操作数量;
同步执行单元,用于构建所述多个副本节点之间具备强一致性和因果一致性的混合一致性模型,在所述混合一致性模型中,统计当前时刻至最近一次读操作之间的写操作数量,并根据统计的写操作数量与预测的写操作数量之间的比较结果,执行所述多个副本节点之间的同步操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410080913.2A CN118012667A (zh) | 2024-01-19 | 2024-01-19 | 一种具备动态优化复制策略的混合一致性方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410080913.2A CN118012667A (zh) | 2024-01-19 | 2024-01-19 | 一种具备动态优化复制策略的混合一致性方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012667A true CN118012667A (zh) | 2024-05-10 |
Family
ID=90957598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410080913.2A Pending CN118012667A (zh) | 2024-01-19 | 2024-01-19 | 一种具备动态优化复制策略的混合一致性方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012667A (zh) |
-
2024
- 2024-01-19 CN CN202410080913.2A patent/CN118012667A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10970269B2 (en) | Intermediate consistency levels for database configuration | |
CN111104222B (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
US11556518B2 (en) | System and method for providing high availability data | |
US7707136B2 (en) | System and method for providing high availability data | |
US5418966A (en) | Updating replicated objects in a plurality of memory partitions | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
JP2009510566A (ja) | 代表的な情報を比較することによる効率的なデータベースの同期化 | |
CN113204435B (zh) | 数据处理方法以及系统 | |
CN110688382A (zh) | 数据存储查询方法、装置、计算机设备及存储介质 | |
CN109739684B (zh) | 基于向量时钟的分布式键值数据库的副本修复方法与装置 | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
CN115905687A (zh) | 基于元学习图神经网络面向冷启动的推荐系统及方法 | |
CN115599747A (zh) | 一种分布式存储系统的元数据同步方法、系统及设备 | |
CN102187329B (zh) | 通过基于知识的同步来忘记项 | |
CN110955719B (zh) | 一种数据存取处理设备、系统和方法 | |
US9311379B2 (en) | Utilization of data structures to synchronize copies of a resource | |
CN113946287A (zh) | 分布式存储系统及其数据处理方法、相关装置 | |
CN113297231A (zh) | 数据库处理方法及装置 | |
CN118012667A (zh) | 一种具备动态优化复制策略的混合一致性方法和系统 | |
CN113204520B (zh) | 一种基于分布式文件系统的遥感数据快速并发读写方法 | |
CN115292394A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115510161A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN115238006A (zh) | 检索数据同步方法、装置、设备及计算机存储介质 | |
CN112114757B (zh) | 对象存储系统中的存储方法及系统、计算设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Xu Zichen Inventor after: Lou Junsheng Inventor after: Dong Yucong Inventor before: Xu Zichen Inventor before: Lou Junsheng Inventor before: Dong Yucong |