发明内容
有鉴于此,本发明要解决的技术问题是提供一种数据服务器集群系统及数据同步方法,以解决云存储中多元数据服务器数据一致性的问题,提高系统的服务可靠性。
本发明解决上述技术问题所采用的技术方案如下:
根据本发明的一个方面,提供的一种数据服务器集群系统包括通过网络连接的一台主服务器和至少两台从服务器,其中:
主服务器,用于接收客户端发送的数据,将数据进行编号,并将编号后的数据广播到从服务器;还用于接收到超过半数的从服务器收到编号后的数据的确认信息后,广播存储数据命令到从服务器,并在本地存储数据;
从服务器,用于向主服务器确认接收到编号后的数据,还用于在接收到主服务器广播的存储数据命令后,将编号后的数据存储到本地。
优选地,从服务器还包括:主服务器协商模块,用于当主服务器宕机后,重新协商主服务器。
优选地,主服务器协商模块包括:
初始化单元,用于将自身作为备选主服务器将其备选信息保存在本地,并向集群中其他从服务器广播备选信息;其中,备选信息包括备选主服务器编号和所存储的数据的最大数据编号;
更新单元,用于当备选主服务器接收到其他从服务器发送的备选信息后,判断接收的备选信息中的最大数据编号是否大于本地备选信息的最大数据编号,如果是,则将本地的备选信息更新为接收到的备选信息,将新更新后的备选信息广播到集群;否则向发送的从服务器发送本地的备选信息;
确定单元,用于统计收到的备选信息,如果收到超过服务器数量半数的备选信息一致,则该备选信息对应的备选主服务器为新的主服务器,其他备选信息对应的备选主服务器仍为从服务器。
优选地,从服务器还包括数据恢复模块,用于当宕机后,重新启动后进行数据恢复。数据恢复模块具体用于:将本地存储的最大数据编号发送给主服务器,从主服务器接收主服务器的最大数据编号到主服务器的最大数据编号之间的编号集合对应的数据集合并存储到本地。
根据本发明提供的另一个方面,提供的一种数据服务器集群的数据同步方法包括:
主服务器接收客户端发送的数据,将数据进行编号,并将编号后的数据广播到从服务器;
当主服务器接收到超过半数的从服务器收到编号后的数据的确认信息后,广播存储数据命令到从服务器;
主服务器和从服务器将编号后的数据存储到本地。
优选地,将数据进行编号包括:将数据用本地最大数据编号加1进行编号。
优选地,该方法还包括:当从服务器检测到主服务器宕机后,从服务器重新协商主服务器的步骤。
优选地,从服务器重新协商主服务器的步骤包括:
每台从服务器将自身作为备选主服务器将其备选信息保存在本地,并向集群中其他从服务器广播备选信息;其中,备选信息包括备选主服务器编号和所存储的数据的最大数据编号;
当备选主服务器接收到其他从服务器发送的备选信息后,判断接收的备选信息中的最大数据编号是否大于本地备选信息的最大数据编号,如果是,则将本地的备选信息更新为接收到的备选信息,将新更新后的备选信息广播到集群;否则向发送的从服务器发送本地的备选信息。
统计收到的备选信息,如果收到超过服务器数量半数的备选信息一致,则该备选信息对应的备选主服务器为新的主服务器,其他备选信息对应的备选主服务器仍为从服务器。
优选地,该方法还包括:当从服务器宕机后,从服务器重新启动后进行数据恢复的步骤。
优选地,从服务器重新启动后进行数据恢复的步骤包括:
从服务器将本地的存储的最大数据编号发送给主服务器;
主服务器获取从服务器的最大数据编号到主服务器的最大数据编号之间的编号集合;将编号集合对应的数据集合发送到从服务器;
从服务器将接收到的数据集合存储到本地。
本发明实施例提供的数据服务器集群系统及数据同步方法,通过主服务器控制多台从服务器同时提供读写服务,解决了传统主从服务器的单点问题,同时,保证集群数据一致性,提高集群可靠性和可用性。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示为本发明实施例提供的一种数据服务器集群系统的结构示意图;该系统包括通过网络连接的一台主服务器10和至少两台从服务器20,其中:
主服务器10,用于接收客户端发送的数据,将数据进行编号,并将编号后的数据广播到从服务器20;还用于接收到超过半数的从服务器20收到编号后的数据的确认信息后,广播存储数据命令到从服务器20,并在本地存储数据。
从服务器20,用于向主服务器10确认接收到编号后的数据,还用于在接收到主服务器10广播的存储数据命令后,将编号后的数据存储到本地。
具体来说,当数据服务器作为主服务器10时,可以包括接收模块101、编号模块102、发送模块103和存储模块104,其中:接收模块101,用于接收客户端发送的数据以及从服务器20发送的信息;编号模块102,用于将接收到的数据按本地最大数据编号加1进行编号;发送模块103,用于向从服务器20发送信息和数据;存储模块104,用于将客户端发送的数据存储在本地。当数据服务器作为从服务器20时,可以包括:接收模块201、发送模块203和存储模块204,其中:接收模块201,用于接收主服务器10发送的信息及数据;发送模块203,用于向主服务器10发送信息;存储模块204,用于将主服务器10发送的数据存储在本地。
作为本发明实施例的优选方案,为了防止主服务器出现网络连通问题或者主服务器宕机导致集群系统中缺少主服务器提供服务,从服务器20还包括:主服务器协商模块205,用于当主服务器宕机后,重新协商主服务器。主服务器协商模块205具体可以包括初始化单元2051、更新单元2052和确定单元2053,其中:
初始化单元2051,用于将自身作为备选主服务器将其备选信息保存在本地,并向集群中其他从服务器20广播备选信息;其中,备选信息包括备选主服务器编号和所存储的数据的最大数据编号;
更新单元2052,用于当备选主服务器接收到其他从服务器20发送的备选信息后,判断接收的备选信息中的最大数据编号是否大于本地备选信息的最大数据编号,如果是,则将本地的备选信息更新为接收到的备选信息,将新更新后的备选信息广播到集群;否则向发送的从服务器20发送本地的备选信息;
确定单元2053,用于统计收到的备选信息,如果收到超过服务器数量半数的备选信息一致,则该备选信息对应的备选主服务器为新的主服务器10,其他备选信息对应的备选主服务器仍为从服务器20。
作为本发明实施例的优选方案,为了防止从服务器出现网络连通问题或者从服务器宕机导致从服务器出现数据不一致的问题,从服务器20还包括数据恢复模块206,用于当宕机后,重新启动后进行数据恢复。具体用于:将本地存储的最大数据编号发送给主服务器10,从主服务器10接收主服务器10的最大数据编号到主服务器10的最大数据编号之间的编号集合对应的数据集合并存储到本地。
设定集群的服务器数量为2F+1台,其中F为整数,则集群的服务器的数量集合为{3,5…,2F+1},集群中所有服务器参与协商,假设F=3,那么集群中服务器总数为7,当集群中可以提供服务并能网络连通的服务器大于等于4台时,集群中提供服务服务器的最大数据编号N,对于剩余的服务器(小于等于F),因为网络连通或者宕机等原因,他们的数据少于主服务器数据,其最大编号为M,M<N,其状态为不能提供服务,当剩余服务器重新上线后,因为不知道主服务器,所以会发起协商,有两种可能,集群已经存在主服务器,主服务器收到选票后,告诉该服务器自己是主服务器,那么该服务器将向主服务器发送数据恢复请求,将主服务器数据和本地数据同步,另外一种情况是没有发现主服务器,那么将重新进行协商,如果能协商出新的主服务器,所有从服务器向主服务器发送恢复命令,将主服务器数据同步到本地,如果无法协商出主服务器,则服务器不能提供服务,直到集群中服务器数据大于等于4。对于集群服务器数量小于4,集群协商不出主服务器,所以集群是不服务的,但比传统的主从服务器架构一台主服务器的单点瓶颈,因为容许3台宕机,可靠性和可用性有很大提高。
综上所述,本发明实施例提供的数据服务器集群系统,通过主服务器控制多台从服务器同时提供读写服务,解决了传统主从服务器的单点问题,同时,保证集群数据一致性,提高集群可靠性和可用性。
如图2所示为本发明实施例提供的一种数据服务器集群系统的数据同步方法流程图,该方法包括:
S202、主服务器接收客户端发送的数据;
S204、将数据进行编号,并将编号后的数据广播到从服务器;
为了计算方便,将数据进行编号优选的方式为:将数据用本地最大数据编号加1进行编号。S206、判断是否接收到超过半数的从服务器收到编号后的数据的确认信息,如果是,则执行步骤S208,否则执行步骤S212;
S208,广播存储数据命令到从服务器;
S210、主服务器和从服务器将编号后的数据存储到本地。
S212、结束。
本发明实施例通过主服务器控制多台从服务器同时提供读写服务,解决了传统的主从服务器的单点问题及数据一致性的问题。
为了防止主服务器出现网络连通问题或者主服务器宕机导致集群系统中缺少主服务器提供服务,本实施例还包括:当从服务器检测到主服务器宕机后,从服务器重新协商主服务器的步骤(请阅图3)。
为了防止从服务器出现网络连通问题或者从服务器宕机导致从服务器出现数据不一致的问题,该实施例还包括:当从服务器宕机后,从服务器重新启动后进行数据恢复的步骤(请参阅图4)。
如图3所示为本发明优选实施例提供的一种协商主服务器的方法流程图,该方法包括:
S302、初始化备选信息。
具体来说,每台从服务器将自身作为备选主服务器将其备选信息保存在本地,并向集群中其他从服务器广播备选信息;其中,备选信息包括备选主服务器编号和所存储的数据的最大数据编号;
S304、更新备选信息。
具体来说,当备选主服务器接收到其他从服务器发送的备选信息后,判断接收的备选信息中的最大数据编号是否大于本地备选信息的最大数据编号,如果是,则将本地的备选信息更新为接收到的备选信息,将新更新后的备选信息广播到集群;否则向发送的从服务器发送本地的备选信息。
S306、确定主服务器。
具体来说,统计收到的备选信息,如果收到超过服务器数量半数的备选信息一致,则该备选信息对应的备选主服务器为新的主服务器,其他备选信息对应的备选主服务器仍为从服务器。
本实施例中,集群的服务器数量通常为奇数,设定集群的服务器数量为2F+1台,其中F为整数,则集群的服务器的数量集合为{3,5…,2F+1},集群中所有服务器参与协商,每个服务器有唯一编号,协商方法为本服务器向集群其余服务器广播选票,备选信息为:备选主服务器的编号,备选主服务器上存储的最大数据编号,服务器保存该选票,第一次发送选票的备选主服务器的编号为本机编号,当服务器收到集群中其他服务器的协商信息,服务器根据下面规则进行回复:
如果选票最大数据编号>=本地选票的最大数据编号,那么服务器将本地选票跟新为新的选票,将新选票广播到集群。
如果选票最大数据编号<本地选票的最大数据编号服务器向发送者服务器发送本地的选票。
所有服务器统计收到的选票,如果有大于等于F+1台服务器选票选的主服务器为一致,那么该选票所选机器成为主服务器,其余所有机器为从服务器。
举例来说,集群有3台服务器,分别为C1,C2,C3,C1最大数据编号为1,C2最大数据编号为2,C3最大数据编号为3。集群中3台服务器启动时,C1向C2,C3广播选票,选票内容为:主服务器C1,最大数据编号1,C2向C1,C3广播选票,选票内容为:主服务器C2,最大数据编号2,C3向C1,C2广播选票,选票内容为:主服务器C3,最大数据编号3,
C2收到C1选票,选票的最大数据编号小于C2的最大数据编号,根据协商规则,C2发送选票给C1,选票内容为:主服务器C2,数据编号2
C3收到C1和C2的选票后,会回复C1,C2选票,选票内容为,主服务器C3,数据编号3
C1收到C3的选票后,根据规则将选票跟新为,主服务器C3,数据编号为3,并向集群中C2和C3广播该选票
C2收到C3的选票后,根据规则将选票跟新为,主服务器C3,数据编号为3,并向集群中C1和C3广播该选票
经过多轮的选票广播后,最终所有服务器都会确认选票,选票内容为:主服务器C3,数据编号3,C3成为集群的主服务器。
需要说明的是,集群中服务器可能宕机,集群网络也可能因为故障被分割成多个子网,因此协商中要求F+1台机器认可选票,任意时刻都不可能存在两个符合条件的集合,所以集群中只会选出一个主服务器,协商出新的主服务器后集群将进入正常,所有机器都会加入一个集群,成为从服务器。协商过程只需要在集群中进行多次广播后就能确认,所以不能提供服务的时间很短,服务的恢复为自动完成,不需人工干预。
如图4所示为本发明优选实施例提供的一种恢复数据的方法流程图,该方法包括:
S402、从服务器将本地的存储的最大数据编号发送给主服务器;
S404、主服务器获取从服务器的最大数据编号到主服务器的最大数据编号之间的编号集合;
S406、将编号集合对应的数据集合发送到从服务器;
S408、从服务器将接收到的数据集合存储到本地。
通过本实施例的方法,新加入的从服务器或者宕机后的从服务器加入集群后,将本地的最大数据编号发送给主服务器,和主服务器进行数据同步,也和其他从服务器一致,保证了数据的一致性。
综上所述,本发明实施例提供的系统和方法,通过主服务器控制多台从服务器同时提供读写服务,解决了传统的主从服务器的单点问题及数据一致性的问题,同时,还通过重新协商主服务器和数据恢复避免了集群系统可能出现网络连通问题或者服务器宕机导致的数据不一致性,提高了系统的可靠性。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。