CN111444207B - 节点数据的变更方法、装置、存储介质和服务器 - Google Patents
节点数据的变更方法、装置、存储介质和服务器 Download PDFInfo
- Publication number
- CN111444207B CN111444207B CN202010215048.XA CN202010215048A CN111444207B CN 111444207 B CN111444207 B CN 111444207B CN 202010215048 A CN202010215048 A CN 202010215048A CN 111444207 B CN111444207 B CN 111444207B
- Authority
- CN
- China
- Prior art keywords
- log
- change
- server
- data
- sequence number
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000008859 change Effects 0.000 claims abstract description 190
- 230000010076 replication Effects 0.000 claims abstract description 34
- 230000001360 synchronised effect Effects 0.000 claims description 25
- 238000012508 change request Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000000926 separation method Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000007547 defect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000035755 proliferation Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及互联网技术领域,尤其涉及一种节点数据的变更方法、装置、存储介质和服务器,包括:向日志服务器请求变更日志的最新的递增序列号;接收所述日志服务器下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地;本方案只需要实现相对简单和清晰明了的节点服务器中的各个功能以及维护日志服务器的稳定性,即可保持各个节点服务器的数据一致性;并且,各个节点服务器之间数据同步安全,可用性高。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种节点数据的变更方法、装置、存储介质和服务器。
背景技术
随着互联网后端技术的蓬勃发展以及访问流量的激增,越来越多的后端服务需要多机协同工作;在多机协同工作的集群环境下,需要保证多机间数据的一致性。
但是,目前大多采用Raft、Paxos等单主一致性协议,或者Gossip、POW等多主一致性协议的方式实现多机协同工作下的数据一致性,然而该一致性协议较为复杂,需要投入大量资源才能实现,无法应用到一些中小***中;另外,该一致性协议限制较多,使用面较窄。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中采用一致性协议的方式实现多机协同工作,其应用范围较小,协议较为复杂的技术缺陷。
本申请提供一种节点数据的变更方法,包括如下步骤:
向日志服务器请求变更日志的最新的递增序列号;其中,所述变更日志是预先按顺序存储在所述日志服务器上的各个节点服务器的变更数据,并分配唯一的递增序列号;
接收所述日志服务器下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;其中,所述本地的日志序列号表示最新的已同步日志的序列号;
若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
在一个实施例中,所述变更日志中包含有本次数据变更信息的可执行指令;
获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,通过复制状态机将所述变更日志中的数据变更到本地的步骤,包括:
将获取到的变更日志按照对应的递增序列号进行排序,得到排序后的变更日志;
通过复制状态机依次执行所述排序后的变更日志对应的可执行指令,以将所述可执行指令对应的数据变更信息更新至本地。
在一个实施例中,所述通过复制状态机将所述变更日志中的变更数据更新到本地的步骤之后,还包括:
将所述变更日志更新为本地日志,并对所述本地日志进行编号,以得到最新的日志序列号;
通过快照定期保存与该时间点对应的数据以及日志序列号。
在一个实施例中,所述节点数据的变更方法,还包括:
接收所述日志服务器下发的新增服务器信息;
根据所述新增服务器信息将所述快照上传至所述日志服务器中,以使对应的新增服务器通过所述日志服务器下载所述快照,完成数据更新。
在一个实施例中,所述节点数据的变更方法,还包括:
接收所述日志服务器下发的其他节点服务器的重启信息;
根据所述重启信息将所述快照上传至所述日志服务器中,以使所述其他节点服务器通过所述日志服务器下载所述快照,完成节点重启。
在一个实施例中,所述节点数据的变更方法,还包括:
接收所述日志服务器下发的其他节点服务器的脱离信息;
根据所述脱离信息将所述快照上传至所述日志服务器中,以使所述其他节点服务器通过所述日志服务器下载所述快照,完成节点数据同步。
在一个实施例中,所述节点数据的变更方法,还包括:
当需要变更数据时,将所述变更数据对应的变更日志提交到所述日志服务器中,以使所述日志服务器按照所述变更日志的提交顺序进行存储,并分配递增序列号。
本申请还提供了一种节点数据的变更装置,包括:
变更请求模块,用于向日志服务器请求变更日志的最新的递增序列号;其中,所述变更日志是预先按顺序存储在所述日志服务器上的各个节点服务器的变更数据,并分配唯一的递增序列号;
数据比对模块,用于接收所述日志服务器下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;其中,所述本地的日志序列号表示最新的已同步日志的序列号;
数据变更模块,用于若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的节点数据的变更方法的步骤。
本申请还一种服务器,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如上述实施例中任一项所述的节点数据的变更方法的步骤。
上述节点数据的变更方法、装置、存储介质和服务器,向日志服务器请求变更日志的最新的递增序列号;接收所述日志服务器下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
本方案不需要实现复杂的Leader选举、复杂的各个节点间数据复制,只需要实现相对简单和清晰明了的节点服务器中的各个功能以及维护日志服务器的稳定性,即可保持各个节点服务器的数据一致性;并且,各个节点服务器之间可以同步任何格式和存储状态的数据,数据同步安全,可用性高。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本申请实施例的应用环境图;
图2为一个实施例的节点数据的变更方法流程图;
图3是一个实施例的节点数据的变更装置结构示意图;
图4为一个实施例的电子设备的内部结构框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像本申请实施例中一样被特定定义,否则不会用理想化或过于正式的含义来解释。
随着互联网后端技术的蓬勃发展以及访问流量的激增,越来越多的后端服务需要多机协同工作;在多机协同工作的集群环境下,需要保证多机间数据的一致性。
但是,目前大多采用Raft、Paxos等单主一致性协议,或者Gossip、POW等多主一致性协议的方式实现多机协同工作下的数据一致性,然而该一致性协议较为复杂,需要投入大量资源才能实现,无法应用到一些中小***中;另外,该一致性协议限制较多,使用面较窄。
因此,本申请提出下述实施方式,以解决采用一致性协议的方式实现多机协同工作,其应用范围较小,协议较为复杂的技术缺陷。
参考图1所示,图1是本申请实施例的应用环境图;本实施例中,本申请的技术方案可以基于节点服务器110上实现,如图1中,在多节点服务器中,某一节点服务器110将需要变更的数据以变更日志的形式上传至日志服务器120中,以便其他节点服务器以实现相关功能;在本申请实施例中,节点服务器110向日志服务器120请求变更日志,以便日志服务器120下发变更日志后,由节点服务器110中的复制状态机执行该变更日志,将数据更新至本地,实现节点数据的变更的功能;另外,节点服务器110中的快照用于定期保存复制状态机中的数据和对应的日志序列号。
在一个实施例中,如图2所示,图2为一个实施例的节点数据的变更方法流程图,本实施例中提供了一种节点数据的变更方法,包括如下步骤:
S110:向日志服务器120请求变更日志的最新的递增序列号;其中,所述变更日志是预先按顺序存储在所述日志服务器120上的各个节点服务器的变更数据,并分配唯一的递增序列号。
本申请中,为了保持多个节点服务器之间的数据一致性,以及快速、安全、高效地同步数据,在多机间引入一个日志服务,实现了保持任意数据结构多节点一致性的方案。
本步骤中,当有新变更日志提交到日志服务器120中时,节点服务器110会有感应,如节点服务器110中设置有定时轮询的服务,定时对日志服务器120中存储的日志进行查询,以便及时更新本地的日志。
或者,在日志服务器120中设置主动推送服务,当日志服务器120中有新的变更日志的递增序列号时,可向各个节点服务器进行推送,以便各个节点服务器根据该推送获取最新的递增序列号。
当节点服务器110感知到日志服务器120中有新变更的日志时,可向日志服务器120请求变更日志的最新的递增序列号,以便对本地的日志进行更新。
需要说明的是,这里的日志服务器120指的是存储有顺序的数据变更日志的一个或多个服务器,其中,每条变更日志都有独立的递增序列号,且可以清除历史日志。
这里的节点服务器110由数据、复制状态机、快照、本地的日志序列号组成。其中,各个组成部分分工如下:
a).数据:被同步的数据,可以存储在硬盘或者内存中;
b).复制状态机:按照日志的顺序在数据上进行执行;每一个日志都按照相同的顺序包含相同的指令,所以每一个节点都执行相同的指令序列,最终每一个节点上的数据也是相同的;
c).快照:由数据在某个时间点的备份和这个时间点对应的本地日志序列号组成;
d).本地的日志序列号:最新的已同步日志的序列号。
可以理解的是,这里的按顺序存储指的是按照各个节点服务器提交至日志服务器120中的提交顺序对变更日志进行存储,这样,当其他节点服务器拿到变更日志时,可根据该顺序同步数据,保证各个节点服务器110中的数据一致性。
这里的请求变更日志的最新的递增序列号指的是获取该日志服务器120中存储的最新的已同步的变更日志对应的递增序列号。
另外,这里的日志服务器120可以根据数据量进行选择,如Redis、Kafka,或者自行开发搭建的能够实现本申请功能的日志服务器120,在此不做限制。
S120:接收所述日志服务器120下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;其中,所述本地的日志序列号表示最新的已同步日志的序列号。
本步骤中,通过步骤S110向日志服务器120请求变更日志的最新的递增序列号后,日志服务器120根据节点服务器110的请求下发对应的最新的递增序列号,节点服务器110接收日志服务器120下发的最新的递增序列号。
接着,将该最新的递增序列号与本地的日志序列号之间进行比对,由于本地的日志序列号表示的是最新的已同步日志的序列号,因此,将该日志序列号与日志服务器120下发的最新的递增序列号之间进行比对,可以得知当前节点服务器110中是否需要进行数据变更。
S130:若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器120中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
本步骤中,通过步骤S120中将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更后,可进一步采取如下措施:
若节点服务器中的日志序列号等于最新的递增序列号,表示当前节点服务器110中的数据为最新的数据,无需进行变更。
若节点服务器110中的日志序列号小于最新的递增序列号,则表示当前节点服务器110中的数据需要变更,以使其与其他节点服务器中的数据保持一致。
当需要进行数据变更时,可向日志服务器120请求获取大于本地的日志序列号的递增序列号对应的变更日志,以使本地存储的数据为最新的数据。
进一步地,节点服务器110获取到日志服务器120下发的对应的变更日志后,可通过复制状态机将变更日志中的变更数据更新到本地,这样,各个节点服务器中的数据完成变更后,便能保持数据一致性。
上述节点数据的变更方法,向日志服务器120请求变更日志的最新的递增序列号;接收所述日志服务器120下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器120中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
本方案不需要实现复杂的Leader选举、复杂的各个节点间数据复制,只需要实现相对简单和清晰明了的节点服务器110中的各个功能以及维护日志服务器120的稳定性,即可保持各个节点服务器的数据一致性;并且,各个节点服务器之间可以同步任何格式和存储状态的数据,数据同步安全,可用性高。
在一个实施例中,所述变更日志中包含有本次数据变更信息的可执行指令;步骤S130中获取所述日志服务器120中大于所述日志序列号的递增序列号对应的变更日志,通过复制状态机将所述变更日志中的数据变更到本地的步骤,可以包括:
S131:将获取到的变更日志按照对应的递增序列号进行排序,得到排序后的变更日志;
S132:通过复制状态机依次执行所述排序后的变更日志对应的可执行指令,以将所述可执行指令对应的数据变更信息更新至本地。
本实施例中,由于复制状态机是按照顺序执行从日志服务器120中获取的变更日志,该顺序指的是按照变更日志的递增序列号的顺序进行数据变更。这样,每一个节点服务器中的复制状态机都按照相同的顺序进行数据变更,即可保证每一个节点服务器中的数据保持一致。
并且,从日志服务器120中拉取的变更日志,可能会由于拉取顺序或网络延迟等原因,造成其到达节点服务器110后的顺序不一致,因此,需要对获取到的变更日志的递增序列号进行排序,以使其按照顺序的方式进行排列。
当获取到的变更日志的递增序列号进行排序后,复制状态机可根据排序后的变更日志进行数据变更。
由于变更日志中包含有本次数据变更信息对应的可执行指令,因此,复制状态及可按照顺序依次执行变更日志中的可执行指令,以便将变更日志中包含的变更数据更新到本地。
上述实施例中,通过使用复制状态机执行可执行指令的方式,将日志服务器120中的变更日志更新到本地,无需考虑数据的任何格式和存储状态,即可将变更数据同步到本地,使得数据一致性的实现相对简单和清晰明了,也进一步提高了数据同步的安全性,可用性。
在一个实施例中,步骤S130中通过复制状态机将所述变更日志中的变更数据更新到本地的步骤之后,还可以包括:
S140:将所述变更日志更新为本地日志,并对所述本地日志进行编号,以得到最新的日志序列号;
S141:通过快照定期保存与该时间点对应的数据以及日志序列号。
由于每一个变更日志都按照相同的顺序包含相同的可执行指令,因而,每一个节点服务器获取到变更日志,都由复制状态机按照相同的顺序执行相同的可执行指令,最终每个节点服务器中的数据也是相同的。
本实施例中,当复制状态机将数据变更到本地后,相应地,可将对应的变更日志更新为本地日志,并对其进行编号,使得本地的日志序列号同步为最新的日志序列号,以为下一次数据更新做准备。
另外,当本地的日志序列号以及数据都进行更新后,可通过快照定期保存于该时间点对应的数据的备份以及与该时间点对应的本地的日志序列号。
可以理解的是,由于复制状态机中执行的变更日志的数量可能达到上千条或上万条,因此,可通过快照定期将复制状态机中的数据进行备份,对同时保存于该时间点对应的本地的日志序列号,这样,既可以对历史日志进行清除,也进一步加强了数据的安全性,避免数据丢失。
在一个实施例中,所述节点数据的变更方法,还可以包括:
S150:接收所述日志服务器120下发的新增服务器信息;
S151:根据所述新增服务器信息将所述快照上传至所述日志服务器120中,以使对应的新增服务器通过所述日志服务器120下载所述快照,完成数据更新。
本实施例中,当有新的节点服务器加入时,其他节点服务器可接收日志服务器120下发的新增服务器信息,该新增服务器信息包括但不限定于该新增的节点服务器的IP地址、本地的日志序列号等。
当其他节点服务器110获取到该新增服务器信息后,可将本地的快照上传至日志服务器120中,以便该日志服务器120向新增的节点服务器主动推送,或该新增的节点服务器主动轮询日志服务器120的方式,将快照下载至本地。
当新增的节点服务器将其他节点服务器的快照下载至本地后,通过加载快照,即可将该快照中保存的数据和日志序列号同步到本地。
当同步到最新的日志后,该新增的节点服务器即可提供服务。
可以理解的是,当新增的节点服务器加载其他节点服务器的快照后,可向日志服务器120请求变更日志的最新的递增序列号,以便将该最新的递增序列号与本地的日志序列号之间进行比对,确定本地的日志序列号是否为最新的已同步日志的序列号。
若不是,可依据上述步骤S110、S120以及S130的顺序进行数据变更。
上述实施例中,可通过节点服务器110中的快照实现节点服务器的新增,并且能够高效保持数据一致性。
在一个实施例中,所述节点数据的变更方法,还可以包括:
S160:接收所述日志服务器120下发的其他节点服务器的重启信息;
S161:根据所述重启信息将所述快照上传至所述日志服务器120中,以使所述其他节点服务器通过所述日志服务器120下载所述快照,完成节点重启。
本实施例中,当日志服务器120监测到其他节点服务器需要进行节点重启时,可优先加载该其他节点服务器中的快照,以尝试同步日志。
若该日志序列号小于最小的日志序号,则表示本地的快照中的数据长期未更新,此时需要通过集群中的节点服务器110来辅助重启,方式如下:
可将该其他节点服务器的重启信息下发至各节点服务器中,以便各节点服务器将快照上传至日志服务器120中。
当日志服务器120接收到各节点服务器发送的快照后,该日志服务器120向其他节点服务器主动推送,或该其他节点服务器主动轮询日志服务器120的方式,将快照下载至本地。
可以理解的是,这里的其他节点服务器指的是多节点服务器中的某一个或多个需要重新启动的节点服务器110。
当下载好快照后,该其他节点服务器可加载快照中的数据以及日志序列号,以便更新数据,并根据该日志序列号尝试与日志服务器120之间进行通信,以便确认是否为最新的已同步日志。
上述实施例中,可通过节点服务器110中的快照实现节点重启,即使该节点服务器110长期未使用,也不会影响数据的最终一致性。
在一个实施例中,所述节点数据的变更方法,还可以包括:
S170:接收所述日志服务器120下发的其他节点服务器的脱离信息;
S171:根据所述脱离信息将所述快照上传至所述日志服务器120中,以使所述其他节点服务器通过所述日志服务器120下载所述快照,完成节点数据同步。
本实施例中,当某一节点服务器110长期脱离日志服务器120后,可尝试主动推送变更日志,以便根据该节点服务器110中的日志序列号同步日志。
若本地的日志序列号小于最小的日志序号时,表示本地的快照中的数据长期未更新,此时需要通过集群中的其他节点服务器来唤醒服务。
具体地,日志服务器120监测到某一个或多个节点服务器110长期脱离日志服务器120后,例如,该节点服务器110未在预设时段内同步数据,即可将该其他节点服务器的脱离信息下发至各节点服务器,以便各节点服务器上传本地的快照至日志服务器120中。
当日志服务器120接收到各节点服务器发送的快照后,该日志服务器120向其他节点服务器主动推送,或该其他节点服务器主动轮询日志服务器120的方式,将快照下载至本地。
可以理解的是,这里的其他节点服务器指的是多节点服务器中的某一个或多个需要重新唤醒的节点服务器110。
当下载好快照后,该其他节点服务器可加载快照中的数据以及日志序列号,以便更新数据,并根据该日志序列号尝试与日志服务器120之间进行通信,以便确认是否为最新的已同步日志。
上述实施例中,可通过节点服务器110中的快照实现节点重新唤醒,即使该节点服务器110长期脱离,也不会影响数据的最终一致性。
在一个实施例中,所述节点数据的变更方法,还可以包括:当需要变更数据时,将所述变更数据对应的变更日志提交到所述日志服务器120中,以使所述日志服务器120按照所述变更日志的提交顺序进行存储,并分配递增序列号。
本实施例中,当某一节点服务器110需要变更数据时,可将该变更数据的变更日志主动提交到日志服务器120中,日志服务器120接收到该节点服务器110上传的变更日志,即可根据该变更日志在日志服务器120中的提交顺序进行存储。
日志服务器120将提交的变更日志进行存储后,为其分配唯一的递增序列号,以保证下发递增序列号时,其他节点服务器根据该递增序列号即可对本地的数据进行更新,保证数据一致性。
在一个实施例中,如图3所示,图3为一个实施例的节点数据的变更装置结构示意图,本实施例中提供了一种节点数据的变更装置,其包括:变更请求模块210、数据比对模块220、数据变更模块230,其中:
变更请求模块210,用于向日志服务器120请求变更日志的最新的递增序列号;其中,所述变更日志是预先按顺序存储在所述日志服务器120上的各个节点服务器的变更数据,并分配唯一的递增序列号。
本申请中,为了保持多个节点服务器之间的数据一致性,以及快速、安全、高效地同步数据,在多机间引入一个日志服务,实现了保持任意数据结构多节点一致性的方案。
本模块中,当有新变更日志提交到日志服务器120中时,节点服务器110会有感应,如节点服务器110中设置有定时轮询的服务,定时对日志服务器120中存储的日志进行查询,以便及时更新本地的日志。
或者,在日志服务器120中设置主动推送服务,当日志服务器120中有新的变更日志的递增序列号时,可向各个节点服务器进行推送,以便各个节点服务器根据该推送获取最新的递增序列号。
当节点服务器110感知到日志服务器120中有新变更的日志时,可向日志服务器120请求变更日志的最新的递增序列号,以便对本地的日志进行更新。
需要说明的是,这里的日志服务器120指的是存储有顺序的数据变更日志的一个或多个服务器,其中,每条变更日志都有独立的递增序列号,且可以清除历史日志。
这里的节点服务器110由数据、复制状态机、快照、本地的日志序列号组成。其中,各个组成部分分工如下:
a).数据:被同步的数据,可以存储在硬盘或者内存中;
b).复制状态机:按照日志的顺序在数据上进行执行;每一个日志都按照相同的顺序包含相同的指令,所以每一个节点都执行相同的指令序列,最终每一个节点上的数据也是相同的;
c).快照:由数据在某个时间点的备份和这个时间点对应的本地日志序列号组成;
d).本地的日志序列号:最新的已同步日志的序列号。
可以理解的是,这里的按顺序存储指的是按照各个节点服务器110提交至日志服务器120中的提交顺序对变更日志进行存储,这样,当其他节点服务器拿到变更日志时,可根据该顺序同步数据,保证各个节点服务器中的数据一致性。
这里的请求变更日志的最新的递增序列号指的是获取该日志服务器120中存储的最新的已同步的变更日志对应的递增序列号。
另外,这里的日志服务器120可以根据数据量进行选择,如Redis、Kafka,或者自行开发搭建的能够实现本申请功能的日志服务器120,在此不做限制。
数据比对模块220,用于接收所述日志服务器120下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;其中,所述本地的日志序列号表示最新的已同步日志的序列号。
本模块中,通过变更请求模块210向日志服务器120请求变更日志的最新的递增序列号后,日志服务器120根据节点服务器110的请求下发对应的最新的递增序列号,节点服务器110接收日志服务器120下发的最新的递增序列号。
接着,将该最新的递增序列号与本地的日志序列号之间进行比对,由于本地的日志序列号表示的是最新的已同步日志的序列号,因此,将该日志序列号与日志服务器120下发的最新的递增序列号之间进行比对,可以得知当前节点服务器110中是否需要进行数据变更。
数据变更模块230,用于若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器120中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
本模块中,通过数据比对模块220中将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更后,可进一步采取如下措施:
若节点服务器110中的日志序列号等于最新的递增序列号,表示当前节点服务器110中的数据为最新的数据,无需进行变更。
若节点服务器110中的日志序列号小于最新的递增序列号,则表示当前节点服务器110中的数据需要变更,以使其与其他节点服务器110中的数据保持一致。
当需要进行数据变更时,可向日志服务器120请求获取大于本地的日志序列号的递增序列号对应的变更日志,以使本地存储的数据为最新的数据。
进一步地,节点服务器110获取到日志服务器120下发的对应的变更日志后,可通过复制状态机将变更日志中的变更数据更新到本地,这样,各个节点服务器中的数据完成变更后,便能保持数据一致性。
上述节点数据的变更装置,向日志服务器120请求变更日志的最新的递增序列号;接收所述日志服务器120下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器120中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地。
本方案不需要实现复杂的Leader选举、复杂的各个节点间数据复制,只需要实现相对简单和清晰明了的节点服务器110中的各个功能以及维护日志服务器120的稳定性,即可保持各个节点服务器的数据一致性;并且,各个节点服务器之间可以同步任何格式和存储状态的数据,数据同步安全,可用性高。
关于节点数据的变更装置的具体限定可以参见上文中对于节点数据的变更方法的限定,在此不再赘述。上述节点数据的变更装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端设备中的处理器中,也可以以软件形式存储于终端设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的节点数据的变更方法的步骤。
在一个实施例中,提供了一种服务器,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如上述实施例中任一项所述的节点数据的变更方法的步骤。
图4是一种电子设备的内部结构框图,该电子设备300可以被提供为一服务器。参照图4,电子设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的节点数据的变更方法。
电子设备300还可以包括一个电源组件303被配置为执行电子设备300的电源管理,一个有线或无线网络接口304被配置为将电子设备300连接到网络,和一个输入输出(I/O)接口305。电子设备300可以操作基于存储在存储器301的操作***,例如Windows ServerTM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (9)
1.一种节点数据的变更方法,其特征在于,包括如下步骤:
在定时轮询时确定日志服务器存在变更日志或接收到日志服务器发送的变更日志推送时,向日志服务器请求变更日志的最新的递增序列号;其中,所述变更日志是预先按顺序存储在所述日志服务器上的各个节点服务器的变更数据,并分配唯一的递增序列号;
接收所述日志服务器下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;其中,所述本地的日志序列号表示最新的已同步日志的序列号;
若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地,包括:将获取到的变更日志按照对应的递增序列号进行排序,得到排序后的变更日志;通过复制状态机依次执行所述排序后的变更日志对应的可执行指令,以将所述可执行指令对应的数据变更信息更新至本地;所述变更日志包含有本次数据变更信息的可执行指令。
2.根据权利要求1所述的节点数据的变更方法,其特征在于,所述通过复制状态机将所述变更日志中的变更数据更新到本地的步骤之后,还包括:
将所述变更日志更新为本地日志,并对所述本地日志进行编号,以得到最新的日志序列号;
通过快照定期保存与该时间点对应的数据以及日志序列号。
3.根据权利要求2所述的节点数据的变更方法,其特征在于,还包括:
接收所述日志服务器下发的新增服务器信息;
根据所述新增服务器信息将所述快照上传至所述日志服务器中,以使对应的新增服务器通过所述日志服务器下载所述快照,完成数据更新。
4.根据权利要求2所述的节点数据的变更方法,其特征在于,还包括:
接收所述日志服务器下发的其他节点服务器的重启信息;
根据所述重启信息将所述快照上传至所述日志服务器中,以使所述其他节点服务器通过所述日志服务器下载所述快照,完成节点重启。
5.根据权利要求2所述的节点数据的变更方法,其特征在于,还包括:
接收所述日志服务器下发的其他节点服务器的脱离信息;
根据所述脱离信息将所述快照上传至所述日志服务器中,以使所述其他节点服务器通过所述日志服务器下载所述快照,完成节点数据同步。
6.根据权利要求1所述的节点数据的变更方法,其特征在于,还包括:
当需要变更数据时,将所述变更数据对应的变更日志提交到所述日志服务器中,以使所述日志服务器按照所述变更日志的提交顺序进行存储,并分配递增序列号。
7.一种节点数据的变更装置,其特征在于,包括:
变更请求模块,用于在定时轮询时确定日志服务器存在变更日志或接收到日志服务器发送的变更日志推送时,向日志服务器请求变更日志的最新的递增序列号;其中,所述变更日志是预先按顺序存储在所述日志服务器上的各个节点服务器的变更数据,并分配唯一的递增序列号;
数据比对模块,用于接收所述日志服务器下发的最新的递增序列号,将所述最新的递增序列号与本地的日志序列号进行比对,确定是否需要进行数据变更;其中,所述本地的日志序列号表示最新的已同步日志的序列号;
数据变更模块,用于若所述日志序列号小于所述最新的递增序列号,则获取所述日志服务器中大于所述日志序列号的递增序列号对应的变更日志,并通过复制状态机将所述变更日志中的变更数据更新到本地,包括:将获取到的变更日志按照对应的递增序列号进行排序,得到排序后的变更日志;通过复制状态机依次执行所述排序后的变更日志对应的可执行指令,以将所述可执行指令对应的数据变更信息更新至本地;所述变更日志包含有本次数据变更信息的可执行指令。
8.一种存储介质,其特征在于:所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至6中任一项所述的节点数据的变更方法的步骤。
9.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1至6中任一项所述的节点数据的变更方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010215048.XA CN111444207B (zh) | 2020-03-24 | 2020-03-24 | 节点数据的变更方法、装置、存储介质和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010215048.XA CN111444207B (zh) | 2020-03-24 | 2020-03-24 | 节点数据的变更方法、装置、存储介质和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444207A CN111444207A (zh) | 2020-07-24 |
CN111444207B true CN111444207B (zh) | 2024-03-01 |
Family
ID=71650945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010215048.XA Active CN111444207B (zh) | 2020-03-24 | 2020-03-24 | 节点数据的变更方法、装置、存储介质和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444207B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417033A (zh) * | 2020-10-19 | 2021-02-26 | 中国科学院计算机网络信息中心 | 一种分布式图数据库多节点数据一致性实现方法和*** |
CN113032704B (zh) * | 2021-02-24 | 2024-06-21 | 广州虎牙科技有限公司 | 数据处理方法、装置、电子设备及介质 |
CN115174527B (zh) * | 2022-07-12 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 序列号处理方法和装置、计算设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001159985A (ja) * | 1999-12-02 | 2001-06-12 | Sun Corp | 二重化装置 |
US6449734B1 (en) * | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster |
CN103838642A (zh) * | 2012-11-26 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种数据恢复方法、装置和*** |
CN108280080A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
CN108345617A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200050692A1 (en) * | 2018-08-10 | 2020-02-13 | Microsoft Technology Licensing, Llc | Consistent read queries from a secondary compute node |
-
2020
- 2020-03-24 CN CN202010215048.XA patent/CN111444207B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449734B1 (en) * | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster |
JP2001159985A (ja) * | 1999-12-02 | 2001-06-12 | Sun Corp | 二重化装置 |
CN103838642A (zh) * | 2012-11-26 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种数据恢复方法、装置和*** |
CN108280080A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
CN108345617A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111444207A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444207B (zh) | 节点数据的变更方法、装置、存储介质和服务器 | |
EP2494444B1 (en) | Failover and recovery for replicated data instances | |
JP6084624B2 (ja) | 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ | |
EP3127018B1 (en) | Geographically-distributed file system using coordinated namespace replication | |
EP2494439B1 (en) | Monitoring of replicated data instances | |
US20200218695A1 (en) | Enabling data replication processes between heterogeneous storage systems | |
US7698391B2 (en) | Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate | |
US8407688B2 (en) | Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets | |
US9626177B1 (en) | Peer to peer upgrade management | |
US10469574B1 (en) | Incremental container state persistency and replication for containerized stateful applications | |
JP3706531B2 (ja) | 分散コンピュータ・システム内のプロセッサを再構成する方法 | |
US9501544B1 (en) | Federated backup of cluster shared volumes | |
EP2434729A2 (en) | Method for providing access to data items from a distributed storage system | |
US20090144720A1 (en) | Cluster software upgrades | |
US20080222234A1 (en) | Deployment and Scaling of Virtual Environments | |
US9398092B1 (en) | Federated restore of cluster shared volumes | |
JP2006004434A (ja) | 分散障害許容型コンピューティングシステムにおける効率のよいレプリカセットの変更 | |
CN112882738A (zh) | 一种微服务架构下的配置信息更新方法、装置及电子设备 | |
JP2001117895A (ja) | 分散コンピューティング・システムのクォーラム数判定方法、システムおよび記憶装置 | |
CN112416542A (zh) | 分布式任务***、管理方法、装置和计算机设备 | |
US20170351700A1 (en) | Computer system, file storage controller, and data sharing method | |
US20110238959A1 (en) | Distributed controller, distributed processing system, and distributed processing method | |
CN107786650B (zh) | 一种存储介质和管理策略的同步方法、装置及*** | |
CN108701035B (zh) | 应用属性的管理 | |
CN115145715A (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 |