发明内容
基于此,有必要针对上述技术问题,提供一种能够提高主备副本选举可靠性的主备副本选举方法、系统、计算机设备和存储介质。
一种主备副本选举方法,所述方法包括:
业务集群中满足选举条件的每个副本,从所述业务集群中选举候选主副本;
所述候选主副本向管理集群发送仲裁请求;所述仲裁请求用于指示所述管理集群,在根据所述仲裁请求判定所述业务集群所处朝代与所述候选主副本所处朝代一致时,更新所述业务集群所处的朝代,将所述候选主副本确定为更新后的朝代的主副本;
在确定所述更新后的朝代的主副本后,所述业务集群中除所述主副本外的每个副本向所述主副本发送朝代加入请求;
当根据所述朝代加入请求判定相应副本满足朝代加入条件时,所述主副本将满足所述朝代加入条件的副本确定为所述更新后的朝代的备副本。
在其中一个实施例中,所述业务集群中满足选举条件的每个副本,从所述业务集群中选举候选主副本,包括:
业务集群中满足选举条件的每个副本,将自身的优先级与所述业务集群中除自身外的每个副本的优先级进行比较;
当存在优先级与所述自身的优先级一致的副本时,将自身的副本特征与所述优先级一致的副本的副本特征进行比较;
根据优先级比较结果与特征比较结果从所述业务集群中选举候选主副本。
在其中一个实施例中,所述副本为备副本;所述业务集群中满足选举条件的每个副本,从所述业务集群中选举候选主副本,包括:
业务集群中的每个备副本检测所述业务集群中主副本的运行状态;
当判定所述运行状态为运行故障时,判定所述运行状态为运行故障的备副本从所述业务集群中的备副本中选举候选主副本;所述候选主副本为所述业务集群中运行正常的备副本。
在其中一个实施例中,所述业务集群中满足选举条件的每个副本,从所述业务集群中选举候选主副本,包括:
业务集群中的副本在启动后,向管理集群发送注册请求;所述注册请求包括所述副本自身的副本标识、位置信息与所述业务集群的集群标识;所述注册请求用于指示所述管理集群根据所述副本标识、所述位置信息与所述集群标识对相应副本进行注册;
已注册的每个副本从所述管理集群中获取所述业务集群中除自身外的已注册副本的位置信息,根据所述位置信息从所述业务集群中已注册的副本中选举候选主副本。
在其中一个实施例中,所述当根据所述朝代加入请求判定相应副本满足朝代加入条件时,所述主副本将满足所述朝代加入条件的副本确定为所述更新后的朝代的备副本,包括:
所述主副本根据所述朝代加入请求确定相应副本所处的朝代,以及所述相应副本的朝代更替标识信息;
当所述相应副本所处的朝代为所述主副本自身所处朝代的前一个朝代、且所述朝代更替标识信息与自身的朝代更替标识信息相匹配时,所述主副本判定所述相应副本满足朝代加入条件,并将满足所述朝代加入条件的副本确定为所述更新后的朝代的备副本。
在其中一个实施例中,所述业务集群包括多个副本集合;每个所述副本集合分别对应有候选主副本;所述候选主副本向管理集群发送仲裁请求,包括:
每个所述候选主副本分别向管理集群发送仲裁请求;发送的所述仲裁请求用于指示所述管理集群,按照所述仲裁请求的优先级,依次将每个仲裁请求对应的候选主副本所处朝代的朝代标识,与所述业务集群所处朝代的朝代标识进行比较,在判定当前比较的朝代标识一致时,更新所述业务集群所处的朝代与相应的朝代标识,将当前比较的仲裁请求对应的候选主副本确定为更新后的朝代的主副本,并停止上述比较操作。
在其中一个实施例中,所述方法还包括:
所述主副本接收新增副本对应于所述业务集群发送的集群扩充请求;所述集群扩充请求中携带有所述新增副本所处朝代的朝代标识;
当判定所述新增副本所处朝代的朝代标识与自身所处朝代的朝代标识一致时,所述主副本将所述新增副本作为备副本扩充至所述业务集群,并向所述管理集群发送朝代更新请求;所述朝代更新请求用于指示所述管理集群再次更新所述业务集群所处的朝代,并将所述主副本确定为再次更新后的朝代的主副本;
所述再次更新后的朝代的主副本,将所述业务集群中满足所述朝代加入条件的备副本确定为所述再次更新后的朝代的备副本。
一种主备副本选举系统,所述系统包括:业务集群与管理集群;所述业务集群包括副本;
所述业务集群中的每个副本,用于在满足选举条件时,从所述业务集群中选举候选主副本;
所述候选主副本,用于向管理集群发送仲裁请求;
所述管理集群,用于在根据所述仲裁请求判定所述业务集群所处朝代与所述候选主副本所处朝代一致时,更新所述业务集群所处的朝代,将所述候选主副本确定为更新后的朝代的主副本;
所述业务集群中除所述主副本外的每个副本,用于在确定所述更新后的朝代的主副本后,向所述主副本发送朝代加入请求;
所述主副本,用于当根据所述朝代加入请求判定相应副本满足朝代加入条件时,将满足所述朝代加入条件的副本确定为所述更新后的朝代的备副本。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
业务集群中满足选举条件的每个副本,从所述业务集群中选举候选主副本;
所述候选主副本向管理集群发送仲裁请求;所述仲裁请求用于指示所述管理集群,在根据所述仲裁请求判定所述业务集群所处朝代与所述候选主副本所处朝代一致时,更新所述业务集群所处的朝代,将所述候选主副本确定为更新后的朝代的主副本;
在确定所述更新后的朝代的主副本后,所述业务集群中除所述主副本外的每个副本向所述主副本发送朝代加入请求;
当根据所述朝代加入请求判定相应副本满足朝代加入条件时,所述主副本将满足所述朝代加入条件的副本确定为所述更新后的朝代的备副本。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
业务集群中满足选举条件的每个副本,从所述业务集群中选举候选主副本;
所述候选主副本向管理集群发送仲裁请求;所述仲裁请求用于指示所述管理集群,在根据所述仲裁请求判定所述业务集群所处朝代与所述候选主副本所处朝代一致时,更新所述业务集群所处的朝代,将所述候选主副本确定为更新后的朝代的主副本;
在确定所述更新后的朝代的主副本后,所述业务集群中除所述主副本外的每个副本向所述主副本发送朝代加入请求;
当根据所述朝代加入请求判定相应副本满足朝代加入条件时,所述主副本将满足所述朝代加入条件的副本确定为所述更新后的朝代的备副本。
上述主备副本选举方法、系统、计算机设备和存储介质,业务集群中的每个副本在满足选举条件时,从该业务集群中选举候选主副本,选举出的候选主副本向管理集群发送仲裁请求,管理集群在根据该仲裁请求判定所选举出的候选主副本所处朝代与相应业务集群所处朝代一致时,更新该业务集群所处的朝代,并将该候选主副本确定为更新后的朝代的主副本。这样,业务集群中存在满足选举条件的副本即可选举出候选主副本,根据仲裁请求能够进一步从候选主副本中选举出唯一的主副本,该主副本无需满足具有业务集群中超过一半以上副本投票的选举机制,从而在无需耗费大量部署成本、且通过更为复杂的部署操作部署更多的副本的情况下,能够提高主副本选举的可靠性,而通过比较候选主副本所处朝代与业务集群所处朝代来选举主副本,能够进一步提高主副本选举的可靠性。进一步地,更新后的朝代的主副本将业务集群中除自身外、且满足朝代加入条件的副本确定为该更新后的朝代的备副本,以剔除不满足朝代加入条件的副本,从而能够提高备副本选举的可靠性。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的主备副本选举方法,可以应用于如图1所示的应用环境中。如图1所示,业务集群110与管理集群120通过网络进行通信,业务集群110包括多个副本112,副本112的角色包括主副本、候选主副本与备副本。如图1所示,管理集群120中也可包括多个副本122。可以理解,当副本所运行于的服务器故障、操作系统故障、网络故障、应用故障或副本自身运行故障灯等场景下,会减少业务集群110中的副本数量,比如业务集群110可能仅包括一个或两个副本112。类似地,管理集群120中也可能由于类似地故障原因仅包括一个或两个副本122。其中,业务集群110包括多个业务设备,业务设包括但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和服务器,管理集群120包括多个管理设备,管理设备用于存储业务集群中的主备副本选举信息,包括但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和服务器。
业务集群可理解为包括多个副本的业务系统,管理集群可理解为包括多个副本的管理系统或存储系统。可以理解,多个副本是指具有同样功能的多个硬件模块、软件模块或计算机设备,该多个具有同样功能的副本形成一个集群统一对外提供服务,从而当一个副本因故障等原因而不可用时,系统将切换至其他可用副本,以保证系统的可用性。
在一个实施例中,图1所示的业务集群数量,以及业务集群与管理集群中的副本数量仅作为示例,并不用于具体限定。比如可有多个业务集群,该多个业务集群的主备副本选举信息可由同一个管理集群进行记录和管理。
在一个实施例中,管理集群中的副本之间可采用多数者投票机制来保证该管理集群自身主备副本选举的正确性。
在一个实施例中,如图2所示,提供了一种主备副本选举方法,该方法包括以下步骤:
S202,业务集群中满足选举条件的每个副本,从业务集群中选举候选主副本。
其中,选举条件是触发候选主副本选举流程的判断依据或条件。选举条件比如业务集群中的备副本检测到主副本故障,或者,业务集群中的副本成功启动等。候选主副本是可能被选举为主副本的副本。备副本、候选主副本与主副本为业务集群中副本的三种角色。主副本负责发起与组织业务集群中多个副本的协同工作,该多个副本中的备副本负责配合参与协同工作。
具体地,针对业务集群中的每个副本预配置有相应的选举条件。当满足选举条件时,业务集群中满足该选举条件的每个副本,从该业务集群中选举候选主副本。
在一个实施例中,业务集群中满足选举条件的每个副本,按照预配置的选举方式从业务集群中满足该选举条件的副本中选举候选主副本。预配置的选举方式,比如根据副本的优先级和/或副本特征选举候选主副本。
在一个实施例中,业务集群包括多个副本集合,每个副本集合中满足选举条件的每个副本,从相应副本集合中选举候选主副本,得到业务集群对应的多个候选主副本。
S204,候选主副本向管理集群发送仲裁请求;仲裁请求用于指示管理集群,在根据仲裁请求判定业务集群所处朝代与候选主副本所处朝代一致时,更新业务集群所处的朝代,将候选主副本确定为更新后的朝代的主副本。
其中,仲裁请求是用于触发朝代更新仲裁操作与主副本仲裁操作的请求,用于指示管理集群仲裁是否更新相应业务集群所处的朝代,并仲裁确定更新后的朝代的主副本。业务集群所处的朝代可理解为届、周期与期等,用于区分业务集群的更新过程。
具体地,当按照本申请中一个或多个实施例中提供的选举方式,从业务集群中选举出候选主副本后,所选举出的候选主副本触发仲裁请求,并将仲裁请求发送至管理集群。管理集群根据仲裁请求确定相应候选主副本所处朝代,以及该候选主副本所属业务集群所处的朝代,并将候选主副本所处朝代与相应业务集群所处朝代进行比较。当判定候选主副本所处朝代与相应业务集群所处朝代一致时,管理集群更新该业务集群所处的朝代,并将该候选主副本确定为更新后的朝代的主副本。
在一个实施例中,仲裁请求中包括候选主副本的副本标识与候选主副本所处朝代的朝代标识。管理集群解析仲裁请求得到候选主副本对应的副本标识与朝代标识,根据副本标识确定候选主副本的所属业务集群,根据该业务集群对应的朝代标识确定该业务集群所处朝代,根据候选主副本对应的朝代标识确定该候选主副本所处朝代。朝代标识用于标识朝代,具体可以是数字、字母与符号等中的至少一种组成的字符串。
在一个实施例中,仲裁请求中还包括更新后的朝代标识。管理集群在根据仲裁请求更新业务集群所处朝代后,将仲裁请求中指定的更新后的朝代标识确定为更新后的朝代的朝代标识。举例说明,当候选主副本所处朝代的朝代标识为T时,相应更新后的朝代标识可以是T+1。
在一个实施例中,当根据候选主副本发送的仲裁请求更新相应业务集群所处朝代,并将该候选主副本确定为更新后的朝代的主副本后,管理集群将该候选主副本的副本标识作为主副本标识记录在本地。可以理解,管理集群将相应集群仲裁结果中的主副本标识更新为该新选举出的主副本的副本标识。
在一个实施例中,当在一次主备副本选举流程中一个业务集群对应有多个候选主副本时,该多个候选主副本均会向管理集群发送仲裁请求。管理集群根据仲裁请求触发的仲裁过程具有事务性,该多个候选主副本在一次主备副本选举流程中均请求更新业务集群的朝代,但只有一个会成功,并将请求成功的候选主副本确定为更新后的朝代的主副本。
在一个实施例中,业务集群中的副本启动、副本故障或者新增副本,均会触发该业务集群的朝代的更新。这样,当业务集群中存在副本更新时均会触发朝代更新操作,以保证业务集群中各副本所处朝代的一致性,从而能够保证主备副本选举的可靠性。
S206,在确定更新后的朝代的主副本后,业务集群中除主副本外的每个副本向主副本发送朝代加入请求。
其中,朝代加入请求是请求加入主副本所处朝代的请求。朝代加入请求具体可包括触发该朝代加入请求的副本所处朝代的朝代标识,以及该副本对应的朝代更替标识信息。朝代更替标识信息是用于表征副本是否参与过朝代更替标识信息。
具体地,在管理集群根据候选主副本发送的仲裁请求更新相应业务集群所处朝代,并将该候选主副本确定为更新后的朝代的主副本后,业务集群中除主副本外的每个副本分别触发生成朝代加入请求,并将所生成的朝代加入请求发送至所选举出的主副本,以使得主副本根据朝代加入请求判断是否允许相应副本加入自身所处的朝代。
在一个实施例中,管理集群在确定更新后的朝代的主副本后,向相应业务集群中除主副本外的每个副本推送主副本标识和/或主副本对应的位置信息,以使得每个副本根据主副本标识和/或位置信息,分别向主副本发送朝代加入请求。
在一个实施例中,业务集群中除主副本外的每个副本按照预设周期定期轮询管理集群,以从管理集群获取更新后的朝代的主副本对应的主副本标识与位置信息。
在一个实施例中,触发朝代加入请求的副本可以是初始启动的副本,也可以是检测到主副本故障的备副本,具体可根据触发主备副本选举流程的选举条件确定。
S208,当根据朝代加入请求判定相应副本满足朝代加入条件时,主副本将满足朝代加入条件的副本确定为更新后的朝代的备副本。
具体地,主副本根据所接收到的朝代加入请求判断相应副本是否满足预配置的朝代加入条件。当判定副本满足朝代加入条件时,主副本则允许该满足朝代加入条件的副本加入自身所处朝代,并将该副本确定为自身的备副本,也即将该副本确定为更新后的朝代的备副本。主副本针对每个发起朝代加入请求的副本分别执行上述判断流程,并将满足朝代加入条件的每个副本作为备副本加入自身所处朝代。
在一个实施例中,管理集群解析所接收到的朝代加入请求,得到相应副本所处朝代的朝代标识与相应的朝代更替标识信息,并根据解析得到的朝代标识与朝代更替标识信息判断是否允许相应副本加入更新后的朝代。
在一个实施例中,主副本根据更新后的朝代的备副本,更新管理集群中与自身所处业务集群对应的集群仲裁结果中的备副本列表。
上述主备副本选举方法,业务集群中的每个副本在满足选举条件时,从该业务集群中选举候选主副本,选举出的候选主副本向管理集群发送仲裁请求,管理集群在根据该仲裁请求判定所选举出的候选主副本所处朝代与相应业务集群所处朝代一致时,更新该业务集群所处的朝代,并将该候选主副本确定为更新后的朝代的主副本。这样,业务集群中存在满足选举条件的副本即可选举出候选主副本,根据仲裁请求能够进一步从候选主副本中选举出唯一的主副本,该主副本无需满足具有业务集群中超过一半以上副本投票的选举机制,从而在无需耗费大量部署成本、且通过更为复杂的部署操作部署更多的副本的情况下,能够提高主副本选举的可靠性,而通过比较候选主副本所处朝代与业务集群所处朝代来选举主副本,能够进一步提高主副本选举的可靠性。进一步地,更新后的朝代的主副本将业务集群中除自身外、且满足朝代加入条件的副本确定为该更新后的朝代的备副本,以剔除不满足朝代加入条件的副本,从而能够提高备副本选举的可靠性。
在一个实施例中,步骤S202包括:业务集群中满足选举条件的每个副本,将自身的优先级与业务集群中除自身外的每个副本的优先级进行比较;当存在优先级与自身的优先级一致的副本时,将自身的副本特征与优先级一致的副本的副本特征进行比较;根据优先级比较结果与特征比较结果从业务集群中选举候选主副本。
其中,副本特征是副本对应的特征信息,具体可包括副本对应的副本标识、位置信息、硬件特征和软件特征等中的一种或多种。副本标识可用于标识副本,具体可以是指副本名称,不同副本对应的副本标识可比较大小,比如副本标识a比副本标识b大。位置信息用于表征副本在网络中所处的位置,具体可包括IP(Internet Protocol,网际互连协议)地址与端口。硬件特征比如CPU(central processing unit,中央处理器)大小。
具体地,业务集群中满足选举条件的每个副本,将自身的优先级与该业务集群中除自身以外的每个副本的优先级进行比较。当业务集群中除自身外的每个副本的优先级与自身的优先级均不一致时,根据优先级比较结果从业务集群中选举优先级最高或最低的副本作为候选主副本。当业务集群中除自身外的副本中存在优先级与自身的优先级一致的副本时,则将该优先级与自身的优先级一致的副本的副本特征与自身的副本特征进行进一步比较,并根据特征比较结果与优先级比较结果从业务集群中选举候选主副本。可以理解,根据特征比较结果与优先级比较结果选举出的候选主副本,是该业务集群中优先级最高或最低的副本,或者,是该业务集群中优先级最高(或最低)、且副本特征最大(或最小)的副本。
在一个实施例中,业务集群中满足选举条件的每个副本分别执行上述候选主副本选举流程,以确定是否选举自身作为候选主副本。同一业务集群中的每个副本按照相同的选举方式选举候选主副本,比如均选举优先级最高的副本作为候选主副本,以保证每个副本所选举出的候选主副本的一致性。
在一个实施例中,业务集群中满足选举条件的每个副本,将自身的优先级依次与业务集群中除自身外的副本的优先级进行比较,当判定存在优先级比自身的优先级低或者高的副本时,该执行比较操作的副本则停止优先级比较流程。这样,在保证能够选举出候选主副本的情况下,避免不会选举自身为候选主副本的副本额外执行不必要的优先级比较流程。
在一个实施例中,业务集群中满足选举条件的每个副本,从管理集群获取业务集群中除自身外的每个副本的位置信息,并基于位置信息与相应副本进行通信交互,通过通信交互获取相应副本的优先级,还可获取相应副本的副本特征,以便于基于所获取到的优先级与副本特征按照上述选举方式进行候选主副本选举。
在一个实施例中,业务集群中满足选举条件的每个副本,从管理集群中获取业务集群中除自身外的每个副本对应的优先级和副本特征,这样,无需与每个副本分别进行通信交互即可获取相应的优先级与副本特征,能够提高候选主副本的选举效率。可以理解,上述获取待比较的副本的优先级与副本特征的方式,并不用于具体限定。
在一个实施例中,当业务集群中满足选举条件的副本只有一个时,该满足选举条件的副本将自身确定为候选主副本。这样,候选主副本的选举不会受限于业务集群中满足选举条件的副本数量。
上述实施例中,结合副本的优先级与副本特征从业务集群中选举候选主副本,能够保证每个副本选举出的候选主副本的一致性,从而能够提高主备副本选举的可靠性。
在一个实施例中,副本为备副本;步骤S202包括:业务集群中的每个备副本检测业务集群中主副本的运行状态;当判定运行状态为运行故障时,判定运行状态为运行故障的备副本从业务集群中的备副本中选举候选主副本;候选主副本为业务集群中运行正常的备副本。
其中,运行状态包括运行正常与运行故障,运行正常表征主副本处于正常运行状态,运作故障表征主副本故障或者因网络等原因与主副本断开连接。
具体地,当通过前一次执行的主备副本选举操作从业务集群中选举出主副本与备副本后,所选举出的备副本检测业务集群中主副本的运行状态。当判定主副本的运行状态为运行故障时,判定主副本运行故障的备副本按照上述一个或多个实施例中提供的选举方式,从自身所处业务集群中与自身处于相同朝代且运行正常的备副本中选举候选主副本。
在一个实施例中,业务集群中处于相同朝代的主副本与备副本,以及备副本之间存在心跳机制,并通过心跳同步相互判断运行状态。比如,当备副本在预设时长内没有检测到主副本的心跳同步时,该备副本则判定主副本的运行状态为运行故障。还比如,备副本在预设时长内没有检测到主副本的心跳同步,则尝试连接重试,当重试预设次数仍然未与主副本建立连接,则判定主副本的运行状态为运行故障。这样,当由于网络暂时异常导致心跳同步失败时,可通过连接重试来避免故障误判,从而避免因误判触发的主备副本选举流程。
在一个实施例中,判定主副本运行故障的每个备副本,从业务集群中与自身保持心跳同步的备副本中选举候选主副本,以保证选举出的候选主副本为运行正常的备副本,从而能够保证选举出的主副本为运行正常的副本。
上述实施例中,当判定主副本运行故障时,从业务集群中运行正常的备副本中选举候选主副本,这样,只要业务集群中存在运行正常的备副本即可选举出候选主副本,无需受限于业务集群中运行正常的备副本数量,能够保证候选主副本选举的可靠性。
在一个实施例中,步骤S202包括:业务集群中的副本在启动后,向管理集群发送注册请求;注册请求包括副本自身的副本标识、位置信息与业务集群的集群标识;注册请求用于指示管理集群根据副本标识、位置信息与集群标识对相应副本进行注册;已注册的每个副本从管理集群中获取业务集群中除自身外的已注册副本的位置信息,根据位置信息从业务集群中已注册的副本中选举候选主副本。
其中,注册请求是用于触发副本注册操作的请求,具体可包括待注册的副本自身的副本标识、位置信息与自身所处业务集群的集群标识。
具体地,在副本启动之前,针对每个副本预配置有相应的副本标识、位置信息与所属业务集群的集群标识。副本在成功启动后,根据自身对应的副本标识、位置信息于集群标识触发生成注册请求,并将注册请求发送至管理集群。管理集群解析所接收到的注册请求,得到待注册的副本对应的副本标识、位置信息与集群标识,并将解析得到的副本标识、位置信息与集群标识对应记录在本地,以完成对副本的注册。当成功启动的副本在管理集群中注册完成后,已注册的每个副本从管理集群中获取自身所处业务集群中除自身外的已注册副本的位置信息,根据位置信息与相应副本进行通信交互,通过通信交互获取其他已注册副本的优先级和/或副本特征,并按照上述一个或多个实施例中提供的选举方式从已注册的副本中选举候选主副本。
在一个实施例中,当完整主备副本选举操作后,主副本与备副本,以及备副本之间通过预先获取的位置信息进行通信交互。
在一个实施例中,管理集群针对每个业务集群预配置有初始的朝代标识。已注册的每个副本从管理集群中获取自身所处朝代的朝代标识。管理集群根据注册请求在完成对相应副本的注册后,根据该副本对应的集群标识获取相应业务集群所处朝代的朝代标识,将所获取的朝代标识确定为该副本所处朝代的朝代标识,并将朝代标识反馈至相应副本。
在一个实施例中,管理集群将同属于一个业务集群的副本对应的副本名称与位置信息,与该业务集群对应的集群标识关联存储。管理集群针对每个业务集群在本地存储有集群信息、集群仲裁结果与集群朝代标识等三条记录。集群信息包括业务集群的集群标识,以及业务集群中已注册的每个副本的副本标识与位置信息。集群仲裁结果包括业务集群的集群标识,以及业务集群当前的主副本标识与备副本列表。集群朝代标识是指业务集群当前所处朝代的朝代标识,不同朝代标识分别标识业务集群演进的不同时期。
在一个实施例中,当判定业务集群中的副本运行故障,或者,判定副本退出其所属业务集群当前所处朝代时,管理集群会在本地删除该副本相应的注册信息,以避免其在下一次主备副本选举操作中影响选举的可靠性。
上述实施例中,副本在启动后会触发携带副本标识、位置信息与集群标识的注册请求,以使得管理集群根据注册请求对相应副本进行注册,这样,当副本所处业务集群和/或位置信息变更时,通过该种方式仍然能够保证候选主副本选举的可靠性,从而能够保证主备副本选举的可靠性。
在一个实施例中,步骤S208包括:主副本根据朝代加入请求确定相应副本所处的朝代,以及相应副本的朝代更替标识信息;当相应副本所处的朝代为主副本自身所处朝代的前一个朝代、且朝代更替标识信息与自身的朝代更替标识信息相匹配时,主副本判定相应副本满足朝代加入条件,并将满足朝代加入条件的副本确定为更新后的朝代的备副本。
其中,朝代更替标识信息具体可包括相应副本已参与朝代更替的次数,或者,相应副本是否已参与朝代更替的标识信息,比如,已参与朝代更替的副本对应的朝代更替标识信息可以是1或YES,尚未参与朝代更替的副本对应的朝代更替标识信息可以是0或NO。朝代加入条件是用于判定是否允许相应副本加入更新后的朝代的判断依据或条件,具体可以是相应副本所处朝代为主副本所处朝代的前一个朝代,且相应副本与主副本均为第一次朝代更替或均为非第一次朝代更替。
具体地,主副本解析所接收到的朝代加入请求得到相应副本所处朝代的朝代标识,以及该副本对应的朝代更替标识信息。主副本将解析得到的朝代标识与自身所处朝代的朝代标识进行比较,以判断相应副本所处朝代是否为自身所处朝代的前一个朝代,并将解析得到的朝代更替标识信息与自身对应的朝代更替标识信息进行匹配。当判定相应副本所处朝代为主副本自身所处朝代的前一个朝代、且该副本的朝代更替标识信息与主副本自身的朝代更替标识信息相匹配时,主副本则判定该副本满足朝代加入条件,并将满足朝代加入条件的副本确定为更新后的朝代的备副本。
在一个实施例中,朝代加入条件包括第一加入条件与第二加入条件,第一加入条件比如请求加入更新后的朝代的副本处于主副本所处朝代额度前一个朝代,第二加入条件比如请求加入更新后的朝代的副本与主副本均为已参与过朝代更替,或者,均未参与过朝代更替。经过主副本许可后的副本才能进入与主副本同样的朝代,主副本将不满足第一加入条件和/或第二加入条件的副本,判定为过期副本或干扰副本,并拒绝其加入自身所处朝代。
图4为一个实施例中主副本筛选请求加入自身所处朝代的备副本的原理图。如图4所示,业务集群已经历过朝代1至朝代2的更替,并由候选主副本e开了新的朝代3,候选主副本e作为朝代3的主副本。如图4所示,业务集群还包括处于朝代1的副本f,处于朝代2的副本g,以及零时加入朝代2的副本c。由此,副本g同时满足第一加入条件和第二加入条件,可以进入朝代3。副本f不满足第一加入条件,副本c不满足第二加入条件,因此副本f和c都会退出,而副本e和g均位于朝代3,副本e作为朝代3的主副本,副本g作为朝代3的备副本。
上述实施例中,只有相邻朝代的副本才可以成为下一朝代的主副本,能够保证主副本更替时的合法性,而只有相邻朝代的副本可以加入主副本所在朝代,能够提高主备副本选举方式的抗干扰性,能够防止选举过程被其他残留副本或错误操作干扰,从而能够提高主备副本选举的可靠性。
在一个实施例中,业务集群包括多个副本集合;每个副本集合分别对应有候选主副本;步骤S204包括:每个候选主副本分别向管理集群发送仲裁请求;发送的仲裁请求用于指示管理集群,按照仲裁请求的优先级,依次将每个仲裁请求对应的候选主副本所处朝代的朝代标识,与业务集群所处朝代的朝代标识进行比较,在判定当前比较的朝代标识一致时,更新业务集群所处的朝代与相应的朝代标识,将当前比较的仲裁请求对应的候选主副本确定为更新后的朝代的主副本,并停止上述比较操作。
其中,副本集合是由至少一个副本组成的集合。仲裁请求的优先级可根据仲裁请求的接收顺序确定,先接收到的仲裁请求的优先级高于后接受到的仲裁请求的优先级。
具体地,由于网络异常或网络分区等因素,业务集群中的副本形成多个副本集合,得到业务集群对应的多个副本集合。每个副本集合中满足选举条件的副本,从自身所属副本集合中选举候选主副本,从而得到业务集群对应的多个候选主副本。业务集群对应的每个候选主副本分别向管理集群发送仲裁请求。管理集群在接收到业务集群中的候选主副本发送的仲裁请求后,按照仲裁请求的优先级由高至低的顺序,依次将每个仲裁请求对应的候选主副本所处朝代的朝代标识,与相应业务集群所处朝代的朝代标识进行比较,在判定当前比较的候选主副本所处朝代的朝代标识与业务集群所处朝代的朝代标识一致时,也即判定当前比较的候选主副本所处朝代与相应业务集群所处朝代一致时,更新该业务集群所处的朝代与相应的朝代标识,将该所处朝代与业务集群所处朝代一致的候选主副本确定为更新后的朝代的主副本,并停止上述比较操作。
在一个实施例中,每个候选主副本发送的仲裁请求中,包括该候选主副本的副本标识、该候选主副本所处朝代的朝代标识与更新后的朝代标识。管理集群根据当前比较的仲裁请求中的副本标识从本地获取相应业务集群所处朝代的朝代标识,当该业务集群所处朝代的朝代标识与该仲裁请求中指定的候选主副本所处朝代的朝代标识一致时,更新该业务集群所处的朝代,并将该仲裁请求中指定的更新后的朝代标识确定为更新后的朝代的朝代标识。在根据一个候选主副本发送的仲裁请求成功更新业务集群所处朝代后,管理集群在根据由与该候选主副本所处朝代一致的其他候选主副本发送的仲裁请求,继续执行上述仲裁流程时,由于业务集群所处朝代及相应的朝代标识已更新,则此时比较的候选主副本所处朝代与业务集群所处朝代不一致,故不会更新业务集群所处的朝代。这样,基于朝代标识实现统一业务集群的朝代更新的多版本并发控制,能够保证朝代更新与主副本选举的可靠性。
在一个实施例中,当优先级最高的仲裁请求对应的候选主副本所处朝代的朝代标识,与业务集群所处朝代的朝代标识不一致时,则不会根据该仲裁请求更新该业务集群所处的朝代,并根据下一优先级的仲裁请求继续执行上述仲裁流程,直至更新业务集群所处朝代时,停止迭代执行的仲裁流程。
在一个实施例中,业务集群中未被管理集群仲裁为主副本的候选主副本,作为副本向主副本发送朝代加入请求,以加入更新后的朝代。
在一个实施例中,每个副本集合中满足选举条件的副本,按照本申请一个或多个实施例中提供的选举方式,从自身所属副本集合中选举候选主副本,在此不再赘述。
图3为一个实施例中基于业务集群中的多个副本集合进行主备副本选举的原理图。如图3所示,业务集群包括副本集合1与副本集合2,副本集合1中包括副本a、b与c,副本集合2中包括副本e、f与g。按照本申请提供的选举方式,从副本集合1中选举副本a为候选主副本,并从副本集合2汇总选举副本e为候选主副本。管理集群在本地存储有业务集群对应的集群信息、集群仲裁结果与集群朝代标识,如图3所示,更新前的记录中,集群信息包括[a,b,c,e,f,g],集群仲裁结果包括[主副本:?,备副本列表:?],其中,符号“?”表征待确定的主副本标识与各个备副本标识,集群朝代标识为1表征业务集群当前所处朝代的朝代标识为1。
副本集合1中的候选主副本a与副本集合2中的候选主副本e,分别向管理集群发送仲裁请求。若管理集群根据候选主副本a发送的仲裁请求,成功更新业务集群所处的朝代,则将集群朝代标识更新为2,将候选主副本a确定为更新后的朝代的主副本,并更新至集群仲裁结果中。进一步地,当管理集群根据候选主副本e发送的仲裁请求尝试更新业务集群所处朝代时,由于候选主副本e所处朝代的朝代标识为1,而业务集群所处朝代的朝代标识为2,管理集群则不会根据候选主副本e发送的仲裁请求更新业务集群所处朝代。候选主副本e通过向主副本a发送朝代加入请求的方式,请求作为备副本加入更新后的朝代。业务集群中的副本b、c、f与g也分别向主副本a请求作为备副本加入更新后的朝代。当主副本a允许副本b、c、e、f与g作为备副本加入自身所处朝代时,将副本b、c、e、f与g更新至集群仲裁结果中的备副本列表中。
如图3,更新后的记录中,集群信息包括[a,b,c,e,f,g],集群仲裁结果包括[主副本:a,备副本列表:b,c,e,f,g],集群朝代标识为2表征业务集群当前所处朝代的朝代标识为2,也即表征业务集群所处朝代由朝代1更新至朝代2。
上述实施例中,因网络异常或网络分区等原因导致业务集群中的副本被划分为多个副本集合时,基于朝代标识与冲裁信息校验机制仍然能够实现主副本的选举,且保证主副本的唯一性,从而能够提高主备副本选举的可靠性。
在一个实施例中,上述主备副本选举方法还包括:主副本接收新增副本对应于业务集群发送的集群扩充请求;集群扩充请求中携带有新增副本所处朝代的朝代标识;当判定新增副本所处朝代的朝代标识与自身所处朝代的朝代标识一致时,主副本将新增副本作为备副本扩充至业务集群,并向管理集群发送朝代更新请求;朝代更新请求用于指示管理集群再次更新业务集群所处的朝代,并将主副本确定为再次更新后的朝代的主副本;再次更新后的朝代的主副本,将业务集群中满足朝代加入条件的备副本确定为再次更新后的朝代的备副本。
其中,集群扩充请求是用于触发业务集群扩充操作的请求,用于请求主副本扩充业务集群中的副本数量。
具体地,当需要扩充业务集群中的副本数量时,可启动新的副本作为新增副本。新增副本根据自身对应的副本标识、位置信息与集群标识在管理集群中进行注册,从管理集群中获取该集群标识对应的朝代标识,并将所获取的朝代标识确定为自身所处朝代的朝代标识。新增副本触发生成携带自身所处朝代的朝代标识的集群扩充请求,并将所生成的集群扩充请求发送至集群标识对应的业务集群中当前的主副本。主副本解析所接收到的集群扩充请求得到新增副本所处朝代的朝代标识,将解析得到的朝代标识与自身所处朝代的朝代标识进行比较。当判定新增副本所处朝代的朝代标识与自身所处朝代的朝代标识一致时,也即判定新增副本所处朝代与自身所处朝代一致时,将该新增副本作为备副本扩充至自身所属业务集群中,以实现业务集群中副本数量的扩充,并向管理集群发送朝代更新请求。
管理集群解析朝代更新请求得到主副本所处朝代的朝代标识、主副本标识与再次更新后的朝代的朝代标识。当判定解析得到的主副本所处朝代的朝代标识与相应业务集群在本地对应存储的朝代标识一致时,管理集群根据朝代更新请求再次更新该业务集群所处的朝代,将发起朝代更新请求的主副本确定为再次更新后的朝代的主副本,并将朝代更新请求中指定的再次更新后的朝代的朝代标识,确定为再次更新后的朝代的朝代标识。在确定再次更新后的朝代的主副本后,扩充后的业务集群中除主副本外的每个备副本分别向该相互副本发起朝代加入请求。主副本根据朝代加入请求判断相应备副本是否满足预配置的朝代加入条件,并将满足朝代加入条件的备副本确定加入再次更新后的朝代的备副本,也即将扩充后的业务集群中满足朝代加入条件的备副本加入再次更新后的朝代。
上述实施例中,通过新增副本并触发集群扩充请求,来请求主副本扩充业务集群中的副本数量,且只要新增副本与主副本所处相同朝代,主副本则会将新增副本扩充至业务集群中,并针对扩充后的业务集群开启新的朝代,以在实现集群副本规模可动态扩展的情况下,保证后续主备副本选举的可靠性。
如图5所示,在一个实施例中,提供了一种主备副本选举方法,该方法具体可包括以下步骤:
S502,业务集群中满足选举条件的每个副本,将自身的优先级与业务集群中除自身外的每个副本的优先级进行比较。
S504,当存在优先级与自身的优先级一致的副本时,将自身的副本特征与优先级一致的副本的副本特征进行比较。
S506,根据优先级比较结果与特征比较结果从业务集群中选举候选主副本。
S508,候选主副本向管理集群发送仲裁请求;仲裁请求用于指示管理集群,在根据仲裁请求判定业务集群所处朝代与候选主副本所处朝代一致时,更新业务集群所处的朝代,将候选主副本确定为更新后的朝代的主副本。
S510,在确定更新后的朝代的主副本后,业务集群中除主副本外的每个副本向主副本发送朝代加入请求。
S512,主副本根据朝代加入请求确定相应副本所处的朝代,以及相应副本的朝代更替标识信息。
S514,当相应副本所处的朝代为主副本自身所处朝代的前一个朝代、且朝代更替标识信息与自身的朝代更替标识信息相匹配时,主副本判定相应副本满足朝代加入条件,并将满足朝代加入条件的副本确定为更新后的朝代的备副本。
上述实施例中,每个副本基于优先级与副本特征选举候选主副本,以保证候选主副本的一致性,由管理集群根据候选主副本的仲裁请求确定是否更新相应业务集群所处朝代,并仲裁出更新后的朝代的主副本,以保证主副本选举的可靠性,由选举出的主副本根据朝代标识与朝代更替标识信息选举加入更新后的朝代的备副本,以保证备副本选举的可靠性。而且,上述主备副本选举方式中不依赖于具体的业务处理过程,具有良好的通用性,且住副本的选举不依赖于多数者投票机制,能够在降低副本部署成本的情况下,保证选举的可靠性。
应该理解的是,虽然图2与图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2与图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图1所示,提供了一种主备副本选举系统,该系统包括:业务集群与管理集群;业务集群包括副本;副本的角色包括备副本、候选主副本与主副本;其中,
业务集群中的每个副本,用于在满足选举条件时,从业务集群中选举候选主副本;
候选主副本,用于向管理集群发送仲裁请求;
管理集群,用于在根据仲裁请求判定业务集群所处朝代与候选主副本所处朝代一致时,更新业务集群所处的朝代,将候选主副本确定为更新后的朝代的主副本;
业务集群中除主副本外的每个副本,用于在确定更新后的朝代的主副本后,向主副本发送朝代加入请求;
主副本,用于当根据朝代加入请求判定相应副本满足朝代加入条件时,将满足朝代加入条件的副本确定为更新后的朝代的备副本。
在一个实施例中,业务集群中的每个副本,还用于在满足选举条件时,将自身的优先级与业务集群中除自身外的每个副本的优先级进行比较;当存在优先级与自身的优先级一致的副本时,将自身的副本特征与优先级一致的副本的副本特征进行比较;根据优先级比较结果与特征比较结果从业务集群中选举候选主副本。
在一个实施例中,副本为备副本;业务集群中的每个备副本,还用于检测业务集群中主副本的运行状态;当判定运行状态为运行故障时,从业务集群中的备副本中选举候选主副本;候选主副本为业务集群中运行正常的备副本。
在一个实施例中,业务集群中的副本,还用于在自身启动后,向管理集群发送注册请求;注册请求包括副本自身的副本标识、位置信息与业务集群的集群标识;
管理集群,还用于根据副本标识、位置信息与集群标识对相应副本进行注册;
已注册的每个副本,用于从管理集群中获取业务集群中除自身外的已注册副本的位置信息,根据位置信息从业务集群中已注册的副本中选举候选主副本。
在一个实施例中,主副本,还用于根据朝代加入请求确定相应副本所处的朝代,以及相应副本的朝代更替标识信息;当相应副本所处的朝代为主副本自身所处朝代的前一个朝代、且朝代更替标识信息与自身的朝代更替标识信息相匹配时,判定相应副本满足朝代加入条件,并将满足朝代加入条件的副本确定为更新后的朝代的备副本。
在一个实施例中,业务集群包括多个副本集合;每个副本集合分别对应有候选主副本;每个候选主副本,用于分别向管理集群发送仲裁请求;管理集群,还用于按照仲裁请求的优先级,依次将每个仲裁请求对应的候选主副本所处朝代的朝代标识,与业务集群所处朝代的朝代标识进行比较,在判定当前比较的朝代标识一致时,更新业务集群所处的朝代与相应的朝代标识,将当前比较的仲裁请求对应的候选主副本确定为更新后的朝代的主副本,并停止上述比较操作。
在一个实施例中,主副本,还用于接收新增副本对应于业务集群发送的集群扩充请求;集群扩充请求中携带有新增副本所处朝代的朝代标识;当判定新增副本所处朝代的朝代标识与自身所处朝代的朝代标识一致时,将新增副本作为备副本扩充至业务集群,并向管理集群发送朝代更新请求;朝代更新请求用于指示管理集群再次更新业务集群所处的朝代,并将主副本确定为再次更新后的朝代的主副本;再次更新后的朝代的主副本,用于将业务集群中满足朝代加入条件的备副本确定为再次更新后的朝代的备副本。
关于主备副本选举系统的具体限定可以参见上文中对于主备副本选举方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是组成业务集群的业务设备或者组成管理集群的管理设备,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。计算机设备为业务设备时,该计算机设备的数据库用于存储副本所处朝代的朝代标识与副本的角色。计算机设备为管理设备时,该该计算机设备的数据库用于存储业务集群的主备副本选举信息。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种主备副本选举方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各个实施例中的主备副本选举方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个实施例中的主备副本选举方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。