CN104348906A - 一种分布式系统中数据协商方法及装置 - Google Patents

一种分布式系统中数据协商方法及装置 Download PDF

Info

Publication number
CN104348906A
CN104348906A CN201410469623.3A CN201410469623A CN104348906A CN 104348906 A CN104348906 A CN 104348906A CN 201410469623 A CN201410469623 A CN 201410469623A CN 104348906 A CN104348906 A CN 104348906A
Authority
CN
China
Prior art keywords
resolution
node
numbering
cluster
maximum
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
Application number
CN201410469623.3A
Other languages
English (en)
Other versions
CN104348906B (zh
Inventor
张真波
汪周林
李登
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Gaohang Intellectual Property Operation Co ltd
Haining hi tech Zone Science and Innovation Center Co.,Ltd.
Original Assignee
Shenzhen Huawei Communication Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Huawei Communication Technologies Co Ltd filed Critical Shenzhen Huawei Communication Technologies Co Ltd
Priority to CN201410469623.3A priority Critical patent/CN104348906B/zh
Publication of CN104348906A publication Critical patent/CN104348906A/zh
Application granted granted Critical
Publication of CN104348906B publication Critical patent/CN104348906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/08Access point devices
    • H04W88/085Access point devices with remote components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/02Arrangements for detecting or preventing errors in the information received by diversity reception
    • H04L1/06Arrangements for detecting or preventing errors in the information received by diversity reception using space diversity
    • H04L1/0618Space-time coding
    • H04L1/0637Properties of the code
    • H04L1/065Properties of the code by means of convolutional encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及计算机网络领域,尤其涉及一种分布式系统中数据协商方法及装置,用以解决现有技术中由于集群非主节点数据版本落后,无法参与后续数据协商,影响系统业务的正常进行的问题。本发明实施例提供的一种数据协商方法包括:在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。

Description

一种分布式系统中数据协商方法及装置
技术领域
本发明涉及计算机网络领域,尤其涉及一种分布式系统中数据协商方法及装置。
背景技术
目前,分布式系统中节点之间通过数据协商来保证系统中大多数节点数据的一致性,系统内相互通信的各个节点形成一个集群;Paxos算法是分布式系统中常用的数据一致性算法。
在Paxos算法中,不同决议的决议编号需要满足偏序关系,为了满足这种关系,集群主节点一般使用递增的数值作为决议编号。节点之间进行数据协商的过程一般是:集群主节点将当前需要协商的决议(value)的决议编号设为n,向系统内的各集群非主节点发送开始协商消息,其中包含决议编号n和决议;集群非主节点在接收到集群主节点发送的开始协商消息后,若确认该决议的决议编号n为本节点已批准的决议的最大决议编号加1后的编号,则向集群主节点回复批准该决议;集群主节点在系统内大多数非主节点批准该决议后,确认协商一致,则向批准该决议的大多数集群非主节点发送提交(commit)消息,并在自己节点提交决议(也即根据该决议的内容,对自己节点的数据进行相关处理,比如添加、删除或修改数据等);各集群非主节点在接收到集群主节点发送的提交消息后,在自己节点提交决议(也即根据该决议的内容,对自己节点的数据进行相关处理,比如添加、删除或修改数据等)。
从上述协商过程可知,集群主节点只有在系统内大多数非主节点都批准该决议后,才会发送提交消息,也即,只有大多数集群非主节点都批准该决议后,才意味着该决议的协商成功,各节点才能进一步在自己节点提交决议。但是,在协商过程中,个别集群非主节点的通信链路可能会出现问题(比如非主节点掉电重启、链路中断等),还有可能出现一些集群非主节点退出系统,另外一些新的集群非节点加入系统,而新加入的集群非主节点的数据版本落后于集群主节点。这样,在协商过程中,能够批准集群主节点发送的最新决议的集群非主节点就会越来越少,协商一致的几率会越来越低,一旦集群中一半数量的集群非主节点版本落后,后续的决议都将无法协商一致,这时就需要中断协商过程,通过人工干预更新各集群非主节点的最新数据。
通过上述分析可知,当集群非主节点数据版本落后时,将无法参与后续数据协商,随着数据版本落后的集群非主节点越来越多,数据协商失败的概率越来越大,从而影响系统业务的正常进行。
发明内容
本发明实施例提供一种分布式系统中数据协商方法及装置,用以解决现有技术中由于集群非主节点数据版本落后,无法参与后续数据协商,影响系统业务的正常进行的问题。
第一方面,提供一种分布式系统中数据协商方法,包括:
在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
结合第一方面,在第一种可能的实现方式中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收集群主节点发送的开始协商消息;
将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;
若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
结合第一方面,在第二种可能的实现方式中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收所述集群主节点发送的提交消息;
将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;
若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
结合第一方面,或第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议,包括:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
结合第一方面,或第一方面的第一至三种可能的实现方式中的任意一种可能的实现方式,在第四种可能的实现方式中,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,包括:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;
接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
结合第一方面,或第一方面的第一至四种可能的实现方式中的任意一种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:
在初始化完成后,启动等待接收消息的定时器;
若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
第二方面,提供一种分布式系统中数据协商方法,该方法包括:
接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
根据所述追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点。
结合第二方面,在第一种可能的实现方式中,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并
将打包后的决议发送给所述集群非主节点。
结合第二方面,在第二种可能的实现方式中,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并
将每个分片分别发送给所述集群非主节点。
第三方面,提供一种分布式系统中数据协商装置,包括:
判断模块,用于在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
获取模块,用于在所述判断模块确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
结合第三方面,在第一种可能的实现方式中,所述判断模块具体用于:
接收集群主节点发送的开始协商消息;将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
结合第三方面,在第二种可能的实现方式中,所述判断模块具体用于:
接收所述集群主节点发送的提交消息;将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
结合第三方面,或第三方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,所述获取模块具体用于:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
结合第三方面,或第三方面的第一至三种可能的实现方式中的任意一种可能的实现方式,在第四种可能的实现方式中,所述获取模块具体用于:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
结合第三方面,或第三方面的第一至四种可能的实现方式中的任意一种可能的实现方式,在第五种可能的实现方式中,所述获取模块还用于:
在初始化完成后,启动等待接收消息的定时器;若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
第四方面,提供一种分布式系统中数据协商装置,包括:
接收模块,用于接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
确定模块,用于根据所述接收模块接收的追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
发送模块,用于根据所述追赶消息中包括的节点标识信息,将所述确定模块确定的决议发送给所述集群非主节点。
结合第四方面,在第一种可能的实现方式中,所述发送模块具体用于:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并将打包后的决议发送给所述集群非主节点。
结合第四方面,在第二种可能的实现方式中,所述发送模块具体用于:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并将每个分片分别发送给所述集群非主节点。
第五方面,提供一种分布式系统中数据协商设备,该设备包括处理器、存储器和总线,所述存储器存储执行指令,当所述设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述设备执行如下方法:
在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
结合第五方面,在第一种可能的实现方式中,所述处理器执行的所述方法中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收集群主节点发送的开始协商消息;
将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;
若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
结合第五方面,在第二种可能的实现方式中,所述处理器执行的所述方法中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收所述集群主节点发送的提交消息;
将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;
若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
结合第五方面,或第五方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,所述处理器执行的所述方法中,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议,包括:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
结合第五方面,或第五方面的第一至三种可能的实现方式中的任意一种可能的实现方式,在第四种可能的实现方式中,所述处理器执行的所述方法中,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,包括:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;
接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
结合第五方面,或第五方面的第一至四种可能的实现方式中的任意一种可能的实现方式,在第五种可能的实现方式中,所述处理器执行的所述方法还包括:
在初始化完成后,启动等待接收消息的定时器;
若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
第六方面,提供一种分布式系统中数据协商设备,该设备包括处理器、存储器和总线,所述存储器存储执行指令,当所述设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述设备执行如下方法:
接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
根据所述追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点。
结合第六方面,在第一种可能的实现方式中,所述处理器执行的所述方法中,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并
将打包后的决议发送给所述集群非主节点。
结合第六方面,在第二种可能的实现方式中,所述处理器执行的所述方法中,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并
将每个分片分别发送给所述集群非主节点。
采用上述方法、装置或设备,集群非主节点在参与数据协商的过程中发现本节点数据版本落后时,可以及时进行决议追赶,将缺失的决议补齐,从而可以在后续正常参与数据协商,提高了数据协商成功的几率,保证了系统业务的正常进行。
附图说明
图1为本发明实施例一提供的分布式系统中数据协商方法流程图;
图2为本发明实施例二提供的分布式系统中数据协商方法流程图;
图3为本发明实施例三提供的分布式系统中数据协商方法流程图;
图4为本发明实施例四提供的分布式系统中数据协商装置结构示意图;
图5为本发明实施例五提供的分布式系统中数据协商装置结构示意图;
图6为本发明实施例六提供的分布式系统中数据协商设置结构示意图;
图7为本发明实施例七提供的分布式系统中数据协商设置结构示意图。
具体实施方式
本发明实施例在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶;在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。可见,采用本发明实施例,集群非主节点在参与数据协商的过程中发现本节点数据版本落后时,可以及时进行决议追赶,将缺失的决议补齐,从而可以在后续正常参与数据协商,提高了数据协商成功的几率,保证了系统业务的正常进行。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,为本发明实施例一提供的分布式系统中数据协商方法流程图,包括以下步骤:
S101:集群非主节点在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶。
该步骤中,在进行数据协商的过程中,集群主节点会向集群非主节点发送协商类消息,比如,开始协商消息和提交消息;在这些消息中携带决议编号,集群非主节点可以将集群主节点发送的决议编号与本节点已提交的决议的最大决议编号进行比较,根据比较结果,判断本节点数据版本是否落后,若落后,则需要进行决议追赶。根据协商类消息的不同,集群非主节点将集群主节点发送的决议编号与本节点已提交的决议的最大决议编号进行比较的方式也会不同,以下实施例二中将会作进一步介绍,这里不再详述。
S102:所述集群非主节点在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
该步骤中,在进行数据协商过程中,集群非主节点在确定本节点数据版本落后时,可以向集群内部的集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议;或者,为了不给集群内的集群主节点或其它集群非主节点带来负担,影响集群内业务的正常进行,也可以调用外部接口,从为集群主节点提供决议的源头(也即集群服务对象)处获取本节点需要追赶的决议。
可选地,集群非主节点可以在以下不同情况时分别采用不同的追赶方式:
情况一、在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议。
这里,若所述集群主节点发送的最大决议编号为开始协商消息中的最大决议编号,则所述设定差值阈值大于1;若所述集群主节点发送的最大决议编号为提交消息中的最大决议编号,则所述设定差值阈值大于该集群非主节点之前批准的打包决议的打包决议个数。
在这种情况下,当集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,说明此时本节点落后版本不是很多、且能够在集群内部节点处获取到本节点缺失的已协商一致的数据版本,则可以采用集群内部追赶的方式。
具体地,集群非主节点进行集群内部追赶的过程可以是:向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;所述追赶消息包括本节点已提交的决议的最大决议编号和本节点的节点标识信息;接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。相应地,被追赶对象(集群主节点或除本节点外的其它集群非主节点)在接收到所述追赶消息后,根据所述追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点。被追赶对象在确定需要发送给所述集群非主节点的决议版本较多时,可以采用分片发送的方式,以下实施例三中将作进一步介绍,这里不再详述。
情况二、在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
这里,若所述集群主节点发送的最大决议编号为开始协商消息中的最大决议编号,则所述设定差值阈值大于1;若所述集群主节点发送的最大决议编号为提交消息中的最大决议编号,则所述设定差值阈值大于该集群非主节点之前批准的打包决议的打包决议个数。
在这种情况下,当集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,说明此时本节点落后版本较多,为了不给集群系统增加较大的负担,采用集群外部追赶的方式。若集群主节点发送的最小决议编号大于本节点已提交的决议的最大决议编号,说明本节点将无法从集群主节点处获取到本节点缺失的连续的数据版本,此时也需要采用集群外部追赶的方式。
如图2所示,为本发明实施例二提供的分布式系统中数据协商方法流程图,本实施例二重点对集群非主节点需要进入追赶流程的情况作进一步说明,包括以下步骤:
S201:集群非主节点在初始化完成后,启动等待接收消息的定时器。
该步骤中,集群非主节点在初始化时,启动等待接收消息的定时器,等待集群主节点发送消息,或等待定时器超时。
S202:若所述集群非主节点在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
该步骤中,若所述集群非主节点在接收到所述集群主节点发送的任何消息之前定时器超时,说明在此期间该集群非主节点与集群主节点之间的链路可能存在问题,该集群非主节点的数据版本可能已经落后,则这时启动追赶流程,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点未接收到的已协商一致的决议。
S203:若所述集群非主节点在所述定时器超时之前接收到所述开始协商消息,则将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号。
该步骤中,集群非主节点接收到集群主节点发送的开始协商消息,该开始协商消息中包含需要协商的打包决议、该打包决议中第一个决议的决议编号(也即是该集群主节点发送的最大决议编号),除此之外,该开始协商消息中还可以包含该集群主节点目前已提交的决议的最小决议编号。
S204:若所述集群非主节点将本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
该步骤中,若集群非主节点将本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则说明本节点数据版本落后,需要进入追赶流程,即向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
在具体实施过程中,所述集群非主节点可以根据所述开始协商消息中包含的最大决议编号和最小决议编号与本节点已提交的决议的最大决议编号和最小决议编号之间的关系,确定进行决议追赶的方式。若所述开始协商消息中的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值(该设定差值阈值大于1),或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,则通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。若所述开始协商消息中的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号,则向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议。
S205:若所述集群非主节点将本节点已提交的决议的最大决议编号加1后,等于所述开始协商消息中包含的最大决议编号,则向集群主节点回复批准所述开始协商消息中包含的打包决议。
该步骤中,若集群非主节点将本节点已提交的决议的最大决议编号加1后,等于所述开始协商消息中包含的最大决议编号,则说明本节点数据版本没有落后,可以向集群主节点回复批准所述开始协商消息中包含的打包决议。
在具体实施过程中,集群主节点发送的所述开始协商消息中包含的最大决议编号和最小决议编号与本节点已提交的决议的最大决议编号和最小决议编号之间的关系除上述几种情况(包括需要进入追赶流程的情况以及批准决议的情况)外,还有可能会出现一些异常情况,比如,所述开始协商消息中包含的最大决议编号小于等于本节点已提交的决议的最大决议编号,甚至小于本节点已提交的决议的最小决议编号,则这种情况为异常情况,则可以向管理界面反馈异常信息,并记录异常日志。
S206:所述集群非主节点在接收到所述集群主节点发送的提交消息后,将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述最大决议编号为所述打包决议中最后一个决议的决议编号。
该步骤中,集群非主节点在向集群主节点回复批准其在开始协商消息中发送的打包决议后,会接收到集群主节点发送的提交消息,此时,集群主节点发送的提交消息中的最大决议编号为需要提交的打包决议中最后一个决议的决议编号。但是,在集群非主节点回复批准打包决议的消息之后,接收到集群主节点发送的提交消息之前,仍有可能出现该集群非主节点与集群主节点之间的链路异常,导致提交消息中的最大决议编号与该集群非主节点应该提交的决议的最大决议编号不符。因此,需要将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较。
S207:若所述集群非主节点将本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
该步骤中,若集群非主节点将本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则说明本节点数据版本落后,需要进入追赶流程,即向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
在具体实施过程中,所述提交消息中除包含该集群主节点目前需要提交的决议的最大决议编号外,还可以包含该集群主节点目前已提交的决议的最小决议编号。所述集群非主节点可以根据所述提交消息中包含的最大决议编号和最小决议编号与本节点已提交的决议的最大决议编号和最小决议编号之间的关系,确定进行决议追赶的方式。若所述提交消息中的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值(该设定差值阈值大于打包决议个数)。或者本节点已提交的决议的最大决议编号加1后小于所述提交消息中的最小决议编号,则通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。若所述提交消息中的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号,则向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议。
S208:若所述集群非主节点将本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,等于所述提交消息中包含的最大决议编号,则提交所述打包决议。
该步骤中,若集群非主节点将本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,等于所述提交消息中包含的最大决议编号,则说明本节点数据版本没有落后,可以进行决议提交,也即根据所述打包决议中的各个决议进行相关处理,包括删除、添加、修改数据等。
在具体实施过程中,集群主节点发送的所述提交消息中包含的最大决议编号和最小决议编号与本节点已提交的决议的最大决议编号和最小决议编号之间的关系除上述几种情况(包括需要进入追赶流程的情况以及确认能够提交决议的情况)外,还有可能会出现一些异常情况,比如,所述提交消息中包含的最大决议编号小于等于本节点已提交的决议的最大决议编号,甚至小于本节点已提交的决议的最小决议编号,则这种情况为异常情况,则可以向管理界面反馈异常信息,并记录异常日志。
如图3所示,为本发明实施例三提供的分布式系统中数据协商方法流程图,本实施例三重点对集群非主节点在数据协商过程中进行决议追赶的流程作进一步说明,包括以下步骤:
S301:集群非主节点在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,确定需要进行决议追赶。
比如,在一个包含N个节点的集群中,大部分集群节点已提交的决议的最大决议编号已达到602,但是,存在一个集群非主节点由于网络闪断等原因,它提交的决议的最大决议编号为600,在该集群非主节点网络通信恢复正常后,接收到集群主节点发送的消息,检测到本节点决议版本落后,进入追赶流程。
S302:所述集群非主节点判断本节点已提交的决议的最大决议编号加1后是否小于所述集群主节点发送的最小决议编号,若是,则进入步骤S303,否则,进入步骤S304。
S303:所述集群非主节点通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
S304:所述集群非主节点判断所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差是否大于等于设定差值阈值,若是,则进入步骤S303,否则进入步骤S305。
S305:所述集群非主节点向被追赶对象发送追赶消息;所述追赶消息包括本节点已提交的决议的最大决议编号和本节点的节点标识信息,所述被追赶对象为所述集群主节点或其它集群非主节点。
在具体实施过程中,集群中所有节点都存储有本集群所有N个节点的节点信息集合,其中包括每个节点的配置信息等。集群非主节点可以从这N个节点中选取M个节点作为学习对象,加入学习对象集合,这M个节点包括集群主节点和M-1个集群非主节点。该集群非主节点在选择集群非主节点作为学习对象时,可以从所有N-2个集群非主节点中,选择配置相对较高、性能较好、通信时延较短的节点;如果所有集群非主节点的配置相同,则随机选取M-1个集群非主节点作为学习对象。该集群非主节点在向某被追赶对象(集群非主节点)发起追赶流程的过程中,若发现本节点与该被追赶对象之间无法通信,则将该被追赶对象从其学习对象集合中删除,重新选择一个可以通信的其它集群非主节点加入学习对象集合。
在具体实施中,所述集群非主节点可以直接向集群主节点发送追赶消息,若集群主节点处于繁忙的协商任务中,为了使追赶流程不加重集群主节点的工作负载,则从学习对象集合中选取一个集群非主节点作为被追赶对象,发送追赶消息,若该被追赶对象已提交的决议的最大决议编号小于等于发送追赶消息的集群非主节点的最大决议编号,或者,该被追赶对象已删除了连续的决议日志(即无法为该集群非主节点提供连续的决议版本),则该被追赶对象无法为所述集群主节点提供其需要追赶的决议,该集群主节点再从剩余的M-2个学习对象中选择其它集群非主节点作为被追赶对象,如此递归,直至完成追赶过程。
在具体实施中,被追赶对象根据所述追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,将在区间[追赶对象已提交的决议的最大决议编号+1,被追赶对象已提交的决议的最大决议编号]内的决议编号所对应的决议发送给追赶对象。该追赶对象在接收到被追赶对象发送的决议后,比较该被追赶对象发送的决议的最大决议编号与集群主节点的最大决议编号,若该被追赶对象发送的决议的最大决议编号小于集群主节点发送的最大决议编号,则继续从其它学习对象中选择一个学习对象作为被追赶对象发送追赶消息,若该被追赶对象发送的决议的最大决议编号等于集群主节点发送的最大决议编号,则确定追赶成功。
在具体实施中,被追赶对象检测到本节点已提交的决议的最大决议编号与追赶对象发送的最大决议编号相同时,向所述追赶对象发送追赶响应消息,指示无需进行决议追赶;若检测到本节点已提交的决议的最大决议编号小于该追赶对象发送的最大决议编号,或者已删除了部分决议日志,无法为该追赶对象提供连续的决议版本,则向所述追赶对象发送追赶响应消息,指示无法提供服务。
S306:所述被追赶对象接收到追赶消息后,判断在该追赶消息中包括的所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目是否小于等于设定阈值,若是,则进入步骤S307,否则,进入步骤S308。
S307:所述被追赶对象将在所述编号区间内的决议编号分别对应的决议进行打包;并将打包后的决议发送给所述集群非主节点。
S308:所述被追赶对象将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并将每个分片分别发送给所述集群非主节点。
在具体实施过程中,若在区间[所述集群非主节点已提交的决议的最大决议编号+1,本节点已提交的决议的最大决议编号]内的决议编号数目大于设定数目阈值,则发送的决议数据包会过大,有可能导致发送失败。比如用户数据报协议(User Datagram Protocol,UDP)协议要求数据包大小不能超过64K,否则就会发送失败。因此,在本申请实施例中,若在该区间内的决议编号数目大于设定数目阈值,则所述被追赶对象将在该区间内的决议编号所对应的决议划分为多个分片分别发送给所述集群非主节点;其中,每个分片的决议个数小于等于所述设定数目阈值k。比如,被追赶对象可以首先将该区间对应的共L个决议中的前k个决议发送给追赶对象,之后判断剩余的决议个数L-k是否仍大于k,若仍大于k,则继续发送后续的k个决议,如此循环,直到剩余的决议个数小于等于k,则将剩余的决议全部发送给追赶对象。
基于同一发明构思,本发明实施例中还提供了一种与分布式系统中数据协商方法对应的分布式系统中数据协商装置,由于该装置解决问题的原理与本发明实施例分布式系统中数据协商方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,为本发明实施例四提供的分布式系统中数据协商装置结构示意图,包括:
判断模块41,用于在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
获取模块42,用于在所述判断模块41确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
可选地,所述判断模块41具体用于:
接收集群主节点发送的开始协商消息;将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
可选地,所述判断模块41具体用于:
接收所述集群主节点发送的提交消息;将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
可选地,所述获取模块42具体用于:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
可选地,所述获取模块42具体用于:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
可选地,所述获取模块42还用于:
在初始化完成后,启动等待接收消息的定时器;若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
如图5所示,为本发明实施例五提供的分布式系统中数据协商装置结构示意图,包括:
接收模块51,用于接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
确定模块52,用于根据所述接收模块51接收的追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
发送模块53,用于根据所述追赶消息中包括的节点标识信息,将所述确定模块52确定的决议发送给所述集群非主节点。
可选地,所述发送模块53具体用于:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并将打包后的决议发送给所述集群非主节点。
可选地,所述发送模块53具体用于:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并将每个分片分别发送给所述集群非主节点。
如图6所示,为本发明实施例六提供的分布式系统中数据协商设置结构示意图,该设备包括处理器61、存储器62和总线63,所述存储器62存储执行指令,当所述设备运行时,所述处理器61与所述存储器62之间通过总线63通信,所述处理器61执行所述执行指令使得所述设备执行如下方法:
在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
可选地,所述处理器61执行的所述方法中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收集群主节点发送的开始协商消息;
将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;
若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
可选地,所述处理器61执行的所述方法中,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收所述集群主节点发送的提交消息;
将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;
若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
可选地,所述处理器61执行的所述方法中,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议,包括:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
可选地,所述处理器61执行的所述方法中,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,包括:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;
接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
可选地,所述处理器61执行的所述方法还包括:
在初始化完成后,启动等待接收消息的定时器;
若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
如图7所示,为本发明实施例七提供的分布式系统中数据协商设置结构示意图,该设备包括处理器71、存储器72和总线73,所述存储器72存储执行指令,当所述设备运行时,所述处理器71与所述存储器72之间通过总线73通信,所述处理器71执行所述执行指令使得所述设备执行如下方法:
接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
根据所述追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点。
可选地,所述处理器71执行的所述方法中,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并
将打包后的决议发送给所述集群非主节点。
可选地,所述处理器71执行的所述方法中,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并
将每个分片分别发送给所述集群非主节点。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (18)

1.一种分布式系统中数据协商方法,其特征在于,该方法包括:
在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
在确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
2.如权利要求1所述的方法,其特征在于,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收集群主节点发送的开始协商消息;
将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;
若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
3.如权利要求1所述的方法,其特征在于,根据本节点已提交的决议的最大决议编号和集群主节点发送的决议编号,判断是否需要进行决议追赶,包括:
接收所述集群主节点发送的提交消息;
将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;
若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
4.如权利要求1~3任一所述的方法,其特征在于,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议,包括:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
5.如权利要求1~4任一所述的方法,其特征在于,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议,包括:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;
接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
6.如权利要求1~5任一所述的方法,其特征在于,所述方法还包括:
在初始化完成后,启动等待接收消息的定时器;
若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
7.一种分布式系统中数据协商方法,其特征在于,该方法包括:
接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
根据所述追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点。
8.如权利要求7所述的方法,其特征在于,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并
将打包后的决议发送给所述集群非主节点。
9.如权利要求7所述的方法,其特征在于,根据所述追赶消息中包括的节点标识信息,将确定的决议发送给所述集群非主节点,包括:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并
将每个分片分别发送给所述集群非主节点。
10.一种分布式系统中数据协商装置,其特征在于,该装置包括:
判断模块,用于在进行数据协商的过程中,根据本节点已提交的决议的最大决议编号和集群主节点发送的最大决议编号,判断是否需要进行决议追赶;
获取模块,用于在所述判断模块确定需要进行决议追赶后,向所述集群主节点或除本节点外的集群非主节点请求获取本节点需要追赶的决议,或通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
11.如权利要求10所述的装置,其特征在于,所述判断模块具体用于:
接收集群主节点发送的开始协商消息;将本节点已提交的决议的最大决议编号加1后,与所述开始协商消息中包含的最大决议编号进行比较;所述开始协商消息中包含的最大决议编号为所述开始协商消息中包含的需要协商的打包决议中第一个决议的决议编号;若本节点已提交的决议的最大决议编号加1后,小于所述开始协商消息中包含的最大决议编号,则确定需要进行决议追赶。
12.如权利要求10所述的装置,其特征在于,所述判断模块具体用于:
接收所述集群主节点发送的提交消息;将本节点已提交的决议的最大决议编号加上最近一次批准的打包决议的决议个数后,与所述提交消息中包含的最大决议编号进行比较,所述提交消息中包含的最大决议编号为所述打包决议中最后一个决议的决议编号;若本节点已提交的决议的最大决议编号加上所述打包决议的决议个数后,小于所述提交消息中包含的最大决议编号,则确定需要进行决议追赶。
13.如权利要求10~12任一所述的装置,其特征在于,所述获取模块具体用于:
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差小于设定差值阈值、且本节点已提交的决议的最大决议编号加1后大于等于所述集群主节点发送的最小决议编号时,向所述集群主节点或除本节点外的其它集群非主节点请求获取本节点需要追赶的决议;
在所述集群主节点发送的最大决议编号与本节点已提交的决议的最大决议编号之差大于等于设定差值阈值时,或者本节点已提交的决议的最大决议编号加1后小于所述集群主节点发送的最小决议编号时,通过调用外部接口向集群服务对象请求获取本节点需要追赶的决议。
14.如权利要求10~13任一所述的装置,其特征在于,所述获取模块具体用于:
向所述集群主节点或除本节点外的其它集群非主节点发送追赶消息;接收所述集群主节点或除本节点外的其它集群非主节点根据所述追赶消息发送的决议。
15.如权利要求10~14任一所述的装置,其特征在于,所述获取模块还用于:
在初始化完成后,启动等待接收消息的定时器;若在接收到所述集群主节点发送的任何消息之前定时器超时,则向所述集群主节点或除本节点外的其它集群非主节点请求获取已协商一致的决议。
16.一种分布式系统中数据协商装置,其特征在于,该装置包括:
接收模块,用于接收集群非主节点发送的追赶消息,所述追赶消息包括所述集群非主节点已提交的决议的最大决议编号和所述集群非主节点的节点标识信息;
确定模块,用于根据所述接收模块接收的追赶消息中包括的最大决议编号和本节点已提交的决议的最大决议编号,确定需要发送给所述集群非主节点的决议;
发送模块,用于根据所述追赶消息中包括的节点标识信息,将所述确定模块确定的决议发送给所述集群非主节点。
17.如权利要求16所述的装置,其特征在于,所述发送模块具体用于:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目小于等于设定阈值,则根据所述追赶消息中包括的节点标识信息,将在所述编号区间内的决议编号分别对应的决议进行打包;并将打包后的决议发送给所述集群非主节点。
18.如权利要求16所述的装置,其特征在于,所述发送模块具体用于:
若在所述集群非主节点已提交的决议的最大决议编号加1至本节点已提交的决议的最大决议编号之间的编号区间内的决议编号数目大于设定阈值,则将在所述编号区间内的决议编号分别对应的决议划分为多个分片,其中,每个分片包含的决议个数小于等于所述设定阈值,并将每个分片分别发送给所述集群非主节点。
CN201410469623.3A 2014-09-16 2014-09-16 一种分布式系统中数据协商方法及装置 Active CN104348906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410469623.3A CN104348906B (zh) 2014-09-16 2014-09-16 一种分布式系统中数据协商方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410469623.3A CN104348906B (zh) 2014-09-16 2014-09-16 一种分布式系统中数据协商方法及装置

Publications (2)

Publication Number Publication Date
CN104348906A true CN104348906A (zh) 2015-02-11
CN104348906B CN104348906B (zh) 2018-05-04

Family

ID=52503688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410469623.3A Active CN104348906B (zh) 2014-09-16 2014-09-16 一种分布式系统中数据协商方法及装置

Country Status (1)

Country Link
CN (1) CN104348906B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157709A (zh) * 2021-01-29 2021-07-23 百果园技术(新加坡)有限公司 分布式系统节点动态变更方法、装置、设备及存储介质
CN113220236A (zh) * 2021-05-17 2021-08-06 北京青云科技股份有限公司 一种数据管理方法、系统及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077002A1 (en) * 2007-09-14 2009-03-19 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
CN102088489A (zh) * 2010-12-31 2011-06-08 北京理工大学 一种分布式数据同步系统及方法
CN102882927A (zh) * 2012-08-29 2013-01-16 华南理工大学 一种云存储数据同步框架及其实现方法
CN103036717A (zh) * 2012-12-12 2013-04-10 北京邮电大学 分布式数据的一致性维护系统和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077002A1 (en) * 2007-09-14 2009-03-19 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
CN102088489A (zh) * 2010-12-31 2011-06-08 北京理工大学 一种分布式数据同步系统及方法
CN102882927A (zh) * 2012-08-29 2013-01-16 华南理工大学 一种云存储数据同步框架及其实现方法
CN103036717A (zh) * 2012-12-12 2013-04-10 北京邮电大学 分布式数据的一致性维护系统和方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157709A (zh) * 2021-01-29 2021-07-23 百果园技术(新加坡)有限公司 分布式系统节点动态变更方法、装置、设备及存储介质
CN113220236A (zh) * 2021-05-17 2021-08-06 北京青云科技股份有限公司 一种数据管理方法、系统及设备
CN113220236B (zh) * 2021-05-17 2024-01-30 北京青云科技股份有限公司 一种数据管理方法、系统及设备

Also Published As

Publication number Publication date
CN104348906B (zh) 2018-05-04

Similar Documents

Publication Publication Date Title
CN107295080B (zh) 应用于分布式服务器集群的数据存储方法和服务器
CN110659151B (zh) 数据校验方法及装置,存储介质
EP2948875B1 (en) Method and system for using a recursive event listener on a node in hierarchical data structure
CN106712981B (zh) 一种节点变更通知方法及装置
KR20120018178A (ko) 객체 저장부들의 네트워크상의 스웜-기반의 동기화
US8996645B2 (en) Transmitting data by means of storage area network
CN110633168A (zh) 一种分布式存储系统的数据备份方法和系统
JP6431197B2 (ja) スナップショット処理方法および関係付けられたデバイス
WO2022134797A1 (zh) 一种数据分片存储方法、装置、计算机设备和存储介质
JP2018501669A (ja) 情報の伝送方法、装置および機器
CN112398689A (zh) 网络恢复方法、装置、存储介质及电子设备
WO2015062082A1 (zh) 通信接入方法和用户设备
CN111258726A (zh) 任务调度方法和装置
CN105373563B (zh) 数据库切换方法及装置
CN104348906A (zh) 一种分布式系统中数据协商方法及装置
US8250140B2 (en) Enabling connections for use with a network
CN111092956A (zh) 资源同步方法、装置、存储介质及设备
CN112073215B (zh) 一种实现应用的方法及业务控制器
CN112698783A (zh) 对象存储方法、装置及系统
US10951732B2 (en) Service processing method and device
US20170149893A1 (en) Metadata server, network device and automatic resource management method
JP2018515961A (ja) Vnfm間のインターフェースを確立するための方法及び装置、並びにシステム
CN112738153B (zh) 业务系统中的网关选择方法、系统、装置、服务器及介质
CN114884805A (zh) 数据传输方法、装置、终端及存储介质
CN107317880B (zh) 一种实现负载均衡的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160726

Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd.

Address before: 518129 Longgang District, Guangdong, Bantian HUAWEI base B District, building 2, building No.

Applicant before: Shenzhen Huawei Technology Software Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20191213

Address after: 314400 No.11, Weisan Road, Nongfa District, Chang'an Town, Haining City, Jiaxing City, Zhejiang Province

Patentee after: Haining hi tech Zone Science and Innovation Center Co.,Ltd.

Address before: 510000 unit 2414-2416, building, No. five, No. 371, Tianhe District, Guangdong, China

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Effective date of registration: 20191213

Address after: 510000 unit 2414-2416, building, No. five, No. 371, Tianhe District, Guangdong, China

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right