CN108924240B - 基于一致性协议的分布式处理方法、装置及存储介质 - Google Patents
基于一致性协议的分布式处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108924240B CN108924240B CN201810798331.2A CN201810798331A CN108924240B CN 108924240 B CN108924240 B CN 108924240B CN 201810798331 A CN201810798331 A CN 201810798331A CN 108924240 B CN108924240 B CN 108924240B
- Authority
- CN
- China
- Prior art keywords
- proposal
- node
- leader
- proposal number
- previous
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1012—Load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明揭示了一种基于一致性协议的分布式处理方法,包括:发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。根据本发明实施例提供的方案,通过设计合理的提案准备和提案承诺阶段,使系统能够就领导者节点可安全执行快速写入的提案达成一致。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种基于一致性协议的分布式处理方法、装置、系统、计算机可读存储介质以及电子设备。
背景技术
分布式处理系统的设计思路在于,使系统内部的每个设备都执行同样的操作并且存储相同的信息,从而实现完全的冗余备份。即使系统中除了一个设备之外的所有设备都出现故障,也允许用户能够连续执行有效的操作。由Leslie Lamport于1990年提出的Paxos一致性协议,是实现分布式处理系统最为有效的基础理论之一。通过以Paxos协议定义的流程和算法在多个服务器之间传递数据,即使在任何通信消息可能丢失或者某个服务器故障的情况下,多个服务器的数据仍旧可以保持一致。
完整的Paxos协议流程通常包括两个阶段。第一个阶段被称为准备-承诺(Prepare-Promise)阶段,由收到数据操作请求的节点以提议者(Proposer)的身份,向其他节点广播发起准备(Prepare)请求,在收到多数节点的承诺(Promise)后才可进入下一阶段。第二个阶段被成为投票-选票(Ballot-Vote)阶段,由成功完成第一阶段的提议者广播发起针对本次操作的投票(Ballot),当多数节点按Paxos中定义的算法投出选票(Vote)后,第二阶段成功,意味着数据操作被系统接受,所有节点对本次数据操作已达成一致。
第一和第二阶段可视为两个串行的网络交互过程,完整的执行两个阶段能够保证所有的节点的每一次数据操作都是一致的,但其完成一次数据操作所消耗的时间和网络开销都比较大。针对这一问题,目前各种基于Paxos的理论和工程实践中出现了多种快速写入机制,尝试让符合条件的节点跳过第一阶段、直接进行第二阶段的数据写入操作,由此来提升分布式处理系统的效能。MegaStore和Spanner是其中的典型代表。
与基于租约(Lease)的一致性协议Raft类似,Spanner也采用了租约机制,系统中所有的数据写入请求,都转交给当前租期内具有领导者(Leader)身份的节点,由Leader发起快速写入操作。当Leader出现故障时,需要等待租约过期后,才能重新选举Leader以恢复数据写入,因此在Leader故障后有相当长一段时间(例如十几秒)内,整个系统都无法提供数据写入服务,这对于一些长期处于高并发访问的分布式处理系统(例如游戏服务器集群)而言是不可容忍的。
与Raft和Spanner不同,MegaStore没有采用租约机制,而是采用牺牲并发写入能力的方式来保证同一时间只有一个Leader进行快速写入操作。具体而言,在MegaStore中,每一次快速写入请求进行时,后续的所有快速写入请求都不能进行操作,必须等待当前快速写入成功后,确定新一次写入还是唯一一个节点在快速写,才能进行下一次快速数据写入。因此MegaStore虽然没有租约机制带来的上述问题,但是系统的性能和响应速度都受到严重的影响。
发明内容
为了解决相关技术中基于Paxos一致性协议的快速写入机制存在的上述问题,本发明提供了一种基于一致性协议的分布式处理方法、装置、计算机可读存储介质以及电子设备。
根据本发明的实施例,提供一种基于一致性协议的分布式处理方法,包括:发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。
根据本发明的实施例,提供一种基于一致性协议的分布式处理方法,包括:响应于接收到的提案准备请求,提取所述提案准备请求中的第一提案编号,所述提案准备请求用于表示,所述提案准备请求的发送节点请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示所述发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否向所述发送节点回复提案承诺。
根据本发明的实施例,提供一种基于一致性协议的分布式处理方法,包括:响应于接收到的包括快速写入标识的投票请求,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,所述第一提案编号表示所述投票请求的发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值。
根据本发明的实施例,提供一种基于一致性协议的分布式处理装置,包括:提案准备模块,用于发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及承诺处理模块,用于在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。
根据本发明的实施例,提供一种基于一致性协议的分布式处理装置,包括:提案处理模块,用于响应于接收到的提案准备请求,提取所述提案准备请求中的第一提案编号,所述提案准备请求用于表示,所述提案准备请求的发送节点请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示所述发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;提案承诺模块,用于将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否向所述发送节点回复提案承诺。
根据本发明的实施例,提供一种基于一致性协议的分布式处理装置,包括:投票处理模块,用于响应于接收到的包括快速写入标识的投票请求,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,所述第一提案编号表示所述投票请求的发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及比较写入模块,用于将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值。
根据本发明的实施例,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于一致性协议的分布式处理方法。
根据本发明的实施例,提供一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的基于一致性协议的分布式处理方法。
本发明的实施例提供的技术方案可以包括以下有益效果:
根据本发明实施例提供的基于一致性协议的分布式处理方案,通过设计合理的提案准备阶段,使系统能够就领导者节点可安全执行快速写入的节点提案达成一致,无需租约控制就能避免领导者节点的快速写入发生冲突,同时还保留了并发写入的能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1示出了可以应用本发明实施例基于一致性协议的分布式处理方法或装置的示例性系统架构的示意图。
图2示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
图3是根据一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。
图4是根据另一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。
图5是根据再一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。
图6是根据又一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。
图7是根据一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。
图8是根据另一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。
图9是根据再一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。
图10是根据又一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。
图11是根据还一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。
图12示例性示出本发明实施例基于一致性协议的分布式处理方法或装置的应用场景示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在详细阐述本发明的实施例的技术方案之前,以下介绍一些相关的技术方案、原理及术语。
Paxos
作为过去几十年中最重要的一致性算法之一,Paxos为分布式处理系统提供了极高的容错性和合理的开销。一个标准的Paxos流程需要多达五个步骤的通信,包括阶段1(准备和承诺),阶段2(投票和响应)以及操作。为便于清楚理解Paxos流程,有必要先了解Paxos中的以下常用术语。
提案值(Decree Value):指服务器节点之间需要同步的信息。在分布式系统中,提案值可能是数据值、命令或原始缓冲区等。
提案编号(Decree ID):也称提案ID,对于每个提案而言连续增加的数字编号。单个提案ID将通过一个独一无二的提案值。如果有多个提案值尝试通过相同的提案ID,最终只会选择一个值。
由于分布式处理系统的一致性,提案编号可视为在各系统节点之间是完全对齐的。例如可参见后续图12所示,对于节点N1-N3而言,同一个提案编号能够预期三个节点进行基于同一提案值的相同操作。
立法者(Legislator):又名牧师,是指可以为提案投票的服务器节点。
提议者(Proposer):如果一个节点扮演提议者的角色,当它接收到客户请求时,将启动一个Paxos实例并建议通过该实例。
投票号码(Ballot Number):在Paxos实例中,可能会有多个轮次,每轮都使用一个唯一的选票号码。
廉价回合(Cheap Round):一些回合可以跳过第一阶段,直接进入第二阶段开始“投票”,对应的投票号码为0,廉价是指更少的延迟和更少的通信步骤。
标准的Paxos流程包括以下五个步骤:
第一、准备(Prepare)步骤
提议者获取客户端请求来执行一些操作。为了确保所有副本都执行相同的工作,提议者节点将启动一个Paxos实例。为此,提议者选择一个新的提案编号d和新的投票号码b,它应该与本提案中的任何其他投票号码不同。
接续,提议者广播带有提案编号d和投票号码b的准备请求,例如可将准备请求描述为Prepare(d,b)。
第二、承诺(Promise)步骤
一旦当前节点收到Prepare请求,它将确定本地的最大投票号码bn,并检查提案d的本地状态。根据确定和检查的结果,后续处理可分为以下三种情况。
第1种情况,bn<b,在先前的投票中没有提案值被投票。当前节点将返回一个承诺消息,例如可描述为Promise(d,b,lastvote(-1,null))。同时,本地bn也会更新为b。
第2种情况,bn<b,并且当前节点在之前的投票bm中将选票投给了提案值Vm。这时的承诺消息例如可描述为:Promise(d,b,lastvote(bm,Vm))。同时,本地也会记录已承诺投票b。
第3种情况,bn≥b,当前节点不会进行任何动作,相当于丢弃了本次Prepare请求。
最后,节点对返回的承诺消息进行统计,当返回承诺消息的节点达到定额(quorum)时,表明本次准备成功。
第三、投票(Ballot)步骤
对于使用投票号码b成功进行准备的节点,它可以发送开始投票(Begin Ballot)请求来尝试通过一个提案。Paxos要求每一轮投票号码在当前提案中是唯一的。通常,投票号码可以基于节点ID来唯一地生成。例如,最大节点ID为3的分布式处理系统中:
节点1投票号码集:1,4,7......1+3*(t)
节点2投票号码集:2,5,8......2+3*(t)
节点3投票号码集:3,6,9......3+3*(t)
其中,t是提议者在一个Paxos实例中尝试准备的次数。
投票请求例如可描述为:Ballot(d,vote(b,V))。其中的提案值V按以下规则选择。如果多数节点处于上述第1种情况,则V可以取任意值;否则,V应当从承诺的定额节点中,选取投票号码bm最大的lastvote(bm,Vm)。
第四、选票(Vote)步骤
如果节点接收到投票消息,并且确定其中的投票号码b大于或等于最大的本次投票号码,则该节点可以接受投票请求,并用例如Voted(d,b)的选票消息进行响应。
与第二步骤中类似,一旦提议者基于投票号码b收集到定额的选票,则意味着该值最终被选择。
第五、操作(Commit)步骤
如果发现V已被选择,提议者可发送例如Commit(d,b)的操作消息来通知其他节点。
由上述描述可知,使用标准Paxos流程进行一次成功投票,会带来不小的时间和网络开销。为此,相关技术中基于Paxos扩展出快速写入机制,通过将所有客户端请求重定向到领导者(Leader),领导者稳定时,包括准备和承诺的阶段1只需要进行一次,后续都可直接进入阶段2发起投票,由此实现时间和网络开销的节省。然而,如果领导者出现故障,整个系统将无法使用,直到租约到期(通常为10秒),才能重新选出新领导者。
为解决上述问题,本发明实施例提供一种基于一致性协议的分布式处理方法和装置、计算机可读存储介质以及电子设备。以下对本发明实施例的技术方案的原理和实现细节进行详细阐述。
图1示出了可以应用本发明实施例基于一致性协议的分布式处理方法或装置的示例性系统架构的示意图。如图1所示,分布式处理系统10包括通过网络14互相连接的服务器11到13,三者基于本发明实施例提供的处理方法保持操作和数据的一致性。另外,图1还示出客户端设备20,其与分布式处理系统10通过网络15连接,与网络14类似,网络15也可以使用任何通信介质和协议,并且可以允许客户端设备20与一个或者多个分布式处理系统10中的服务器通信。
在一个实施例中,例如服务器11在收到客户端设备20的数据写入请求时,首先判断自身当前是否已具备快速写入的预设条件,包括是否已成为领导者节点,并且获得了预设数目节点的提案承诺;如果以上条件都符合则可直接发起快速写入操作的投票;如果不符合则基于原协议的完整流程发起写入操作。同时,如果服务器11尚未成为领导者节点,但基于自身的处理负荷(例如根据单位时间内访问量超过阈值)判断需要发起快速写入操作时,在上述完整流程中投票环节的提案内容中增加竞选领导者节点的信息,如果投票通过则成为领导者节点,便可基于本发明实施例的分布式处理方法进行快速写入操作前的提案准备和提案承诺。
接续,在通过竞选成为领导者节点后,在一个实施例中,服务器11发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。后续,从第二提案编号开始,服务器11在收到客户端请求时,便可直接发送投票请求,所述投票请求携带快速写入标识、所述第一提案编号、大于所述第二提案编号的第三提案编号、以及与所述第三提案编号对应的提案值,并用于表示请求所述其他节点在所述第三提案编号对应的提案处记录所述提案值。
在一个实施例中,例如服务器12收到领导者节点(这里例如是服务器11)发送的提案准备请求时,提取所述提案准备请求中的第一提案编号,将所述第一提案编号与本地存储的前次领导者提案编号进行比较,并基于比较结果确定是否向服务器11回复提案承诺。例如,在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述提案准备请求;以及在所述第一提案编号大于等于所述前次领导者提案编号时,向服务器11回复所述提案承诺,所述提案承诺携带所述第一提案编号,并用于表示承诺服务器11从基于所述提案承诺确定的第二提案编号开始使能快速写入操作。
在一个实施例中,例如服务器13收到领导者节点(这里例如是服务器11)发送的包括快速写入标识的投票请求时,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,并将所述第一提案编号与本地存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值。例如,在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述投票请求;以及在所述第一提案编号大于等于所述前次领导者提案编号时,向领导者节点回复选票,并在所述第二提案编号对应的提案处记录选票信息,所述选票携带所述第二提案编号以及所述快速写入标识,所述选票信息包括所述第一提案编号、所述提案值以及所述快速写入标识。
上述实施例中,服务器11被描述为提议者节点并成功选举为领导者节点,而服务器12和13被描述为立法者节点,但这仅为示例性的简洁描述。本领域技术人员应当理解,分布式处理系统10能够包括更多数目的服务器,而各服务器的节点身份可以随应用场景而切换。例如,在服务器12通过竞选成为领导者节点时,可发起提案准备请求,这时服务器11和13便可作为接收请求并确定是否作出承诺的立法者节点。这一思路应贯穿整个说明书。
本领域技术人员应当理解,本发明实施例可以应用于全部分布式计算环境中,而不能被图1的示例性分布式处理系统以任何方式进行限制。
图2示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有系统操作所需的各种程序和数据。CPU201、ROM 202以及RAM203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本发明的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3至图6所示的各个步骤。
图3是根据一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。如图3所示,该方法可以由分布式处理系统中的任意计算设备执行,可包括以下步骤310-320。
在步骤310中,发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作。
在步骤320中,在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。
与相关技术中通过租约机制来控制一个时间段仅有唯一领导者节点不同,本发明实施例的思路在于,通过引入合理的提案承诺(Decree Promise)机制,使得任何有需求的节点随时都可以申请通过选举成为领导者节点,进而通过发起提案准备、获取提案承诺来确定快速写入操作的时机。需要说明的是,这里的快速写入操作可理解为对应于上述Paxos的廉价回合(Cheap Round),换言之,使能快速写入操作是指领导者节点可跳过Paxos的阶段1,直接进行特定提案的投票、响应和操作步骤。
在一个实施例中,当前节点例如在发现来自客户端的单位时间请求量超出预设阈值时,通过竞选成为领导者节点,进而触发提案准备请求的发送,并尝试获得多数派节点的承诺获取能够开始快速写入操作的提案编号。这里的多数派节点例如指超过半数的节点。
在一个实施例中,提案准备请求和提案承诺的格式可参考传统Paxos理论中准备承诺阶段的消息来设置。
普通的Paxos准备请求和承诺消息格式例如分别为:
Prepare(d,b)
Promise(d,b,lastvote(bm,Vm))
立法者节点承诺不会接受小于b的投票号码,并使用lastvote(前次选票)信息做出响应,表示其在前一轮中基于投票号码bm投给了Vm。一旦提议者节点从大多数立法者节点收集到承诺,则表示以下条件得到满足:
H1.后续任何投票号码小于b(bn<b)的准备或投票都将被多数节点拒绝;
H2.后续任何投票号码小于b(bn<b)的准备或投票不会成功;
H3.在承诺的多数派中具有最大投票号码bm(bm<b)的lastvote以及对应的值Vm可能已被选中。
参照上述请求和承诺消息,在一个实施例中,步骤310的提案准备请求和步骤320的承诺消息可分别设计为:
Decree Prepare(-1,ld)
Decree Promise(-1,ld,lastvote(ldm,dm))
其中,-1可视为提案准备请求的标识,以使提案准备请求区别于普通的准备请求;ld表示提议者节点请求成为领导者节点的提案编号,以下也称为领导者提案编号;ldm和dm分别表示立法者节点在前次选票中选举的领导者提案编号和对应的提案编号。
这里用提案编号来额外表示领导者节点的可行性在于,每个提案编号都是唯一的,因此每次选举产生出一个领导者时,都可用对应的提案编号来标识该领导者节点。例如,提议者节点1在提案128处赢得选举成为领导者,提议者节点2在提案1672处赢得选举成为领导者。从全局来看,很容易得知节点1在提案129-1672中获得领导者节点的身份,而节点2从1673获得领导者节点的身份,直至基于更大的提案编号选举出新的领导者节点。
因此,Decree Prepare(-1,ld)可用来表示提议者节点请求其他节点承诺:不再接受领导者提案编号小于ld的领导者节点发起的快速写入操作。
对应地,Decree Promise(-1,ld,lastvote(ldm,dm))可用来表示立法者节点承诺其不再接受任何领导者提案编号小于ld的领导者节点发起的廉价回合,即,既不接受后者的提案准备请求,也不接受后者的投票请求。
这样一来,提议者节点在收到预设数目节点的提案承诺时,可从基于提案承诺确定的最大领导者提案编号ldm对应的最大提案编号dm开始使能快速写入操作。这里的从dm开始并不包括dm自身,换言之,其表示自提案dm+1中才能发起快速写入操作的投票。在一个实施例中,这里的预设数目例如可以是整个系统中所有节点的过半数。
在一个实施例中,立法者节点将前次选票信息携带在提案承诺中一起返回给提议者节点,其中包括前次领导者提案编号以及对应的前次提案编号,用于表示该立法者节点已经投票给:由前次领导者提案编号对应的节点在前次提案编号对应的提案处执行快速写入操作。需要说明的是,这里返回前次选票信息的立法者节点,虽然已经给旧领导者节点发起的快速写入请求投了票,但是该快速写入有可能并没有投票成功,只有多数派都在快速写投票轮投票才算成功,投票成功以后才有可能执行相应的快速写入操作。
立法者节点通过在返回提案承诺中携带前次选票信息,使得之前已经投票的提案编号仍有可能被本次投票请求选中。例如,在一个实施例中,基于立法者节点返回的提案承诺,提议者节点从其中找到前次领导者提案编号的最大值ldm,并从最大值ldm对应的前次提案编号dm开始发起快速写入操作的投票。
综上所述,一旦提议者节点从大多数立法者节点收集到提案承诺,则表示以下条件得到满足:
DH1.后续任何领导者提案编号小于ld(ldn<ld)的廉价回合都将被多数节点拒绝;
DH2.后续任何领导者提案编号小于ld(ldn<ld)的廉价回合不会成功;
DH3.在之前的廉价回合中,具有最大领导者提案ldm(ldm<ld)的lastvote以及对应的提案dm可能已被选中。
对于传统Paxos中发起准备请求的提议者,在进行成功的准备-承诺阶段之后,即可安全地(系统已达成一致)开始投票阶段。
类似地,对于本发明实施例发起提案准备请求的领导者节点,在进行成功的提案准备-提案承诺之后,从提案dm开始即可安全地开始廉价回合。在一个实施例中,这里的从dm开始并不包括dm自身,换言之,其表示自提案(dm+1中才可安全地开始廉价回合,也即,发起快速写入操作的投票。
根据本发明实施例提供的基于一致性协议的分布式处理方案,通过设计合理的提案准备阶段,使系统能够就领导者节点可安全执行快速写入的节点提案达成一致,无需租约控制就能避免领导者节点的快速写入发生冲突,同时还保留了并发写入的能力。
图4是根据另一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。如图4所示,该方法可以由分布式处理系统中的任意计算设备执行,可包括以下步骤410-460。
在步骤410中,响应于接收的数据操作请求,确定当前节点是否满足快速写入的预设条件,若是则转步骤460,否则转步骤420。
在一个实施例中,当前节点在收到来自客户端的数据操作请求时,首先可判断自身是否已经满足快速写操作的条件,包括:当前节点已成为领导者节点并已通过提案准备阶段收到预设数目节点发送的提案承诺。
如果确定已满足上述条件,当前节点即可转步骤460开始快速写操作的投票阶段;否则转步骤420按照完整的一致性协议流程来处理本次数据操作请求。
在步骤420中,按照一致性协议的预设步骤写入数据操作请求;同时,非领导者节点判断当前节点的处理负荷是否达到预设阈值,若是则转步骤430,否则结束流程处理后续的数据操作请求。
在一个实施例中,这里的一致性协议是指上文描述的Paxos协议,预设步骤即包括上文描述的准备、承诺、投票、选票和操作五个步骤的完整流程。
另一方面,基于步骤410的判断结果,当前节点已得知自身是否已成为领导者节点,如果是,由于尚未满足快速写操作的条件,表明当前节点在尝试通过提案准备获取能够进行快速写操作的提案编号,或者处于该提案编号前的过渡期,因此仍需等待能够进行快速写操作的提案编号。
如果当前节点基于步骤410的判断结果得知自身并非领导者节点,则可判断自身的处理负荷是否达到预设阈值,例如是否在单位时间内收到了大量的数据操作请求,使得自身可以认为成为系统中负荷最大的节点。如果负荷未达到预设阈值,则当前节点可基于标准流程完成本次数据操作请求的写入,并继续处理其他数据操作请求。
另一方面,对于非领导者节点,如果处理负荷已达到预设阈值,则可转步骤430,尝试基于上述标准流程同时竞选成为领导者节点。
在步骤430中,基于上述预设步骤尝试通过竞选成为领导者节点。
在一个实施例中,当前节点可通过在标准流程中投票步骤的提案内容写入竞选信息尝试成为领导者节点。
标准的Paxos流程中,投票和选票消息格式例如分别为:
Ballot(d,vote(b,V))
Voted(d,b)
其中,d,b分别为在成功经过准备承诺阶段的提案编号和投票号码,V则是基于预设规则确定出的提案内容,具体可参见上文标准Paxos流程中介绍的投票步骤。一旦提议者基于投票号码b收集到多数派的选票,则意味着该提案值V最终被选择。
因此,在一个实施例中,当前节点在投票Ballot的提案内容V中,除了写入上述数据操作请求的待写入数据之外,还可附加竞选信息,例如“I’m the Leader”(我是领导者节点)。这样,一旦当前节点收集到多数派的选票,意味着该提案值V最终被选择,从而在完成数据操作请求的写入同时,成为新的领导者节点。同时,被选择的提案值V所对应的提案编号b便可作为当前节点的领导者提案编号。
另外,按照Paxos协议的规定,在提案内容中加入提案编号以外的任意内容还需满足以下条件,即,在准备-承诺阶段收到的承诺消息中,多数派节点都返回了Promise(d,b,lastvote(-1,null))。换言之,只有确定系统中多数派节点在先前的投票中没有选择其他提案内容的情况下,当前节点才能在投票Ballot的提案内容V中附加竞选信息。
如果当前节点基于以上投票成功竞选为领导者节点,则可继续下面的流程进入提案准备-提案承诺节点,否则可结束本次流程处理其他的数据操作请求。
在步骤440中,发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作。
在步骤450中,在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。
上述步骤440-450可参见图3实施例步骤310-320的描述,此处不再赘述。
在步骤460中,发送投票请求,所述投票请求携带快速写入标识、所述第一提案编号、大于所述第二提案编号的第三提案编号、以及与所述第三提案编号对应的提案值,并用于表示请求所述其他节点在所述第三提案编号对应的提案处记录所述提案值。
在步骤470中,接收从所述其他节点返回的选票,所述选票携带所述快速写入标识以及所述第三提案编号。
提议者节点基于步骤450的判断,可确定从第二提案编号(例如上述实施例中确定的dm)开始,可安全地开始廉价回合,即开始发起投票请求尝试进行快速写入操作。
在一个实施例中,投票请求中携带快速写入标识,从而使立法者节点能够将其与普通Paxos流程的投票相区分。
在一个实施例中,投票请求中携带第一提案编号,用来标识领导者节点的身份,从而使立法者节点能够将其与本地存储的领导者提案编号(基于之前的提案承诺或选票中存储)进行比较,以确定是否发出选票同意本次投票请求。
在一个实施例中,投票请求中还携带第三提案编号及对应的提案值,用来表示当前领导者节点请求投票,尝试对于在第三提案编号处写入该提案值达成一致。由上述领导者提案编号的性质可知,这里的第三提案编号大于第二提案编号。
作为投票请求的响应,立法者节点在将投票请求携带的领导者提案编号(即这里的第一提案编号)与本地存储的领导者提案编号进行比较后,确定是否发出选票同意本次投票请求。
在一个实施例中,基于接收的投票请求,上述其他节点可基于第一提案编号与其本地存储的前次领导者提案编号进行比较,如果满足预设条件(例如第一提案编号大于等于前次领导者提案编号),则可发出选票,并在第三提案编号对应的提案处记录选票信息,选票信息中可包括第一提案编号、上述提案值以及快速写入标识。相应的,上述其他节点后续接收到新领导者节点发出的提案准备请求时,便可返回这里记录的选票信息(可参见图3实施例步骤310-320的描述)。
在一个实施例中,上述投票请求和选票的格式可参考传统Paxos理论中投票选票阶段的消息来设置。
步骤430中已述及,普通的Paxos投票和选票消息格式例如分别为:
Ballot(d,vote(b,V))
Voted(d,b)
参照上述投票和选票消息,在一个实施例中,步骤460的投票请求和步骤470的选票消息可分别设计为:
Ballot(d,vote(0,V,ld))
Voted(d,0)
其中,0为快速写入标识,ld为成功进行提案请求和提案承诺阶段的领导者提案编号,d和V分别为本次投票请求尝试发起快速写入的提案编号和提案值。
由于经过提案请求和提案承诺阶段,立法者节点已经承诺不再响应领导者提案编号小于ld的廉价回合。所以,此处如果立法者节点在收到当前领导者节点发起的投票请求之前,又对领导者提案编号大于ld的其他提议者节点作出承诺,那么该立法者节点将拒绝本次投票请求所对应的快速写入操作,也即,不会使V被选中。
换言之,由于领导者在发出廉价回合的投票之前,已经通过提案承诺确定所有老的(领导者提案编号较小)领导者发起的廉价回合不会成功(参见上文条件DH1-3)。因此,即使有前、后两个领导者节点(经承诺被节点自己认为是领导者节点)发起廉价回合的投票,基于本发明实施例设计的提案准备-承诺机制,也能够保证只有领导者提案编号最大的投票请求才会成功,也即,其中的提案值V才能被选中。下面对上述机制进行简单的数学证明。
假设领导者节点x(对应提案编号ldx)在d号提案发起快速写操作opx,发起的投票请求例如为:
Ballot x(d,vote(0,opx,ldx))
领导者节点y(对应提案编号ldy)在d号提案发起快速写操作opy,发起的投票请求例如为:
Ballot y(d,vote(0,opy,ldy))
待证明:
如果x>y,则opy一定未被选中。
证明过程(反证法):
假设opy在提案d中被选中,那么必然存在多数派Qy接受了Ballot y;
由于x>y,而领导者节点ldx是在提案承诺成功后,才发起快速写操作;
因此,必然存在多数派Qx,在提案承诺时刻承诺不再接受ld<ldx的任何快速写。也即,存在多数派Qx未接受Ballot y。
由分布式系统中多数派的定义可知,Qx与Qy的交集必然不为空。
由此得出结论,Qx与Qy的交集至少包括一个节点,既接受了Ballot y,又未接受Ballot y,因此存在矛盾。
opy在提案d中被选中的假设不成立。因此,Ballot y必然未被通过,系统可以就Ballot x达成一致。
从上述证明可以看出,即使有多个提议者节点经过提案准备和提案承诺阶段相信自己成为领导者节点,随后发起的多个快速写入投票请求也不会导致系统出现不一致的操作。
在一个实施例中,步骤470之后还包括,当确定从预设数目节点(例如多数派节点)接收到选票时,在所述第三提案编号进行快速写入所述提案值的操作。
根据本发明实施例提供的基于一致性协议的分布式处理方案,通过设计合理的提案准备阶段,使系统能够就领导者节点可安全执行快速写入的节点提案达成一致,无需租约控制就能避免领导者节点的快速写入发生冲突,同时还保留了并发写入的能力。
图5是根据再一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。如图5所示,该方法可以由分布式处理系统中的任意计算设备执行,可包括以下步骤510-520。
在步骤510中,响应于接收到的提案准备请求,提取所述提案准备请求中的第一提案编号,所述提案准备请求用于表示,所述提案准备请求的发送节点请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作。
在步骤520中,将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否向所述发送节点回复提案承诺。
本实施例是从分布式处理系统中立法者节点的角度来描述提案准备和提案承诺阶段。
在一个实施例中,立法者节点可根据请求中的提案准备请求标识与普通Paxos的准备请求相区分。
立法者节点在识别出已接收到提议者节点发送的提案准备请求时,从中提取出提议者节点请求予以承诺的第一提案编号,将其与本地存储的前次领导者提案编号进行比较,进而确定是否向所述发送节点回复提案承诺。这里的前次领导者提案编号可以来自立法者节点之前接收的提案准备请求或投票请求。例如,立法者节点本地存储的前次领导者提案编号初始值可以为零,后续每次收到领导者提案编号大于本地存储值的提前准备请求或者投票请求时,便使用较大的值对本地存储的前次领导者提案编号进行更新。
接续,在一个实施例中,当所述第一提案编号小于所述前次领导者提案编号时,立法者节点丢弃所述提案准备请求;反之,当所述第一提案编号大于等于所述前次领导者提案编号时,立法者节点向提议者节点回复所述提案承诺,所述提案承诺携带所述第一提案编号,并用于表示承诺所述发送节点从基于所述提案承诺确定的第二提案编号开始使能快速写入操作。换言之,立法者节点的提案承诺表示,后续对于任何领导者提案编号小于第一提案编号的廉价回合都不接受。
接续,在一个实施例中,提案承诺还携带前次选票信息,其包括前次领导者提案编号以及前次提案编号,以用于表示当前立法者节点已经投票给:由前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。需要说明的是,这里返回前次选票信息的立法者节点,虽然已经给旧领导者节点发起的快速写入请求投了票,但是该快速写入有可能并没有投票成功,只有多数派都在快速写投票轮投票才算成功,投票成功以后才有可能执行相应的快速写入操作。通过携带前次选票信息,使得之前已经投票的提案编号仍有可能被本次投票请求选中。
可结合参考图3的实施例所述,此处步骤510所述的提案准备请求和步骤520所述提案承诺消息,可参考普通Paxos流程中的准备和承诺消息,分别设计为如下所示:
Decree Prepare(-1,ld)
Decree Promise(-1,ld,lastvote(ldm,dm))
其中,-1可视为提案准备请求的标识,以使提案准备请求区别于普通的准备请求;ld表示提议者节点通过竞选成为领导者节点的提案编号,也称为领导者提案编号;ldm和dm分别表示立法者节点在前次选票中选举的领导者提案编号和对应的提案编号。
这里,Decree Prepare(-1,ld)可用来表示提议者节点请求其他节点承诺:不再接受领导者提案编号小于ld的领导者节点发起的快速写入操作。
对应地,Decree Promise(-1,ld,lastvote(ldm,dm))可用来表示立法者节点承诺其不再接受任何领导者提案编号小于ld的领导者节点发起的廉价回合,即,既不接受后者的提案准备请求,也不接受后者的投票请求。
这样一来,提议者节点在收到预设数目节点的提案承诺时,可从基于提案承诺确定的最大领导者提案编号ldm对应的最大提案编号dm开始使能快速写入操作。这里的从dm开始并不包括dm自身,换言之,其表示自提案dm+1中才能发起快速写入操作的投票。在一个实施例中,这里的预设数目例如可以是整个系统中所有节点的过半数。
另外,这里立法者节点将前次选票信息lastvote携带在提案承诺中一起返回给提议者节点,用于表示该立法者节点已经投票给:由前次领导者提案编号对应的节点在前次提案编号对应的提案处执行快速写入操作。基于立法者节点返回的提案承诺,提议者节点从其中找到前次领导者提案编号的最大值ldm,并从最大值ldm对应的前次提案编号dm开始使能快速写入操作。
对于传统Paxos中发起准备请求的提议者,在进行成功的准备-承诺阶段之后,即可安全地(系统已达成一致)开始投票阶段。
类似地,对于本发明实施例发起提案准备请求的提议者,在进行成功的提案准备-提案承诺之后,从提案dm开始即可安全地开始廉价回合。在一个实施例中,这里的从dm开始并不包括dm自身,换言之,其表示自提案dm+1中才可安全地开始廉价回合,也即,使能快速写入操作。
根据本发明实施例提供的基于一致性协议的分布式处理方案,通过设计合理的提案准备阶段,使系统能够就领导者节点可安全执行快速写入的节点提案达成一致,无需租约控制就能避免领导者节点的快速写入发生冲突,同时还保留了并发写入的能力。
图6是根据又一示例性实施例示出的一种基于一致性协议的分布式处理方法的流程图。如图6所示,该方法可以由分布式处理系统中的任意计算设备执行,可包括以下步骤610-620。
在步骤610中,响应于接收到的包括快速写入标识的投票请求,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,所述第一提案编号表示所述投票请求的发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号。
在步骤620中,将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值。
本实施例是从分布式处理系统中立法者节点的角度来描述廉价回合阶段,包括投票请求和选票回复。
在一个实施例中,立法者节点可根据请求中的快速写入标识与普通Paxos的投票请求相区分。
在一个实施例中,投票请求中携带第一提案编号,用来标识领导者节点的身份,从而使立法者节点能够将其与本地存储的领导者提案编号(基于之前的提案承诺或选票中存储)进行比较,以确定是否发出选票同意本次投票请求。
在一个实施例中,投票请求中还携带第二提案编号及对应的提案值,用来表示当前领导者节点请求投票,尝试对于在第二提案编号处写入该提案值达成一致。由上述领导者提案编号的性质可知,这里的第二提案编号大于第一提案编号。
接续,在一个实施例中,当所述第一提案编号小于所述前次领导者提案编号时,丢弃所述投票请求。反之,当所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复选票,并执行在所述第二提案编号对应的提案处记录选票信息,所述选票携带所述第二提案编号以及所述快速写入标识,所述选票信息包括所述第一提案编号、所述提案值以及所述快速写入标识。
作为投票请求的响应,立法者节点在将投票请求携带的领导者提案编号(即这里的第一提案编号)与本地存储的领导者提案编号进行比较后,确定是否发出选票同意本次投票请求。
在一个实施例中,步骤610所述的投票请求和步骤620所述的选票消息,可参考传统Paxos理论中投票选票阶段的消息来设置,例如可分别设置为:
Ballot(d,vote(0,V,ld))
Voted(d,0)
其中,0为快速写入标识,ld为成功进行提案请求和提案承诺阶段的领导者提案编号,d和V分别为本次投票请求尝试发起快速写入的提案编号和提案值。
由于经过提案请求和提案承诺阶段,立法者节点已经承诺不再响应领导者提案编号小于ld的廉价回合。所以,此处如果立法者节点在收到当前领导者节点发起的投票请求之前,又对领导者提案编号大于ld的其他提议者节点作出承诺,那么该立法者节点将拒绝本次投票请求所对应的快速写入操作,也即,不会使V被选中。
换言之,由于领导者在发出廉价回合的投票之前,已经通过提案承诺确定所有老的(领导者提案编号较小)领导者发起的廉价回合不会成功(参见上文条件DH1-3)。因此,即使有前、后两个领导者节点(经承诺被节点自己认为是领导者节点)发起廉价回合的投票,基于本发明实施例设计的提案准备-承诺机制,也能够保证只有领导者提案编号最大的投票请求才会成功,也即,其中的提案值V才能被选中。
结合参考上文图4实施例中的数学证明可以看出,即使有多个提议者节点经过提案准备和提案承诺阶段相信自己成为领导者节点,随后发起的多个快速写入投票请求也不会导致系统出现不一致的操作。
根据本发明实施例提供的基于一致性协议的分布式处理方案,通过设计合理的提案准备阶段,使系统能够就领导者节点可安全执行快速写入的节点提案达成一致,无需租约控制就能避免领导者节点的快速写入发生冲突,同时还保留了并发写入的能力。
下述为本发明装置实施例,可以用于执行本发明上述基于一致性协议的分布式处理方法的实施例。对于本发明装置实施例中未披露的细节,请参照本发明基于一致性协议的分布式处理方法的实施例。
图7是根据一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。如图7所示,该装置可以由分布式处理系统中的任意计算设备来实现,可包括提案准备模块710和承诺处理模块720。
在一个实施例中,提案准备模块710用于发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号。
在一个实施例中,承诺处理模块720用于在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号。
接续,在一个实施例中,承诺处理模块720接收的提案承诺中携带所述第一提案编号以及前次选票信息,所述前次选票信息包括前次领导者提案编号以及前次提案编号,并用于表示发送该提案承诺的节点已经投票给:由所述前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。
相应的,承诺处理模块720可从所述预设数目节点发送的提案承诺中找到所述前次领导者提案编号的最大值,并从所述最大值对应的前次提案编号开始使能所述快速写入操作。
图8是根据另一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。如图8所示,该装置在图7所示实施例的基础上,还包括投票请求模块730和选票接收模块740。
在一个实施例中,投票请求模块730用于发送投票请求,所述投票请求携带快速写入标识、所述第一提案编号、大于所述第二提案编号的第三提案编号、以及与所述第三提案编号对应的提案值,并用于表示请求所述其他节点在所述第三提案编号对应的提案处记录所述提案值。在一个实施例中,这里的快速写入标识例如可以为0。
在一个实施例中,选票接收模块740用于接收从所述其他节点返回的选票,所述选票携带所述快速写入标识以及所述第三提案编号。
图9是根据再一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。如图9所示,该装置在图8所示实施例的基础上,还包括判断模块750和标准处理模块760。
在一个实施例中,判断模块750用于响应于接收的数据操作请求,确定所述当前节点是否满足预设条件,所述预设条件包括已成为领导者节点并收到所述预设数目节点发送的提案承诺。
在确定所述当前节点满足所述预设条件时,通知投票请求模块730进行发送投票请求的处理。
在确定所述当前节点不满足所述预设条件时,所述标准处理模块760用于按照所述一致性协议的预设步骤写入所述数据操作请求。
在确定所述当前节点非领导者节点时,所述标准处理模块760用于基于所述当前节点的处理负荷确定是否通过竞选成为所述领导者节点。
在一个实施例中,在确定通过竞选成为所述领导者节点时,所述标准处理模块760用于在预设步骤包括的投票请求的提案值中写入竞选信息。
图10是根据又一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。如图10所示,该装置可以由分布式处理系统中的任意计算设备来实现,可包括提案处理模块910和提案承诺模块920。
在一个实施例中,提案处理模块910用于响应于接收到的提案准备请求,提取所述提案准备请求中的第一提案编号,所述提案准备请求用于表示,所述提案准备请求的发送节点请求其他节点承诺:所述发送节点不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示所述发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号。
在一个实施例中,提案承诺模块920用于将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否向所述发送节点回复提案承诺。
接续,在一个实施例中,提案承诺模块920在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述提案准备请求;以及在所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复所述提案承诺,所述提案承诺携带所述第一提案编号,并用于表示承诺所述发送节点从基于所述提案承诺确定的第二提案编号开始使能快速写入操作。
在一个实施例中,提案承诺模块920发送的提案承诺还携带前次选票信息,所述前次选票信息包括前次领导者提案编号以及前次提案编号,并用于表示所述当前节点已经投票给:由所述前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。
图11是根据还一示例性实施例示出的一种基于一致性协议的分布式处理装置的示意框图。如图11所示,该装置可以由分布式处理系统中的任意计算设备来实现,可包括投票处理模块930和比较写入模块940。
在一个实施例中,投票处理模块930用于响应于接收到的包括快速写入标识的投票请求,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,所述第一提案编号表示所述投票请求的发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号。在一个实施例中,这里的快速写入标识例如可以为0。
在一个实施例中,比较写入模块940用于将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值。
接续,在一个实施例中,比较写入模块940在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述投票请求;以及在所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复选票,并执行在所述第二提案编号对应的提案处记录选票信息,所述选票携带所述第二提案编号以及所述快速写入标识,所述选票信息包括所述第一提案编号、所述提案值以及所述快速写入标识。
根据本发明实施例提供的基于一致性协议的分布式处理装置方案,通过设计合理的提案准备和提案承诺阶段,使系统能够就领导者节点可安全执行快速写入的提案达成一致,无需租约控制就能避免领导者节点的快速写入发生冲突,同时还保留了并发写入的能力。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。
图12示例性示出本发明实施例基于一致性协议的分布式处理方法或装置的应用场景示意图。
如图12所示,分布式处理系统包括三个节点N1-N3。从第10步操作开始,N1成为领导者节点,开始持续的并发快速写入操作,领导者提案编号可记为ld=10。
在第185步操作时,N3检测到客户端请求数量超出预设阈值,于是基于完整Paxos协议通过竞选成为新的领导者节点,竞选成功则可用185作为N3的领导者提案编号。接续,N3通过广播发送提案准备请求Decree Prepare(-1,185),尝试获得多数派(图12中为2个)的承诺。
接续,通过与本地的前次领导者提案编号(10)比较,N2发出提案承诺消息DecreePromise(-1,185,lastvote(10,200)),表示承诺从第200步操作之后,拒绝接受前一领导节点(ld=10)的快速写入操作。
至此,表示N2和N3(多数派)就能够安全执行快速写入操作的提案编号(200)达成了一致。N3从第201步操作开始,可以持续的并发快速写入操作,直至选举通过下一个领导者节点。
在第186-200步操作期间,N3仍然通过标准的Paxos流程进行操作。
从图12中可以看出,N1的快速写入操作(黑色部分)在N3节点仅持续至185后一段时间,可以理解为N3在185步竞选领导者节点后持续一段时间才得到成功的确认,此时本地存储的领导者提案编号已经大于10,因此不再接收N1发出的快速写入操作。另外,N3的快速写入操作(阴影部分)在N1节点从第200步后仍然等待了一段时间才开始,可以理解为N1此前接收N3的提案准备请求出现延迟。
从图12示意的场景可以看出,基于本发明实施例的提案准备和承诺机制,可以实现领导者节点的无缝切换,避免造成因等待租约过期带来的时间浪费,整个过程中系统始终保持服务,并且保留了并发写入的能力。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (26)
1.一种基于一致性协议的分布式处理方法,其特征在于,所述方法包括:
发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;所述快速写入操作是指所述领导者节点跳过一致性算法的准备和承诺步骤,直接进行提案的投票、响应和操作步骤;
以及在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号,所述第二提案编号大于所述第一提案编号。
2.如权利要求1所述的方法,其特征在于,所述提案承诺携带所述第一提案编号以及前次选票信息,所述前次选票信息包括前次领导者提案编号以及前次提案编号,并用于表示发送该提案承诺的节点已经投票给:由所述前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。
3.如权利要求2所述的方法,其特征在于,所述的从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,包括:
从所述预设数目节点发送的提案承诺中找到所述前次领导者提案编号的最大值;以及从所述最大值对应的前次提案编号开始使能所述快速写入操作。
4.如权利要求1所述的方法,其特征在于,所述的从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作之后,所述方法还包括:
发送投票请求,所述投票请求携带快速写入标识、所述第一提案编号、大于所述第二提案编号的第三提案编号、以及与所述第三提案编号对应的提案值,并用于表示请求所述其他节点在所述第三提案编号对应的提案处记录所述提案值。
5.如权利要求4所述的方法,其特征在于,所述的发送投票请求之后,所述方法还包括:
接收从所述其他节点返回的选票,所述选票携带所述快速写入标识以及所述第三提案编号。
6.如权利要求1-5任一项所述的方法,其特征在于,在所述的发送提案准备请求之前,所述方法还包括:
响应于接收的数据操作请求,确定所述当前节点是否满足预设条件,所述预设条件包括已成为领导者节点并收到所述预设数目节点发送的提案承诺;
在确定所述当前节点不满足所述预设条件时,按照所述一致性协议的预设步骤写入所述数据操作请求;以及
在确定所述当前节点非领导者节点时,基于所述当前节点的处理负荷确定是否通过竞选成为所述领导者节点。
7.如权利要求6所述的方法,其特征在于,所述预设步骤包括发送第一投票请求,所述方法还包括:
在确定通过竞选成为所述领导者节点时,在所述第一投票请求的提案值中写入竞选信息。
8.一种基于一致性协议的分布式处理方法,其特征在于,所述方法包括:
响应于接收到的提案准备请求,提取所述提案准备请求中的第一提案编号,所述提案准备请求用于表示,所述提案准备请求的发送节点请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示所述发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;所述快速写入操作是指所述领导者节点跳过一致性算法准备和承诺步骤,直接进行提案的投票、响应和操作步骤;
将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否向所述发送节点回复提案承诺,所述提案承诺携带所述第一提案编号,并用于表示承诺所述发送节点从基于所述提案承诺确定的第二提案编号开始使能快速写入操作,所述第二提案编号大于所述第一提案编号。
9.如权利要求8所述的方法,其特征在于,所述的基于比较结果确定是否向所述发送节点回复提案承诺,包括:
在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述提案准备请求;以及
在所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复所述提案承诺。
10.如权利要求9所述的方法,其特征在于,所述提案承诺还携带前次选票信息,所述前次选票信息包括前次领导者提案编号以及前次提案编号,并用于表示所述当前节点已经投票给:由所述前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。
11.一种基于一致性协议的分布式处理方法,其特征在于,所述方法包括:
响应于接收到的包括快速写入标识的投票请求,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,所述第一提案编号表示所述投票请求的发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及
将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值,所述第二提案编号大于所述第一提案编号。
12.如权利要求11所述的方法,其特征在于,所述的基于比较结果确定是否在所述第二提案编号对应的提案写入所述提案值,包括:
在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述投票请求;以及
在所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复选票,并执行在所述第二提案编号对应的提案处记录选票信息,所述选票携带所述第二提案编号以及所述快速写入标识,所述选票信息包括所述第一提案编号、所述提案值以及所述快速写入标识。
13.一种基于一致性协议的分布式处理装置,其特征在于,所述装置包括:
提案准备模块,用于发送提案准备请求,所述提案准备请求携带第一提案编号,并用于表示请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示当前节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;所述快速写入操作是指所述领导者节点跳过一致性算法的准备和承诺步骤,直接进行提案的投票、响应和操作步骤;
以及承诺处理模块,用于在确定从所述其他节点中的预设数目节点接收到提案承诺时,从基于所述提案承诺确定的第二提案编号开始使能所述快速写入操作,所述提案承诺携带所述第一提案编号,所述第二提案编号大于所述第一提案编号。
14.如权利要求13所述的装置,其特征在于,所述承诺处理模块接收的提案承诺中携带所述第一提案编号以及前次选票信息,所述前次选票信息包括前次领导者提案编号以及前次提案编号,并用于表示发送该提案承诺的节点已经投票给:由所述前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。
15.如权利要求14所述的装置,其特征在于,所述承诺处理模块可从所述预设数目节点发送的提案承诺中找到所述前次领导者提案编号的最大值,并从所述最大值对应的前次提案编号开始使能所述快速写入操作。
16.如权利要求13所述的装置,其特征在于,还包括投票请求模块,投票请求模块用于发送投票请求,所述投票请求携带快速写入标识、所述第一提案编号、大于所述第二提案编号的第三提案编号、以及与所述第三提案编号对应的提案值,并用于表示请求所述其他节点在所述第三提案编号对应的提案处记录所述提案值。
17.如权利要求16所述的装置,其特征在于,还包括选票接收模块,选票接收模块用于接收从所述其他节点返回的选票,所述选票携带所述快速写入标识以及所述第三提案编号。
18.如权利要求13-17任一项所述的装置,其特征在于,还包括判断模块和标准处理模块,用于响应于接收的数据操作请求,确定所述当前节点是否满足预设条件,所述预设条件包括已成为领导者节点并收到所述预设数目节点发送的提案承诺;
在确定所述当前节点不满足所述预设条件时,所述标准处理模块用于按照所述一致性协议的预设步骤写入所述数据操作请求;
在确定所述当前节点非领导者节点时,所述标准处理模块用于基于所述当前节点的处理负荷确定是否通过竞选成为所述领导者节点。
19.如权利要求18所述的装置,其特征在于,在确定通过竞选成为所述领导者节点时,所述标准处理模块用于在预设步骤包括的投票请求的提案值中写入竞选信息。
20.一种基于一致性协议的分布式处理装置,其特征在于,所述装置包括:
提案处理模块,用于响应于接收到的提案准备请求,提取所述提案准备请求中的第一提案编号,所述提案准备请求用于表示,所述提案准备请求的发送节点请求其他节点承诺:不再接受领导者提案编号小于所述第一提案编号的领导者节点发起的快速写入操作,所述第一提案编号表示所述发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;所述快速写入操作是指所述领导者节点跳过一致性算法的准备和承诺步骤,直接进行提案的投票、响应和操作步骤;
提案承诺模块,用于将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否向所述发送节点回复提案承诺,所述提案承诺携带所述第一提案编号,并用于表示承诺所述发送节点从基于所述提案承诺确定的第二提案编号开始使能快速写入操作,所述第二提案编号大于所述第一提案编号。
21.如权利要求20所述的装置,其特征在于,提案承诺模块在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述提案准备请求;以及在所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复所述提案承诺。
22.如权利要求21所述的装置,其特征在于,提案承诺模块发送的提案承诺还携带前次选票信息,所述前次选票信息包括前次领导者提案编号以及前次提案编号,并用于表示所述当前节点已经投票给:由所述前次领导者提案编号对应的节点在所述前次提案编号对应的提案处执行快速写入操作。
23.一种基于一致性协议的分布式处理装置,其特征在于,所述装置包括:
投票处理模块,用于响应于接收到的包括快速写入标识的投票请求,提取所述投票请求中的第一提案编号、大于所述第一提案编号的第二提案编号、以及与所述第二提案编号对应的提案值,所述第一提案编号表示所述投票请求的发送节点的领导者提案编号,所述领导者提案编号表示任一节点成为领导者节点时所处的提案编号;以及
比较写入模块,用于将所述第一提案编号与当前节点存储的前次领导者提案编号进行比较,并基于比较结果确定是否在所述第二提案编号对应的提案处记录所述提案值,所述第二提案编号大于所述第一提案编号。
24.如权利要求23所述的装置,其特征在于,比较写入模块在所述第一提案编号小于所述前次领导者提案编号时,丢弃所述投票请求;以及在所述第一提案编号大于等于所述前次领导者提案编号时,向所述发送节点回复选票,并执行在所述第二提案编号对应的提案处记录选票信息,所述选票携带所述第二提案编号以及所述快速写入标识,所述选票信息包括所述第一提案编号、所述提案值以及所述快速写入标识。
25.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至12中任一项所述的基于一致性协议的分布式处理方法。
26.一种电子设备,其特征在于,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据权利要求1至12中任一项所述的基于一致性协议的分布式处理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810798331.2A CN108924240B (zh) | 2018-07-19 | 2018-07-19 | 基于一致性协议的分布式处理方法、装置及存储介质 |
PCT/CN2019/095595 WO2020015576A1 (zh) | 2018-07-19 | 2019-07-11 | 基于一致性协议的分布式处理方法、装置及存储介质 |
US17/008,765 US11558460B2 (en) | 2018-07-19 | 2020-09-01 | Distributed processing method and apparatus based on consistency protocol and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810798331.2A CN108924240B (zh) | 2018-07-19 | 2018-07-19 | 基于一致性协议的分布式处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108924240A CN108924240A (zh) | 2018-11-30 |
CN108924240B true CN108924240B (zh) | 2022-08-12 |
Family
ID=64415276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810798331.2A Active CN108924240B (zh) | 2018-07-19 | 2018-07-19 | 基于一致性协议的分布式处理方法、装置及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11558460B2 (zh) |
CN (1) | CN108924240B (zh) |
WO (1) | WO2020015576A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108924240B (zh) * | 2018-07-19 | 2022-08-12 | 腾讯科技(深圳)有限公司 | 基于一致性协议的分布式处理方法、装置及存储介质 |
CN111930840A (zh) * | 2020-08-06 | 2020-11-13 | 平安科技(深圳)有限公司 | 基于Paxos算法的共识机制优化方法、系统以及区块链网络 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1690968A (zh) * | 2003-12-30 | 2005-11-02 | 微软公司 | 简化的Paxos算法 |
CN103618700A (zh) * | 2013-11-12 | 2014-03-05 | 曙光信息产业股份有限公司 | 服务器系统中领导者服务器的确定方法和服务器系统 |
CN103916426A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN108090222A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学院计算技术研究所 | 一种数据库集群节点间数据同步系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8005888B2 (en) * | 2003-12-30 | 2011-08-23 | Microsoft Corporation | Conflict fast consensus |
US7698465B2 (en) * | 2004-11-23 | 2010-04-13 | Microsoft Corporation | Generalized Paxos |
US7555516B2 (en) * | 2004-11-23 | 2009-06-30 | Microsoft Corporation | Fast Paxos recovery |
US20090165018A1 (en) * | 2007-12-20 | 2009-06-25 | Junqueira Flavio P | Leader election |
JP4916567B2 (ja) * | 2010-08-02 | 2012-04-11 | 株式会社トライテック | 分散コンピューティングシステムの処理方法 |
US10701148B2 (en) * | 2012-12-13 | 2020-06-30 | Level 3 Communications, Llc | Content delivery framework having storage services |
WO2017013636A1 (en) * | 2015-07-23 | 2017-01-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Leaderless consistency protocol |
US10027560B2 (en) * | 2015-11-12 | 2018-07-17 | Hulu, LLC | Leader election in distributed computer system |
CN108924240B (zh) * | 2018-07-19 | 2022-08-12 | 腾讯科技(深圳)有限公司 | 基于一致性协议的分布式处理方法、装置及存储介质 |
-
2018
- 2018-07-19 CN CN201810798331.2A patent/CN108924240B/zh active Active
-
2019
- 2019-07-11 WO PCT/CN2019/095595 patent/WO2020015576A1/zh active Application Filing
-
2020
- 2020-09-01 US US17/008,765 patent/US11558460B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1690968A (zh) * | 2003-12-30 | 2005-11-02 | 微软公司 | 简化的Paxos算法 |
CN103916426A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | 一种paxos实例更新方法、设备及系统 |
CN103618700A (zh) * | 2013-11-12 | 2014-03-05 | 曙光信息产业股份有限公司 | 服务器系统中领导者服务器的确定方法和服务器系统 |
CN108090222A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学院计算技术研究所 | 一种数据库集群节点间数据同步系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200396290A1 (en) | 2020-12-17 |
CN108924240A (zh) | 2018-11-30 |
WO2020015576A1 (zh) | 2020-01-23 |
US11558460B2 (en) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108492103B (zh) | 一种联盟区块链共识方法 | |
WO2018103318A1 (zh) | 分布式事务处理方法和系统 | |
CN109361740B (zh) | 一种区块链的区块生成方法、装置、设备和介质 | |
CN111698315B (zh) | 针对区块的数据处理方法、数据处理装置及计算机设备 | |
CN105988862A (zh) | 分布式事务处理方法及装置 | |
CN108924240B (zh) | 基于一致性协议的分布式处理方法、装置及存储介质 | |
CN112291372A (zh) | 区块链的异步落账方法、装置、介质及电子设备 | |
CN111475583A (zh) | 事务处理方法及装置 | |
CN113760468A (zh) | 分布式选举方法、装置、系统和介质 | |
CN113420323B (zh) | 数据共享方法及终端设备 | |
CN112527901A (zh) | 数据存储系统、方法、计算设备及计算机存储介质 | |
CN111127088B (zh) | 实现最终一致性的方法、装置、计算机设备及存储介质 | |
CN107465725B (zh) | 基于客户信息控制系统的异构长事务处理系统及方法 | |
CN107274284B (zh) | 双向撮合方法、装置以及交易系统 | |
CN116232893A (zh) | 分布式系统的共识方法、装置、电子设备及存储介质 | |
US11500857B2 (en) | Asynchronous remote calls with undo data structures | |
CN114579260A (zh) | 一种事务处理方法及系统 | |
US20230315754A1 (en) | Distributed transaction control system and distributed transaction control method | |
CN116846916B (zh) | 数据同步方法、装置、电子设备及计算机可读存储介质 | |
CN111866171B (zh) | 报文处理方法、装置、电子设备和介质 | |
CN114448781A (zh) | 一种数据处理系统 | |
CN116775325A (zh) | 分布式事务处理方法及系统 | |
CN114296874A (zh) | 一种跨机房镜像同步方法、装置、计算机设备及存储介质 | |
CN113206882A (zh) | 共识方法、计算机设备和存储介质 | |
CN116467390A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |