CN107919977A - 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置 - Google Patents
一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置 Download PDFInfo
- Publication number
- CN107919977A CN107919977A CN201610888948.4A CN201610888948A CN107919977A CN 107919977 A CN107919977 A CN 107919977A CN 201610888948 A CN201610888948 A CN 201610888948A CN 107919977 A CN107919977 A CN 107919977A
- Authority
- CN
- China
- Prior art keywords
- server
- dilatation
- quorum
- leader
- former
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 154
- 230000008569 process Effects 0.000 claims abstract description 84
- 238000003860 storage Methods 0.000 claims description 20
- 230000009467 reduction Effects 0.000 claims description 17
- 230000001960 triggered effect Effects 0.000 claims description 9
- 230000002085 persistent effect Effects 0.000 claims description 8
- 238000012797 qualification Methods 0.000 claims description 7
- 230000001568 sexual effect Effects 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000006399 behavior Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 230000010339 dilation Effects 0.000 abstract description 10
- 238000009826 distribution Methods 0.000 abstract description 9
- 208000018672 Dilatation Diseases 0.000 description 209
- 238000010586 diagram Methods 0.000 description 18
- 238000007792 addition Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- 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/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- 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
-
- 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/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- 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/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Abstract
本申请提供了一种基于Paxos协议的分布式一致性系统的在线扩容方法,包括:在原Quorum中原服务器基础上添加设定数目的新增服务器;对一个新增服务器执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;更新包括各个原服务器和设定数目新增服务器在内的扩容后Quorum配置信息;启动所述服务进程并发起针对扩容后Quorum的Leader选举;依次针对原Quorum的Leader之外的每个原服务器执行所述扩容操作并在完成后,针对原Quorum的Leader执行所述扩容操作;对未曾执行扩容的新增服务器执行所述扩容操作。本申请解决了现有冷扩容方法在扩容过程中暂停分布式系统服务的问题。本申请还提供了一种基于Paxos协议的分布式一致性系统的在线缩容的方法。
Description
技术领域
本申请涉及分布式计算技术领域,具体涉及一种基于Paxos协议的分布式一致性系统的在线扩容方法和装置。本申请同时涉及一种基于Paxos协议的分布式一致性系统的在线缩容方法和装置。
背景技术
在大规模分布式场景下,分布在数量众多的计算节点上的客户端进程通常需要依赖后端分布式一致性系统提供的互斥性来同步对某共享资源的访问,防止彼此干扰以保障数据分布式一致性。大规模分布式计算系统中存在着数量众多的使用分布式一致性服务的客户端进程。随着业务规模的迅速增长,成千上万乃至更多客户端进程会与后端分布式一致性系统建立大量连接,随之而来的频繁访问对分布式一致性系统的扩容能力提出了很高的要求。
目前业界主流的分布式一致性系统如Yahoo的ZooKeeper,Google的Chubby均是基于经典的Paxos协议设计。对基于Paxos协议实现的分布式一致性系统,在不改变协议的前提下,通常其扩容方式是所谓的“冷”扩容,即扩容过程中分布式一致性系统服务会出现中断。具体的冷扩容流程为:停止所有原Quorum服务器的服务进程;为新Quorum增加新服务器;更新包括新增加服务器在内的所有新Quorum服务器上的有关新Quorum的配置信息;重新启动所有新Quorum服务器的服务进程,恢复分布式一致性服务。传统的这种冷扩容机制,由于暂停系统服务,极大影响了分布式一致性服务使用者的用户体验。此外,新增加的Quorum服务器需要较长时间的从Leader同步完所有数据之后,才能开始服务用户请求,极大延缓了扩容操作对分布式一致性系统带来的服务性能提升。
发明内容
本申请提供一种基于Paxos协议的分布式一致性系统的在线扩容方法和装置,以解决现有冷扩容方法在扩容过程中暂停分布式系统服务的问题。本申请还提供一种基于Paxos协议的分布式一致性系统的在线缩容方法和装置。
本申请提供一种基于Paxos协议的分布式一致性系统的在线扩容方法,包括:
在原Quorum中原服务器基础上添加设定数目的新增服务器;
针对一个所述新增服务器,执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动所述服务进程,并发起所述扩容后Quorum的Leader选举;
依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均执行所述扩容操作;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作;
在完成针对所述原服务器的所述扩容操作之后,针对未曾执行所述扩容操作的所述新增服务器,执行所述扩容操作。
可选的,所述原服务器的数目为奇数。
可选的,所述设定数目为两个。
可选的,所述Quorum的配置信息,包括:Quorum中服务器维护的、使Quorum中服务器相互认识并交流选举Leader的选票的信息。
可选的,所述依次针对所述原Quorum的Leader之外的每个未曾执行所述扩容操作的所述原服务器,均执行所述扩容操作和所述针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作的步骤;包括:
确定当前选举所述原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,执行所述扩容操作;
判断未曾执行所述扩容操作的所述原服务器的数目是否为两个以上;若是,则返回执行所述确定当前选举原Quorum的Leader的最优服务器排序,并对在所述最优服务器排序中排序最后的尚未执行扩容的原服务器执行所述扩容操作的步骤;若否,则对所述尚未执行扩容的原服务器执行所述扩容操作。
可选的,所述选举原Quorum的Leader的最优服务器排序,包括:
根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序。
可选的,所述根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序;包括:
原服务器的Zxid值越大,则所述原服务器在所述选举原Quorum的Leader的最优服务器排序中的排列位置越靠前。
可选的,所述根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序;包括:
若所述原服务器的Zxid值相同,所述原服务器的MyId值越小,则所述原服务器在所述选举原Quorum的Leader的最优服务器排序中的排列位置越靠前。
可选的,针对所述新增服务器,在执行所述启动所述服务进程,并发起所述扩容后Quorum的Leader选举的步骤之前,执行下述步骤:
任意选择一个所述原服务器,复制选择的所述原服务器上的当前持久化存储和事务日志的数据,并将复制的数据加载至本地内存数据库。
本申请还提供一种基于Paxos协议的分布式一致性系统的在线扩容装置,包括:
添加新增服务器单元,用于在原Quorum中原服务器基础上添加设定数目的新增服务器;
扩容一个新增服务器单元,用于针对一个所述新增服务器,触发扩容操作单元;所述扩容操作单元,包括:停止服务进程单元,用于停止与分布式服务相关的服务进程;更新Quorum配置信息单元,用于将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动服务进程单元,用于启动所述服务进程并发起针对所述扩容后Quorum的Leader选举;
扩容原服务器单元,用于依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均触发所述扩容操作单元;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,触发所述扩容操作单元;
扩容未曾扩容的新增服务器单元,用于在针对所述原服务器触发所述扩容操作单元之后,针对未曾执行所述扩容操作的所述新增服务器,触发所述扩容操作单元。
可选的,所述扩容原服务器单元;包括:
扩容优选顺序非Leader服务器单元,用于确定当前选举原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,触发所述扩容操作单元;
扩容优选顺序Leader服务器单元,用于判断未曾执行所述扩容操作的所述原服务器的数目是否为两个以上;若是,则返回触发所述扩容优选顺序非Leader服务器单元;若否,则对所述尚未执行扩容的原服务器触发所述扩容操作单元。
可选的,对新增服务器触发的所述扩容操作单元,包括:
在触发启动服务进程单元之前,触发下述单元:
新增服务器加载一致性数据单元,用于任意选择一个所述原服务器,复制选择的所述原Quorum服务器上的当前持久化存储和事务日志的数据,并将复制的数据加载至本地内存数据库。
本申请还提供一种基于Paxos协议的分布式一致性系统的在线扩容电子设备,所述电子设备,包括:显示器,处理器,和存储器;
所述存储器,用于存储分布式一致性系统的在线扩容方法的程序,所述程序在被所述处理器读取执行时,执行如下操作:在原Quorum中原服务器基础上添加设定数目的新增服务器;针对一个所述新增服务器,执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动所述服务进程,并发起所述扩容后Quorum的Leader选举;依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均执行所述扩容操作;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作;在完成针对所述原服务器的所述扩容操作之后,针对未曾执行所述扩容操作的所述新增服务器,执行所述扩容操作。
本申请还提供一种基于Paxos协议的分布式一致性系统的在线缩容方法,包括:
从原Quorum中的原服务器中去除设定数目的待去除的所述原服务器;
依次对待去除的所述原服务器之外并作为所述原Quorum的Leader之外的每个所述原服务器执行缩容操作;所述缩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为去除两个待去除的所述原服务器之后的缩容后Quorum的配置信息;启动所述服务进程,并发起所述缩容后Quorum的Leader选举;
针对作为所述原Quorum的Leader的所述原服务器,执行所述缩容操作。
可选的,所述原服务器的数目为奇数。
可选的,所述设定数目为两个。
本申请还提供一种基于Paxos协议的分布式一致性系统的在线缩容装置,包括:
去除设定数目的原服务器单元,用于从原Quorum中原服务器中去除设定数目的待去除的所述原服务器;
缩容非Leader服务器单元,用于依次针对待去除的所述原服务器之外并作为所述原Quorum的Leader之外的每个所述原服务器,触发缩容操作单元;所述缩容操作单元,用于:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为去除两个待去除的所述原服务器之后的缩容后Quorum的配置信息;启动所述服务进程,并发起所述缩容后Quorum的Leader选举;
缩容Leader服务器单元,用于针对作为所述原Quorum的Leader的所述原服务器,触发所述缩容操作单元。
与现有技术相比,本申请具有以下优点:
本申请提供了一种分布式一致性系统快速可靠的扩容方法,进行不中断服务的在线扩容,大幅提高了扩容过程分布式一致性服务使用者的用户体验。
本申请在扩容过程中尽可能地维持了原Quorum的存在,在扩容顺序上每次都从原Quorum服务器中选择成为Leader资格最差的服务器进行扩容,最后再进行对另一个新增Quorum服务器的扩容,即便在扩容过程中发生服务器节点故障,也确保了选举的Leader一定是尚未进行过扩容的,从而实现了在扩容过程中对服务器节点故障的容错,分布式一致性服务不会受到影响。
本申请的方案利用了原Quorum中的持久化存储的快照与事务日志,极大缩短了扩容后新增Quorum服务器从Leader同步数据的时间,让分布式一致性系统快速扩容成为了可能。
附图说明
图1是本申请实施例提供的一种基于Paxos协议的分布式一致性系统的示意图;
图2是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例流程图;
图3是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例第一示意图;
图4是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例扩容操作方法流程图;
图5是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例第二示意图;
图6是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例第三示意图;
图7是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例第四示意图;
图8是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例第五示意图;
图9是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法优选实施例流程图;
图10是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法扩容操作方法优选实施例流程图;
图11是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置实施例示意图;
图12是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置扩容操作装置实施例示意图;
图13是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置优选实施例示意图;
图14是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置扩容操作装置优选实施例示意图;
图15是本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容电子设备实施例示意图;
图16是本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容方法流程图;
图17是本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容方法实施例第一示意图;
图18是本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容方法实施例第二示意图;
图19是本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容方法实施例第三示意图;
图20是本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供了一种基于Paxos协议的分布式一致性系统的在线扩容方法、装置和电子设备,以及一种基于Paxos协议的分布式一致性系统的在线缩容方法和装置。下面依次结合附图对本申请的实施例进行详细说明。为了便于理解本申请的技术方案,首先对本申请的技术方案中一些相关技术术语以及对基于Paxos理论实现的分布式一致性系统做简要说明。
Paxos协议是莱斯利·兰伯特提出的一种基于消息传递的一致性算法,解决的问题是一个分布式系统如何就某个值(决议)达成一致。下面是一些基于Paxos协议实现的分布式一致性系统的术语解释:
Quorum:分布式一致性系统服务端的服务器集合,其服务器的个数通常为奇数;每个服务器都维护着分布式一致性系统的内存数据库以及持久化存储的事务日志与快照数据;
Leader:在一个Quorum中只有一个且为该Quorum中至少一半以上的服务器选举出来的主服务器,负责所有写等改变一致性系统状态的事务操作的Proposal,以及应其请求,同步数据给其它服务器;
Follower:在一个Quorum中的从服务器,直接响应用户的读等非事务操作,将用户的写等事务操作转发给Leader处理,接收来自Leader的Proposal,相应更新本地事务日志与快照,以及修改内存数据库状态;
Zxid:用来标记分布式一致性系统中事务序列的Id信息;
MyId:用来标记Quorum中每个服务器自身的Id信息。
基于Paxos理论实现的分布式一致性系统,在通常情况下其保障数据分布式一致性的是服务端被称为Quorum的服务器组。如图1所示,一个Quorum通常由奇数个服务器组成,每个服务器均会维护一份该分布式一致性系统的内存数据库以及持久化存储的快照与事务日志。在分布式一致性系统启动时,根据每个Quorum服务器当前记录的Zxid以及MyId信息,Quorum会选出一个服务器作为Leader,其余作为Followers。事实上,有超过一半的服务器即可以选举出Leader。Quorum的Leader负责所有写等改变系统状态的事务操作的Proposal,以及应Followers请求,同步数据给Follower服务器。每个Quorum的Follower直接响应用户的读等非事务操作,将用户的写等事务操作转发给Leader处理,接收来自Leader的Proposal,相应更新本地事务日志与快照,以及修改内存数据库状态。
分布式一致性系统中每个Quorum服务器均维护着有关所在Quorum信息的配置,该配置可以让Quorum内部所有服务器之间互相认识,从而在Leader选举过程,可以广播自己的选票,确保Quorum的Leader选举的正常进行。图1中显示的是包含3个服务器的Quorum,其中服务器1为Quorum的Leader。
另外,必须说明有关分布式一致性系统的Quorum Leader选举策略。事实上,每个Quorum中服务器的选票包含两个因素:1)服务器的当前Zxid信息;2)服务器的MyId信息。选举时,首先对比Zxid信息,如果某个服务器的Zxid值最大,那么该服务器最有资格当选为Leader;其次,如果Zxid值相同,那么就对比每个服务器唯一的MyId值,选举出Leader。其中,MyId值的比较规则在不同分布式一致性系统中并不一致,选举策略只要确保该对比规则明确无歧义即可。在本申请中,为了说明方便,以MyId值越小则竞选Leader越有资格作为对比规则,且以<Zxid,MyId>来标记每个服务器参选Leader的选票。
下面以下实施例的具体流程来说明本申请的技术方案。
请参考图2,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容方法实施例流程图。具体的,所述在线扩容方法,包括如下步骤:
步骤S101:在原Quorum中原服务器基础上添加设定数目的新增服务器。
本步骤为对原Quorum扩容增加新服务器做物理上的必要准备。在正常运行的原Quorum服务器基础上,添加设定数目新增的服务器,即在物理上向原Quorum添加具有Quorum服务器正常服务能力的服务器并做好其与原Quorum中原服务器和客户端工作站的联网等准备工作。
一般情况下,出于选举Leader的考虑,原Quorum服务器的数目都是奇数。本申请提供的在线扩容方法为相邻扩容,即一次扩容为原Quorum增加两个新增服务器。这样在执行完本申请的扩容方法之后,扩容后Quorum服务器的数目依然保持为奇数。为了说明方便,在本申请下面各个具体扩容实施例中,统一将扩容前的原Quorum标记为Q2n+1,扩容后Quorum标记为Q2n+3。
本申请当然也可以适应于跨越扩容的情形,连续多次独立执行本相邻扩容方法即可,每次扩容都可以为Quorum增加两个新增服务器。本申请的各个具体扩容实施例对此不再进行详述。
例如,如图3所示,在本实施例中,原Quorum即Q2n+1有服务器1、服务器2和服务器3这3个服务器,可以使用本扩容方法添加服务器4和服务器5这两个新增的服务器,扩容后Quorum即Q2n+3就会有5个服务器。
步骤S103:针对一个所述新增服务器,执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动所述服务进程,并发起所述扩容后Quorum的Leader选举。
本申请首先选择一个新增服务器,对其执行扩容操作,即三个主要扩容步骤:停止服务进程,更新Quorum配置信息,重启服务进程和向其他所有服务器发起针对扩容后Quorum的Leader选举。
由于原Quorum有2n+1个服务器,有其中的n+1个服务器即可选举出Leader;扩容后的Quorum有2n+3个服务器,有其中的n+2个服务器即可选举出Leader。因此,在系统扩容的过渡过程中同时有2n+3个服务器的话,那么是存在形成分别归属原Quorum和扩容后的Quorum这两个Quorum,即存在选举出两个Leader的“脑裂”风险的,这将最终导致数据不一致的这一致命结果。为了打破导致“脑裂”风险的必要条件,最后执行扩容操作的必须是新增服务器。本申请采用首先对一个新增服务器执行扩容、再对原服务器执行扩容和最后对未曾执行扩容操作的新增服务器执行扩容的扩容次序。
所述扩容操作S104,如图4所示,包括下述步骤:
步骤S104-1:停止与分布式服务相关的服务进程;
步骤S104-3:将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;
步骤S104-5:启动所述服务进程,并发起所述扩容后Quorum的Leader选举。
对新增服务器和原服务器执行所述扩容操作,即为对新增服务器或原服务器执行S104:如果服务器有正在运行的与分布式服务相关的服务进程,则停止这些服务进程;将服务器维护的Quorum配置信息更新为包括各个原服务器和两个新增服务器在内的扩容后Quorum配置信息;重新启动服务器的所述服务进程以开始重新提供分布式服务,并由所述服务进程发起针对扩容后Quorum的Leader选举。
本实施例中,对一个新增服务器执行扩容操作后,执行扩容后的新增服务器将维护包括所有原服务器和两个新增服务器的扩容后Quorum配置信息。由于原Quorum中所有原服务器并不认识这个新增服务器,故新增服务器的选举Leader的选票会被忽略,原Quorum的Leader仍然保持其地位,而新增服务器的服务进程将处于持续发起选举状态。
例如,如图5所示,对一个新增服务器执行扩容后,添加的新增服务器即服务器4的Quorum配置信息包括原服务器1至3以及两个新增服务器4和5。其他原服务器将忽略服务器4的选举Leader的选票,而服务器4也无法加入原Quorum、会处于一直持续发起选举扩容后Quorum的Leader的状态。
步骤S105:依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均执行所述扩容操作;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作。
每次对原Quorum的Leader之外的一个尚未执行扩容的原服务器,即原Quorum尚未执行扩容的Follower,执行一次所述扩容操作,直至除原Quorum的Leader之外的原服务器全部执行扩容完毕。
对原Quorum的Leader之外的原服务器执行扩容操作,停止其服务进程,修改其Q2n+1配置信息为Q2n+3配置信息,重新启动其服务器进程,但其发起针对扩容后Quorum的Leader选举将会被忽略,因为剩余的原服务器存在有Leader,而该Leader和该执行扩容的非Leader原服务器是相互认识的,因此该执行扩容的服务器将会继续加入到原Quorum之中,继续提供分布式一致性服务。
例如,如图6所示,对原Quorum的Leader即服务器1之外的原服务器,服务器2和服务器3逐一执行扩容操作之后,服务器2和服务器3都会继续加入原Quorum,但其开始维护扩容后Quorum的配置信息。
在对所有除原Quorum的Leader之外的原服务器执行扩容完毕后,对原Quorum的Leader执行扩容。
在执行扩容原Quorum的Leader的停止其服务进程的步骤之后,原服务器找不到Leader会进行重新选举,由于此时其他所有原服务器都知道并认识了已经执行扩容的一个新增服务器,其他所有原服务器和执行扩容的一个新增服务器也达到了超过一半服务器选举扩容后Quorum的Leader的条件,会选举出扩容后Quorum的Leader并加入扩容后Quorum。在原Quorum的Leader更新完毕扩容后Quorum配置信息、重启服务进程、和发起针对扩容后Quorum的Leader选举之后,会直接加入已经选出Leader的扩容后Quorum。
例如,如图7所示,对原Quorum的Leader即服务器1执行扩容。在服务器1停止其服务进程后,服务器1至4会发生针对扩容后Quorum的Leader的选举,此时,不妨假设选举出来的新Leader为服务器2。等待服务器1重启其服务进程之后,服务器1会加入到扩容后Quorum5中,成为扩容后Quorum的一个Follower。
步骤S107:在完成针对所述原服务器的所述扩容操作之后,针对未曾执行所述扩容操作的所述新增服务器,执行所述扩容操作。
对剩余的未曾执行扩容的新增服务器执行扩容操作。执行扩容完毕的新增服务器将知道并认识其他所有扩容后Quorum服务器,在发起针对扩容后Quorum的Leader选举之后,会加入扩容后Quorum并接受已经存在的Leader,开始提供分布式一致性服务。
例如,如图8所示,对另一个新增服务器即服务器5执行扩容后,服务器5发起针对扩容后Quorum的Leader选举之后会发现扩容后Quorum已经存在Leader,服务器5会加入扩容后Quorum并接受已经存在的Leader即服务器2,开始作为一个扩容后Quorum的Follower提供分布式一致性服务。
请参考图9,其为本申请一种基于Paxos协议的分布式一致性系统的在线扩容方法优选实施例流程图。所述在线扩容方法的步骤S105,包括:
步骤S105-1:确定当前选举所述原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,执行所述扩容操作;
步骤S105-3:判断未曾执行所述扩容操作的所述原服务器的数目是否为两个以上;若是,则返回执行所述确定当前选举所述原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,执行所述扩容操作的步骤;若否,则对所述未曾执行扩容的原服务器执行所述扩容操作。
上述两步骤S105-1和S105-2为步骤S105的优选方案。在对原服务器的扩容过程中,根据Quorum选举Leader的策略,每次扩容时优先扩容排序最后的最不可能成为Leader的服务器,使Quorum在扩容过程中即便发生节点故障,也可以保证新当选的Leader为属于原Quorum的服务器,从而提高以尽可能保持提供正常运行的分布式一致性。
本申请中,对各个原服务器的扩容顺序需要尽可能地维持原Quorum的存在,即对原服务器的每次扩容均选择在选举原Quorum的Leader的最优服务器排序中排序为最后的服务器。所述选举原Quorum的Leader的最优服务器排序,包括:根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序。
在本实施例中,所述根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序;包括:原服务器的Zxid值越大,则所述原服务器在所述选举原Quorum的Leader的最优服务器排序中的排列位置越靠前;若所述原服务器的Zxid值相同,所述原服务器的MyId值越小,则所述原服务器在所述选举原Quorum的Leader的最优服务器排序中的排列位置越靠前。
因此,在扩容各个原服务器过程中,每次均从尚未执行扩容的原服务器中选择在选举原Quorum的Leader的最优服务器排序中排序为最后的服务器,即当前Leader选举的选票<Zxid,MyId>最低的服务器执行扩容。这样就可以确保,即使在扩容过程中同时发生了节点故障,那么此时Leader选举的选票<Zxid,MyId>最优的原服务器一定是尚未执行扩容操作的,换而言之,只要还有n+1个原服务器存在,那么原Quorum还是会有Leader被选举出来,这样用户的分布式一致性服务也就不会受到影响。
例如,如图5和图6所示,在扩容原服务器时,服务器3当时Leader选举的选票<Zxid,MyId>在原服务器中是最低的。则首先对服务器3执行扩容,重启服务进程,服务器3会继续加入到了原Quorum中,且继续提供着分布式一致性服务。之后,按照该规则继续选择扩容当时Leader选举的选票<Zxid,MyId>最低的服务器2,服务器2也会在重启后继续加入到了原Quorum中。继续扩容直至扩容完毕其他所有非Leader的原服务器,只剩下只有一个尚未执行扩容的原服务器时,即原Leader服务器1,则对服务器1执行扩容。对原Leader服务器1扩容的情况在步骤S107已做详细说明,在此不再赘述。
请参考图10,其为本申请一种基于Paxos协议的分布式一致性系统的在线扩容方法扩容操作优选实施例流程图。所述扩容操作S104,在执行步骤S104-5之前,执行下述步骤:
步骤S104-4:任意选择一个所述原服务器,复制选择的所述原服务器上的当前持久化存储和事务日志的数据,并将复制的数据加载至本地内存数据库。
在分布式一致性系统从Q2n+1扩容至Q2n+3的过程中,扩容完毕的新增服务器分布式相关的服务进程启动后,其Zxid是0,即在其本地没有任何分布式一致性数据。这意味着其必须从Leader同步所有一致性数据,之后才能开始服务用户的访问请求。这直接导致扩容完毕的新增服务器从启动到可以开始提供分布式一致性服务需要一段较长的时间。
通过从原Quorum的2n+1个原服务器中任意选择一个,复制其当前最新快照以及之后的事务日志数据,新增服务器可以在其服务进程启动时,先加载这些一致性持久化数据至本地内存数据库。基于此,新增服务器在尝试加入原Quorum中时,其Zxid已经很接近甚至等于Leader的Zxid,从而可以大大压缩了新增服务器的同步数据时间。当然,这个压缩同步数据时间的方法不仅适用于最后扩容的新增服务器,对第一个扩容的新增服务器同样适用。
例如,如图8所示,对未曾执行扩容操作的新增服务器即服务器5的扩容即可以选择在启动其服务进程之前,从原服务器即服务器1至3中复制其当前最新的快照以及之后的事务日志数据,这样在启动其服务进程之后,可以快速加入到扩容后Quorum中,迅速向用户提供服务分布式一致性服务。
请参看图11,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅为示意性的。所述扩容装置,包括:
添加新增服务器单元201,用于在原Quorum中原服务器基础上添加设定数目的新增服务器;
扩容一个新增服务器单元203,用于针对一个所述新增服务器,触发扩容操作单元;所述扩容操作单元204,请参看图12,包括:停止服务进程单元204-1,用于停止与分布式服务相关的服务进程;更新Quorum配置信息单元204-3,用于将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动服务进程单元204-5,用于启动所述服务进程并发起针对所述扩容后Quorum的Leader选举;
扩容原服务器单元205,用于依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均触发所述扩容操作单元;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,触发所述扩容操作单元;
扩容未曾扩容的新增服务器单元207,用于在针对所述原服务器触发所述扩容操作单元之后,针对未曾执行所述扩容操作的所述新增服务器,触发所述扩容操作单元。
请参看图13,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置优选实施例示意图。所述扩容原服务器单元205,包括:
扩容优选顺序非Leader服务器单元205-1,用于确定当前选举原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,触发所述扩容操作单元;
扩容优选顺序Leader服务器单元205-3,用于判断未曾执行所述扩容操作的所述原服务器的数目是否为两个以上;若是,则返回触发所述扩容优选顺序非Leader服务器单元;若否,则对所述尚未执行扩容的原服务器触发所述扩容操作单元。
请参看图14,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容装置优选实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅为示意性的。对新增服务器触发的所述扩容操作单元204,包括:
在触发启动服务进程单元204-5之前,触发下述单元:
新增服务器加载一致性数据单元204-4,用于任意选择一个所述原服务器,复制选择的原Quorum服务器上的当前持久化存储和事务日志的数据,并将复制的数据加载至本地内存数据库。
请参看图15,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线扩容电子设备实施例示意图。由于电子设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅为示意性的。所述扩容电子设备,包括:显示器301;处理器303;存储器305;
所述存储器305,用于存储分布式一致性系统的在线扩容方法的程序,所述程序在被所述处理器读取执行时,执行如下操作:在原Quorum中原服务器基础上添加设定数目的新增服务器;针对一个所述新增服务器,执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动所述服务进程,并发起所述扩容后Quorum的Leader选举;依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均执行所述扩容操作;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作;在完成针对所述原服务器的所述扩容操作之后,针对未曾执行所述扩容操作的所述新增服务器,执行所述扩容操作。
请参考图16,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容方法实施例流程图。具体的,所述在线缩容方法,包括如下步骤:
步骤S401:从原Quorum中的原服务器中去除设定数目的待去除的所述原服务器。
从原Quorum中原服务器中去除设定数目的待去除的原服务器即从物理上去除这些原服务器。本实施例提供的在线缩容方法为相邻缩容,即每次执行一次本缩容方法,可以从原Quorum中去除2个原服务器。当然,与跨越扩容类似,本申请的缩容方法也可以适用于跨越缩容的情形,连续独立执行若干次本申请提供的缩容方法即可。
例如,本实施例缩容前Quorum共有服务器1至5,如图8所示,本实施例去除其中的服务器2和服务器4两个服务器;由于服务器2为去除服务器之前的Quorum的Leader,去除服务器2和服务器4之后,剩余3个服务器超过原Quorum的服务器数目5个的一半,可以为原Quorum选举出新的Leader。假设此时服务器3的Leader选举的选票<Zxid,MyId>在原服务器中是最优的,服务器3即当选为新的Leader,如图17所示,此时服务器1、服务器3和服务器5均维护着缩容前Quorum配置信息。如果去除的服务器不是Leader,则不需要进行新Leader的选举,原Leader依旧会保持其Leader地位。
步骤S403:依次对待去除的所述原服务器之外并作为所述原Quorum的Leader之外的每个所述原服务器执行缩容操作;所述缩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为去除两个待去除的所述原服务器之后的缩容后Quorum的配置信息;启动所述服务进程,并发起所述缩容后Quorum的Leader选举。
每次对去除原服务器剩余的Leader之外的一个尚未执行扩容的原服务器,即原Quorum尚未执行扩容的Follower,执行一次缩容操作,直至除原Quorum的Leader之外的原服务器全部执行缩容完毕。
对服务器执行缩容操作,即停止其服务进程,修改其原Quorum配置信息,即Q2n+3,为缩容后Quorum配置信息,即Q2n+1,重新启动其服务器进程并发起针对缩容后Quorum的Leader选举。但此时因为剩余的原服务器存在有Leader,执行缩容的服务器认识该Leader也会承认该Leader并会加入到原Quorum之中,继续提供分布式一致性服务。
例如,在本实施例中,如图18所示,逐一缩容非Leader的服务器1和服务器5之后,Leader服务器维护原Quorum配置信息而非Leader的服务器开始维护缩容后Quorum配置信息。
步骤S405:针对作为所述原Quorum的Leader的所述原服务器,执行所述缩容操作。
最后对维护原Quorum配置信息的Leader服务器执行缩容。在对Leader服务器执行缩容停止其服务进程时,其他非Leader服务器开始选举出维护新的缩容后Quorum的Leader,维护原Quorum的Leader服务器在启动并发起针对缩容后Quorum的Leader选举之后,会加入缩容后Quorum成为其中一个Follower。
例如,如图19所示,对原Leader服务器3执行缩容后,假设新选举出的Leader为服务器1,服务器3在更新其Quorum配置和重启其服务进程之后,会加入缩容后Quorum。
请参看图20,其为本申请提供的一种基于Paxos协议的分布式一致性系统的在线缩容装置实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅为示意性的。所示缩容装置,包括:
去除设定数目的原服务器单元501,用于从原Quorum中原服务器中去除设定数目的待去除的所述原服务器;
缩容原服务器的非Leader服务器单元503,用于依次针对待去除的所述原服务器之外并作为所述原Quorum的Leader之外的每个所述原服务器,触发缩容操作单元;所述缩容操作单元,用于:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为去除两个待去除的所述原服务器之后的缩容后Quorum的配置信息;启动所述服务进程,并发起所述缩容后Quorum的Leader选举;
缩容原服务器的Leader服务器单元505,用于针对作为所述原Quorum的Leader的所述原服务器,触发所述缩容操作单元。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (17)
1.一种基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,包括:
在原Quorum中原服务器基础上添加设定数目的新增服务器;
针对一个所述新增服务器,执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动所述服务进程,并发起所述扩容后Quorum的Leader选举;
依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均执行所述扩容操作;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作;
在完成针对所述原服务器的所述扩容操作之后,针对未曾执行所述扩容操作的所述新增服务器,执行所述扩容操作。
2.根据权利要求1所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述原服务器的数目为奇数。
3.根据权利要求1所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述设定数目为两个。
4.根据权利要求1所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述Quorum的配置信息,包括:Quorum中服务器维护的、使Quorum中服务器相互认识并交流选举Leader的选票的信息。
5.根据权利要求1所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述依次针对所述原Quorum的Leader之外的每个未曾执行所述扩容操作的所述原服务器,均执行所述扩容操作和所述针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作的步骤;包括:
确定当前选举所述原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,执行所述扩容操作;
判断未曾执行所述扩容操作的所述原服务器的数目是否为两个以上;若是,则返回执行所述确定当前选举所述原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,执行所述扩容操作的步骤;若否,则对所述尚未执行扩容的原服务器执行所述扩容操作。
6.根据权利要求5所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述选举原Quorum的Leader的最优服务器排序,包括:
根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序。
7.根据权利要求6所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序;包括:
原服务器的Zxid值越大,则所述原服务器在所述选举原Quorum的Leader的最优服务器排序中的排列位置越靠前。
8.根据权利要求6所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,所述根据原Quorum的Leader选举策略,从最有资格当选为Leader到最没有资格当选为Leader的服务器作为从最前到最后的排列顺序;包括:
若所述原服务器的Zxid值相同,所述原服务器的MyId值越小,则所述原服务器在所述选举原Quorum的Leader的最优服务器排序中的排列位置越靠前。
9.根据权利要求1或5所述的基于Paxos协议的分布式一致性系统的在线扩容方法,其特征在于,针对所述新增服务器,在执行所述启动所述服务进程,并发起所述扩容后Quorum的Leader选举的步骤之前,执行下述步骤:
任意选择一个所述原服务器,复制选择的所述原服务器上的当前持久化存储和事务日志的数据,并将复制的数据加载至本地内存数据库。
10.一种基于Paxos协议的分布式一致性系统的在线扩容装置,其特征在于,包括:
添加新增服务器单元,用于在原Quorum中原服务器基础上添加设定数目的新增服务器;
扩容一个新增服务器单元,用于针对一个所述新增服务器,触发扩容操作单元;所述扩容操作单元,包括:停止服务进程单元,用于停止与分布式服务相关的服务进程;更新Quorum配置信息单元,用于将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动服务进程单元,用于启动所述服务进程并发起针对所述扩容后Quorum的Leader选举;
扩容原服务器单元,用于依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均触发所述扩容操作单元;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,触发所述扩容操作单元;
扩容未曾扩容的新增服务器单元,用于在针对所述原服务器触发所述扩容操作单元之后,针对未曾执行所述扩容操作的所述新增服务器,触发所述扩容操作单元。
11.根据权利要求10所述的基于Paxos协议的分布式一致性系统的在线扩容装置,其特征在于,所述扩容原服务器单元;包括:
扩容优选顺序非Leader服务器单元,用于确定当前选举原Quorum的Leader的最优服务器排序,并针对所述原Quorum的leader之外的在所述最优服务器排序中排序最后的未曾执行所述扩容操作的所述原服务器,触发所述扩容操作单元;
扩容优选顺序Leader服务器单元,用于判断未曾执行所述扩容操作的所述原服务器的数目是否为两个以上;若是,则返回触发所述扩容优选顺序非Leader服务器单元;若否,则对所述尚未执行扩容的原服务器触发所述扩容操作单元。
12.根据权利要求10或11所述的基于Paxos协议的分布式一致性系统的在线扩容装置,其特征在于,对新增服务器触发的所述扩容操作单元,包括:
在触发启动服务进程单元之前,触发下述单元:
新增服务器加载一致性数据单元,用于任意选择一个所述原服务器,复制选择的所述原Quorum服务器上的当前持久化存储和事务日志的数据,并将复制的数据加载至本地内存数据库。
13.一种基于Paxos协议的分布式一致性系统的在线扩容电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储分布式一致性系统的在线扩容方法的程序,所述程序在被所述处理器读取执行时,执行如下操作:在原Quorum中原服务器基础上添加设定数目的新增服务器;针对一个所述新增服务器,执行扩容操作;所述扩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为加入设定数目的新增服务器的扩容后Quorum的配置信息;启动所述服务进程,并发起所述扩容后Quorum的Leader选举;依次针对作为所述原Quorum的Leader之外的每个所述原服务器,均执行所述扩容操作;在完成之后,针对作为所述原Quorum的Leader的所述原服务器,执行所述扩容操作;在完成针对所述原服务器的所述扩容操作之后,针对未曾执行所述扩容操作的所述新增服务器,执行所述扩容操作。
14.一种基于Paxos协议的分布式一致性系统的在线缩容方法,其特征在于,包括:
从原Quorum中的原服务器中去除设定数目的待去除的所述原服务器;
依次对待去除的所述原服务器之外并作为所述原Quorum的Leader之外的每个所述原服务器执行缩容操作;所述缩容操作,包括下述步骤:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为去除两个待去除的所述原服务器之后的缩容后Quorum的配置信息;启动所述服务进程,并发起所述缩容后Quorum的Leader选举;
针对作为所述原Quorum的Leader的所述原服务器,执行所述缩容操作。
15.根据权利要求14所述的基于Paxos协议的分布式一致性系统的在线缩容方法,其特征在于,所述原服务器的数目为奇数。
16.根据权利要求14所述的基于Paxos协议的分布式一致性系统的在线缩容方法,其特征在于,所述设定数目为两个。
17.一种基于Paxos协议的分布式一致性系统的在线缩容装置,其特征在于,包括:
去除设定数目的原服务器单元,用于从原Quorum中原服务器中去除设定数目的待去除的所述原服务器;
缩容非Leader服务器单元,用于依次针对待去除的所述原服务器之外并作为所述原Quorum的Leader之外的每个所述原服务器,触发缩容操作单元;所述缩容操作单元,用于:停止与分布式服务相关的服务进程;将所维护的所述原Quorum的配置信息更新为去除两个待去除的所述原服务器之后的缩容后Quorum的配置信息;启动所述服务进程,并发起所述缩容后Quorum的Leader选举;
缩容Leader服务器单元,用于针对作为所述原Quorum的Leader的所述原服务器,触发所述缩容操作单元。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610888948.4A CN107919977B (zh) | 2016-10-11 | 2016-10-11 | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 |
EP17860932.7A EP3528431B1 (en) | 2016-10-11 | 2017-09-29 | Paxos protocol-based methods and apparatuses for online capacity expansion of distributed consistency system |
PCT/CN2017/104189 WO2018068661A1 (zh) | 2016-10-11 | 2017-09-29 | 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置 |
US16/382,135 US11271814B2 (en) | 2016-10-11 | 2019-04-11 | Online capacity-expanding and online capacity-reducing methods and apparatuses for distributed consensus system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610888948.4A CN107919977B (zh) | 2016-10-11 | 2016-10-11 | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107919977A true CN107919977A (zh) | 2018-04-17 |
CN107919977B CN107919977B (zh) | 2021-09-03 |
Family
ID=61892713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610888948.4A Active CN107919977B (zh) | 2016-10-11 | 2016-10-11 | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11271814B2 (zh) |
EP (1) | EP3528431B1 (zh) |
CN (1) | CN107919977B (zh) |
WO (1) | WO2018068661A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019148A (zh) * | 2018-09-07 | 2019-07-16 | 网联清算有限公司 | 数据库容量管理方法、装置、存储介质及计算机设备 |
CN111083192A (zh) * | 2019-11-05 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 数据共识方法、装置及电子设备 |
CN111431999A (zh) * | 2020-03-23 | 2020-07-17 | 杭州趣维科技有限公司 | 一种基于Paxos算法的云函数分布式系统 |
CN111464616A (zh) * | 2020-03-30 | 2020-07-28 | 招商局金融科技有限公司 | 自动调节应用负载服务数量的方法、服务器及存储介质 |
CN111935320A (zh) * | 2020-09-28 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 一种数据同步的方法、相关装置、设备以及存储介质 |
CN113472886A (zh) * | 2021-06-30 | 2021-10-01 | 华云数据控股集团有限公司 | 分布式集群系统及其控制方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107919977B (zh) | 2016-10-11 | 2021-09-03 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 |
CN111385800A (zh) * | 2018-12-29 | 2020-07-07 | 北京亿阳信通科技有限公司 | 一种lte容量均衡的载波调度方法和装置 |
US11641313B2 (en) * | 2019-11-21 | 2023-05-02 | Vmware, Inc. | Asynchronous liveness boosting of state machine replication |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102833355A (zh) * | 2012-09-22 | 2012-12-19 | 广东电子工业研究院有限公司 | 一种面向云计算的负载均衡系统及机制 |
CN104156367A (zh) * | 2013-05-14 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种搜索引擎的扩容方法及搜索服务系统 |
CN105260376A (zh) * | 2015-08-17 | 2016-01-20 | 北京京东尚科信息技术有限公司 | 用于集群节点缩扩的方法、设备和系统 |
CN105933391A (zh) * | 2016-04-11 | 2016-09-07 | 青岛海信传媒网络技术有限公司 | 一种节点扩容方法、装置及系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101042908B1 (ko) * | 2009-02-12 | 2011-06-21 | 엔에이치엔(주) | 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체 |
US8719415B1 (en) * | 2010-06-28 | 2014-05-06 | Amazon Technologies, Inc. | Use of temporarily available computing nodes for dynamic scaling of a cluster |
US8595546B2 (en) * | 2011-10-28 | 2013-11-26 | Zettaset, Inc. | Split brain resistant failover in high availability clusters |
CN103248656B (zh) * | 2012-02-10 | 2017-04-19 | 联想(北京)有限公司 | 一种实现数据读写的方法以及分布式文件系统、客户端 |
CN103294701B (zh) * | 2012-02-24 | 2016-12-28 | 联想(北京)有限公司 | 一种分布式文件系统以及数据处理的方法 |
CN103634375B (zh) * | 2013-11-07 | 2017-01-11 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
US10462210B2 (en) * | 2014-02-13 | 2019-10-29 | Oracle International Corporation | Techniques for automated installation, packing, and configuration of cloud storage services |
CN104486319B (zh) * | 2014-12-09 | 2018-06-19 | 上海爱数信息技术股份有限公司 | 适用于高可用系统的配置文件实时同步方法及其系统 |
US10187255B2 (en) * | 2016-02-29 | 2019-01-22 | Red Hat, Inc. | Centralized configuration data in a distributed file system |
CN107919977B (zh) | 2016-10-11 | 2021-09-03 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 |
-
2016
- 2016-10-11 CN CN201610888948.4A patent/CN107919977B/zh active Active
-
2017
- 2017-09-29 WO PCT/CN2017/104189 patent/WO2018068661A1/zh unknown
- 2017-09-29 EP EP17860932.7A patent/EP3528431B1/en active Active
-
2019
- 2019-04-11 US US16/382,135 patent/US11271814B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102833355A (zh) * | 2012-09-22 | 2012-12-19 | 广东电子工业研究院有限公司 | 一种面向云计算的负载均衡系统及机制 |
CN104156367A (zh) * | 2013-05-14 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种搜索引擎的扩容方法及搜索服务系统 |
CN105260376A (zh) * | 2015-08-17 | 2016-01-20 | 北京京东尚科信息技术有限公司 | 用于集群节点缩扩的方法、设备和系统 |
CN105933391A (zh) * | 2016-04-11 | 2016-09-07 | 青岛海信传媒网络技术有限公司 | 一种节点扩容方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
DIEGO ONGARO: "CONSENSUS: BRIDGING THEORY AND PRACTICE", 《HTTP://PURL.STANFORD.EDU/QR033XR6097》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019148A (zh) * | 2018-09-07 | 2019-07-16 | 网联清算有限公司 | 数据库容量管理方法、装置、存储介质及计算机设备 |
CN110019148B (zh) * | 2018-09-07 | 2021-05-25 | 网联清算有限公司 | 数据库容量管理方法、装置、存储介质及计算机设备 |
CN111083192A (zh) * | 2019-11-05 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 数据共识方法、装置及电子设备 |
CN111083192B (zh) * | 2019-11-05 | 2023-02-17 | 北京字节跳动网络技术有限公司 | 数据共识方法、装置及电子设备 |
CN111431999A (zh) * | 2020-03-23 | 2020-07-17 | 杭州趣维科技有限公司 | 一种基于Paxos算法的云函数分布式系统 |
CN111431999B (zh) * | 2020-03-23 | 2022-11-25 | 杭州小影创新科技股份有限公司 | 一种基于Paxos算法的云函数分布式系统 |
CN111464616A (zh) * | 2020-03-30 | 2020-07-28 | 招商局金融科技有限公司 | 自动调节应用负载服务数量的方法、服务器及存储介质 |
CN111935320A (zh) * | 2020-09-28 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 一种数据同步的方法、相关装置、设备以及存储介质 |
CN113472886A (zh) * | 2021-06-30 | 2021-10-01 | 华云数据控股集团有限公司 | 分布式集群系统及其控制方法 |
CN113472886B (zh) * | 2021-06-30 | 2024-03-22 | 华云数据控股集团有限公司 | 分布式集群系统及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018068661A1 (zh) | 2018-04-19 |
CN107919977B (zh) | 2021-09-03 |
US20190238414A1 (en) | 2019-08-01 |
EP3528431A1 (en) | 2019-08-21 |
EP3528431B1 (en) | 2023-11-01 |
EP3528431A4 (en) | 2019-10-09 |
US11271814B2 (en) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107919977A (zh) | 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置 | |
US11899684B2 (en) | System and method for maintaining a master replica for reads and writes in a data store | |
US10015042B2 (en) | System and method for data replication using a single master failover protocol | |
US9886348B2 (en) | System and method for adjusting membership of a data replication group | |
CN106302596B (zh) | 一种服务发现的方法和装置 | |
US9489434B1 (en) | System and method for replication log branching avoidance using post-failover rejoin | |
CN107040594A (zh) | 基于pbft的许可区块链节点准入的方法及装置 | |
CN110431533B (zh) | 故障恢复的方法、设备和系统 | |
US20140244581A1 (en) | System and method for log conflict detection and resolution in a data store | |
CN109688012A (zh) | 一种联盟链节点热备切换的方法 | |
CN107832138B (zh) | 一种扁平化的高可用namenode模型的实现方法 | |
US20120254342A1 (en) | Method for Providing Access to Data Items from a Distributed Storage System | |
US10114848B2 (en) | Ensuring the same completion status for transactions after recovery in a synchronous replication environment | |
CN102882927A (zh) | 一种云存储数据同步框架及其实现方法 | |
CN113535391B (zh) | 跨域大数据平台的分布式集群状态信息管理方法及系统 | |
WO2016082594A1 (zh) | 数据更新处理方法及装置 | |
CN110830582B (zh) | 一种基于服务器集群选主方法和装置 | |
CN114554593A (zh) | 数据处理方法及装置 | |
CN112037873B (zh) | 一种基于集群选主和共识机制的单点优化方法 | |
CN109725964A (zh) | 混合型框架的换肤方法、装置、电子设备 | |
WO2015196692A1 (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
US10944850B2 (en) | Methods, devices and systems for non-disruptive upgrades to a distributed coordination engine in a distributed computing environment | |
CN114363350B (zh) | 一种服务治理系统及方法 | |
CN113032189A (zh) | 一种故障域切换方法、装置和设备 | |
CN112083975A (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 |