CN110019514A - 数据同步方法、装置以及电子设备 - Google Patents
数据同步方法、装置以及电子设备 Download PDFInfo
- Publication number
- CN110019514A CN110019514A CN201711083268.6A CN201711083268A CN110019514A CN 110019514 A CN110019514 A CN 110019514A CN 201711083268 A CN201711083268 A CN 201711083268A CN 110019514 A CN110019514 A CN 110019514A
- Authority
- CN
- China
- Prior art keywords
- log
- data
- new cluster
- version
- read
- 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
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/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据同步方法,包括:通知日志队列有新集群加入数据同步;将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;将读取到的日志合并到所述第二数据存储空间中。所述数据同步方法,针对新加入数据同步的新集群,将已同步集群的数据同步到新集群,使新集群与已同步集群的数据保持一致;此外,读取日志队列中的日志合并到新集群,从而使新集群与已同步集群以及日志队列的数据在整体上保持一致,确保数据一致性。
Description
技术领域
本申请涉及数据同步技术领域,具体涉及一种数据同步方法。本申请同时涉及一种数据同步装置,另一种数据同步方法以及装置,以及两种电子设备。
背景技术
随着云计算的发展,越来越多的业务需求要求一种更强大的用于数据存储的数据中心,并且要求数据中心具有较强的高可用性,能够最大程度的减少甚至消除系统故障对正常业务的影响,因此,建立多个数据中心实现业务容灾成为必然选择,这些数据中心之间的数据同步成为实现业务高可用性至关重要的一环。
目前有许多方案着眼于实现分布式场景下的数据一致性,比如ZAB协议(Zookeeper Atomic Broadcast,Zookeeper原子消息广播协议)中,Zab协议定义了三种角色:Leader(领导者)、Follower(追随者)和Observer(观察者),三者都在本地维护了一个log(日志)和snapshot(快照)。当Quorum(集群)当中有新的Follower/Observer加入时,会向当前的Leader提交其当前snapshot的版本,等待Leader返回最近一段时间产生的log;Leader会比较自身log最低的版本与Follower/Observer提交的snapshot的版本,以判断Follower/Observer与自身log之间是否存在空缺,如果不存在空缺,则Leader直接发送自己相比较于Follower多出的log;如果存在空缺,则Leader将自身当前的snapshot发送至Follower/Observer,再将snapshot发送期间产生的log发给Follower/Observer,从而确保新加入Follower/Observer数据满足一致性。然而,在log与snapshot分离的场景下,由于log通常更新的比较快,而snapshot的生成却比较慢,因此,在snapshot生成的过程中可能会出现log被清除,导致snapshot与log之间的版本存在空缺,从而破坏了数据一致性。
发明内容
本申请提供一种数据同步方法,以解决现有技术存在的数据一致性被破坏的缺陷。本申请另外提供一种数据同步装置,另一种数据同步方法以及装置,以及两种电子设备。
本申请提供一种数据同步方法,包括:
通知日志队列有新集群加入数据同步;
将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
将读取到的日志合并到所述第二数据存储空间中。
可选的,所述第一数据存储空间存储的特征数据以数据快照文件的形式同步到所述第二数据存储空间中。
可选的,所述将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,采用如下方式实现:
通过所述新集群向所述第二数据存储空间发送初始化指令;
根据所述初始化指令向所述第一数据存储空间发出快照请求;
根据所述快照请求,生成所述第一数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间;
通过所述第二数据存储空间向所述新集群返回确认消息。
可选的,所述将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志步骤,采用多线程方式实现,并且,基于第一线程将所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间中,以及基于第二线程读取所述日志队列中的日志。
可选的,所述日志队列由日志提交系统提供并进行维护;相应的,所述通知日志队列有新集群加入数据同步,采用如下方式实现:
通过所述新集群向所述日志提交系统发送注册请求;
将所述新集群加入所述日志提交系统提供的集群列表中;
根据所述日志队列中日志的日志版本,读取所述日志队列中日志版本最低的日志对应的日志版本,作为最低日志版本;
将所述最低日志版本发送至所述新集群。
可选的,所述日志提交系统接收到所述注册请求之后,所述日志队列中的日志不允许被删除。
可选的,所述通过所述新集群读取所述日志队列中的日志,采用如下方式实现:
通过所述新集群向所述日志提交系统发送日志读取请求;
根据所述日志读取请求将所述日志队列中的日志发送至所述新集群。
可选的,所述根据所述日志读取请求将所述日志队列中的日志发送至所述新集群子步骤执行后,执行下述操作:
判断所述新集群是否读取到当前所述日志队列中所有日志,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
可选的,所述将读取到的日志合并到所述第二数据存储空间中步骤执行后,执行下述步骤:
判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;
或者,判断所述新集群是否读取到当前所述日志队列中所有日志,若是,判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
可选的,所述日志提交系统接收到所述日志读取确认消息之后,所述日志队列中的日志允许被删除。
可选的,所述日志提交系统提供用于提交过期日志的过期日志确认接口,当通过所述过期日志确认接口接收到所述已同步集群提交的过期日志信息时,根据所述过期日志信息删除所述日志队列中的过期日志。
可选的,所述日志队列中的日志不允许被删除,包括:所述过期日志确认接口不允许被调用;
相应的,所述日志队列中的日志允许被删除,包括:所述过期日志确认接口允许被调用。
可选的,所述初始化指令中包含最低日志版本;相应的,所述根据所述初始化指令向所述第一数据存储空间发出快照请求子步骤执行后,且根据所述快照请求,生成所述第一存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间子步骤执行前,执行下述操作:
根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本,若否,执行所述根据所述快照请求,生成所述第一存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间子步骤。
可选的,若所述根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本子步骤的判断结果为是,等待预设时间间隔后,返回执行所述根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本子步骤。
可选的,所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间之后,执行下述操作:
判断所述数据快照文件所包含数据对应日志的日志版本是否一致,若否,根据所述数据快照文件所包含数据对应日志的日志版本最低的第一日志版本,以及对应日志的日志版本最高的第二日志版本,从所述日志队列获取能够覆盖所述第一日志版本和所述第二日志版本的日志集合,并将读取到的日志集合合并到所述第二数据存储空间中。
可选的,所述日志队列中日志根据所述已同步集群中节点提交的数据变更操作创建,并在创建的日志中记录当前数据变更操作后加入所述日志队列。
可选的,所述将读取到的日志合并到所述第二数据存储空间中,采用如下方式实现:
根据读取到的日志所记录数据变更操作涉及的数据变更,将所述数据变更应用到所述第二数据存储空间中。
可选的,所述数据存储空间采用下述任意一种实现方式提供快照数据文件存储:非关系型数据库和分布式数据库。
本申请还提供一种数据同步装置,包括:
新集群通知单元,用于通知日志队列有新集群加入数据同步;
数据同步单元,用于将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
日志合并单元,用于将读取到的日志合并到所述第二数据存储空间中。
本申请另外提供一种数据同步方法,包括:
向日志提交系统发送注册请求;
接收所述日志提交系统发送的最低日志版本;
基于所述最低日志版本向数据存储空间下发初始化指令;
向所述日志提交系统发送日志读取请求;
接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
本申请另外提供一种数据同步装置,包括:
注册请求发送单元,用于向日志提交系统发送注册请求;
最低日志版本接收单元,用于接收所述日志提交系统发送的最低日志版本;
初始化指令下发单元,用于基于所述最低日志版本向数据存储空间下发初始化指令;
日志读取请求发送单元,用于向所述日志提交系统发送日志读取请求;
日志接收应用单元,用于接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
本申请还提供一种电子设备,包括:
存储器,以及处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
通知日志队列有新集群加入数据同步;
将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
将读取到的日志合并到所述第二数据存储空间中。
本申请另外提供一种电子设备,包括:
存储器,以及处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
向日志提交系统发送注册请求;
接收所述日志提交系统发送的最低日志版本;
基于所述最低日志版本向数据存储空间下发初始化指令;
向所述日志提交系统发送日志读取请求;
接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
本申请提供的所述数据同步方法,通知日志队列有新集群加入数据同步;将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;将读取到的日志合并到所述第二数据存储空间中。
本申请提供的所述数据同步方法,针对新加入数据同步的所述新集群,通知日志队列所述新集群加入数据同步,根据已同步集群的第一数据存储空间存储的特征数据,将所述第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,使所述第二数据存储空间中数据与所述第一数据存储空间存储的特征数据保持一致;此外,读取所述日志队列中的日志,并进一步将所述读取到的所述日志队列中的日志合并到所述第二数据存储空间中,从而使所述新集群与所述已同步集群以及所述日志队列的数据在整体上保持一致,确保数据一致性。
附图说明
附图1是本申请提供的一种数据同步方法实施例的处理流程图;
附图2是本申请提供的一种数据同步交互方式的示意图;
附图3是本申请提供的一种数据同步装置实施例的示意图;
附图4是本申请提供的另一种数据同步方法实施例的处理流程图;
附图5是本申请提供的另一种数据同步装置实施例的示意图;
附图6是本申请提供的一种电子设备实施例的示意图;
附图7是本申请提供的另一种电子设备实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种数据同步方法,本申请另外提供一种数据同步装置,另一种数据同步方法以及装置,以及两种电子设备。以下分别结合本申请提供的实施例的附图逐一进行详细说明,并且对方法的各个步骤进行说明。
本申请提供的数据同步方法实施例如下:
参照附图1,其示出了本申请提供的一种数据同步方法实施例的处理流程图,参照附图2,其示出了本申请提供的一种数据同步交互方式的示意图。
步骤S101,通知日志队列有新集群加入数据同步。
本申请实施例中,集群由至少一个节点组成,节点是指用户可见的服务边界,为用户提供数据服务;进一步,若干个集群可以组成集群集合。采用快照和日志分离的架构,在这种架构下,每一个集群分别设置与各自相关特征数据存储空间,所述特征数据可以是快照,或者仅仅是一个日志索引表,或者是一个描述文件,比如用于存储各自的数据快照以及提供其存储的全量数据快照功能的数据存储空间;针对用户在集群中节点的每一次数据变更操作,都会被记录到日志中,同时也会将数据变更操作所带来的数据变更应用到集群的数据存储空间中,通过提供全局唯一的日志队列,所有的日志均被会被加入日志队列当中(但日志队列通过自身机制可以实现将过期日志从日志队列中清除,因此,日志队列中只暂存最近的日志,并不是全量日志),通过日志队列确保集群之间的数据一致性:当日志队列中有新的日志提交时,每一个集群都会从日志队列中读取新提交的日志,并分别将各自读取到的日志所记录数据变更操作涉及的数据变更应用到各自的数据存储空间中,从而保证相互之间的数据一致性。
同时,在这种架构下,不会因为集群集合中集群数量过多导致的性能瓶颈而影响集群集合的水平扩展,因此,有必要提供针对集群集合中新加入集群(新集群)的数据同步机制:根据任意一个已同步集群的数据存储空间(第一数据存储空间)当前存储的全量数据生成一个数据快照文件,然后将数据快照文件通过网络异步复制到新集群的数据存储空间(第二数据存储空间),最后利用数据快照文件来初始化新集群的数据存储空间,使新集群与集群集合中已同步集群保持同步。但是,由于数据快照文件代表的是全量数据,往往比较大,因此,不管是生成数据快照文件,还是通过网络传输数据快照文件的时候,需要花费的时间都比较长,在此期间,日志队列中不断有新的日志加入,同时过期的日志被清除,这会导致数据快照文件成功同步到新集群的数据存储空间后,日志队列中的日志早已与数据快照文件脱节,即导致快照与日志脱节,数据一致性无法得到满足。本申请提供的所述数据同步方法,能够解决所述数据一致性无法满足的问题。
本申请实施例中,所述日志队列由日志提交系统提供并进行维护,同时,由于集群之间的数据同步是在所述日志队列全局唯一的基础上实现的。同时,由于所述日志提交系统提供的日志队列具有全局唯一性,全局所有集群都会将数据请求提交至所述日志提交系统,并转换为日志加入所述日志队列中,因此,一旦集群提供的数据服务的用户比较多,则所述日志提交系统提供的日志队列的日志数目也会比较大,甚至会存在海量的日志,存储这些日志占用的存储空间也会比较大,为了循环利用所述日志提交系统提供的日志队列中日志的存储空间,节省存储资源,在实际应用中,所述日志提交系统可对外提供日志队列抽象,反应在API上对外提供用于提交过期日志的过期日志确认接口,利用所述过期日志确认接口能够将所述日志队列中不再使用的日志删除,具体实现如下:当通过所述过期日志确认接口接收到所述已同步集群提交的过期日志信息时,根据所述过期日志信息删除所述日志队列中的过期日志。
在具体实施时,所述数据存储空间用于提供全量数据的存储,具体可采用下述任意一种实现方式提供快照数据文件存储:非关系型数据库和分布式数据库。需要指出的是,所述数据存储空间的实现并不限于上述提供的非关系型数据库和分布式数据库,还可以采用其他类型的数据实现,或者采用数据库之外的其他方式来实现全量数据的存储。
本申请实施例中,当集群集合中有新集群加入时,新加入的所述新集群的数据存储空间为空,需要从集群集合中任意一个已同步集群同步数据至新加入的所述新集群,使新加入的所述新集群与所述已同步集群的数据保持一致。本步骤中,当集群集合中有新集群加入时,通知所述日志队列当前新加入的所述新集群加入数据同步,具体可采用如下方式实现:
1)通过所述新集群向所述日志提交系统发送注册请求;
2)将所述新集群加入所述日志提交系统提供的集群列表中;
3)根据所述日志队列中日志的日志版本,读取所述日志队列中日志版本最低的日志对应的日志版本,作为最低日志版本;
4)将所述最低日志版本发送至所述新集群。
例如,如附图2所示,新集群Frontend_1向日志提交系统发送注册请求,日志提交系统将新集群Frontend_1加入集群列表中,读取日志队列中日志版本最低的日志对应的最低日志版本minLogVersion,将最低日志版本minLogVersion发送至新集群Frontend_1。
如上所述,由于数据快照文件代表的全量数据往往比较大,即:已同步集群的数据存储空间存储的全量数据比较大,在生成数据快照文件和通过网络传输数据快照文件的过程中,可能会导致日志队列中的日志与数据快照文件脱节;为了避免这种情况的发生,当所述日志提交系统接收到所述新集群发送的注册请求之后,所述日志提交系统维护的日志队列中的日志不允许被删除,比如通过将所述日志提交系统对外提供的过期日志确认接口设置为不允许被调用状态,从而使接收到注册请求之后的日志得以在所述日志队列中保留。
步骤S102,将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志。
本步骤执行两个操作:将所述已同步集群的数据存储空间存储的特征数据同步到所述新集群的数据存储空间中,即:从所述已同步集群同步数据至所述新集群的操作,以及通过所述新集群读取所述日志队列中的日志的操作。这两个操作并没有执行的先后顺序,在执行时可先执行任意一个操作,此后执行另一操作。在具体实施时,从所述已同步集群同步数据至所述新集群的过程中,可以数据快照文件的形式从所述已同步集群同步数据至所述新集群,具体采用如下方式实现:
1)所述新集群向其自身的数据存储空间发送初始化指令;
2)所述新集群的数据存储空间根据所述初始化指令向所述已同步集群的数据存储空间发出快照请求;
3)根据所述快照请求,生成所述已同步集群的数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述新集群的数据存储空间;
4)所述新集群的数据存储空间向所述新集群发送确认消息。
例如,如附图2所示,新集群Frontend_1向数据存储空间BulkStorage_1发送初始化指令,数据存储空间BulkStorage_1接收到初始化指令后,向数据存储空间BulkStorage_0发出快照请求,数据存储空间BulkStorage_0接收到快照请求后,给当前存储的全量数据打一个快照,生成包含全量数据的数据快照文件snapshot_0,并将数据快照文件snapshot_0发送至数据存储空间BulkStorage_1,,并向新集群Frontend_1发送确认消息。
所述通过所述新集群读取所述日志队列中的日志,可采用如下方式实现:通过所述新集群向所述日志提交系统发送日志读取请求;根据所述日志读取请求将所述日志队列中的日志发送至所述新集群。例如,如附图2所示,新集群Frontend_1向日志提交系统发送日志读取请求Request for Log,日志提交系统向新集群Frontend_1发送日志队列中的日志(Send Log)。
如上所述,所述日志提交系统接收到所述新集群发送的注册请求之后,所述日志队列中的日志不允许被删除,但随着时间的推移,所述日志队列中日志数量不断增加,为了避免所述日志队列中日志的大量堆积,有必要在将所述日志队列中日志同步到所述新集群的基础上,恢复利用所述过期日志确认接口清除所述日志队列中过期日志这一机制。在具体实施时,可通过判断所述新集群是否读取到当前所述日志队列中所有日志,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;若否,继续从所述日志队列中读取日志,直至所述日志队列中的日志全部读取到所述新集群。所述日志提交系统接收到所述日志读取确认消息之后,所述日志队列中的日志允许被删除,比如通过将所述过期日志确认接口从上述不允许被调用状态变更为允许被调用状态,根据过期日志确认接口提交的过期日志信息删除所述日志队列中的过期日志,从而避免日志在所述日志队列中大量堆积。
除此之外,还可以通过判断所述新集群读取到的日志是否全部合并到所述新集群的数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;若否,继续从所述日志队列中读取日志,直至所述日志队列中的日志全部读取到所述新集群。或者,通过判断所述新集群是否读取到当前所述日志队列中所有日志,若是,判断读取到的日志是否全部合并到所述新集群的数据存储空间中,如果是,通过所述新集群向所述日志提交系统发送日志读取确认消;如果否,继续从所述日志队列中读取日志,直至所述日志队列中的日志全部读取到所述新集群。
在实际应用中,可能会出现如下情形:所述新集群向所述日志提交系统发送注册请求后,所述日志队列中日志不允许被清除,即:所述日志队列中的日志从当前最低日志版本开始得以保留,但所述已同步集群的数据存储空间存储的特征数据对应的日志版本小于所述最低日志版本。在这种情形下,如果从所述已同步集群同步数据至所述新集群,会导致所述数据快照文件无法与从所述日志队列读取到的日志衔接,丢失了所述最低日志版本之前的一段数据。因此,为了避免数据同步过程中的数据丢失,所述新集群向其自身的数据存储空间发送初始化指令时,可在所述初始化指令中携带所述最低日志版本,在此基础上,在上述所述新集群的数据存储空间根据所述初始化指令向所述已同步集群的数据存储空间发出快照请求操作执行后,并且上述根据所述快照请求,生成所述已同步集群的数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述新集群的数据存储空间操作执行前,执行如下日志版本判断操作:
根据所述已同步集群的数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本,若是,等待预设时间间隔后,再次执行所述日志版本判断操作,判断所述已同步集群的数据存储空间存储的特征数据对应的日志版本是否低于所述最低日志版本;若否,则表明不存在数据丢失,继续执行上述根据所述快照请求,生成所述已同步集群的数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述新集群的数据存储空间操作即可。
此外,由于所述由于数据快照文件代表的全量数据往往比较大,即:已同步集群的数据存储空间存储的全量数据比较大,生成所述数据快照文件需要花费的时间较长;同时,在生成所述数据快照文件的过程中,所述已同步集群会从所述日志提交系统读取日志,并将读取到的日志所记录的数据变更操作所带来的数据变更应用到数据存储空间中;因此,在生成所述数据快照文件的过程中,可能会有未被生成数据快照文件部分数据被读取到的日志所更新,并且该部分数据在更新后继续生成数据快照文件的操作,导致数据快照文件中包含的数据对应日志的日志版本不一致,存在多个日志版本,从而导致所述新集群与所述已同步集群二者的数据一致性遭到破坏。在此,可通过如下数据一致性判断操作来避免所述新集群与所述已同步集群二者的数据一致性遭到破坏:
判断所述数据快照文件所包含数据对应日志的日志版本是否一致,若是,则表明所述新集群与所述已同步集群二者数据保持一致,不作处理即可;若否,表明所述新集群与所述已同步集群二者的数据一致性遭到破坏,根据所述数据快照文件所包含数据对应日志的日志版本最低的第一日志版本,以及对应日志的日志版本最高的第二日志版本,从所述日志队列获取能够覆盖所述第一日志版本和所述第二日志版本的日志集合,并将读取到的日志集合合并到所述新集群的数据存储空间中。
例如,数据快照文件snapshot_0中包含的数据对应日志的日志版本有5个,根据日志版本最低的日志版本SnapVersion_1,以及日志版本最高的日志版本SnapVersion_5,从日志队列中读取能够覆盖从日志版本SnapVersion_1至日志版本SnapVersion_5的这一区间的日志,并将读取到的日志应用到新集群Frontend_1的数据存储空间BulkStorage_1中。
在理想的条件下,如果生成以及传输所述数据快照文件的过程是瞬时的,则在完成将所述数据快照文件从所述已同步集群同步到所述新集群之后,即接收到所述新集群的数据存储空间发送的确认消息之后,开始将从所述日志提交系统读取到的日志合并到所述新集群的数据存储空间中;同时,所述新集群在所述日志提交系统注册成功之后,会重复不断的执行从所述日志提交系统读取日志的操作,并且,在接收到所述新集群的数据存储空间发送的确认消息之后,其自身的消息机制会保证:能够将所有从所述日志提交系统读取到的日志应用到的所述新集群的数据存储空间中。因此,所述新集群在接收到其自身的数据存储空间发送的确认消息之后,可以像集群集合中的其他已同步集群一样对外提供数据服务。但一般而言,所述数据快照文件的生成以及传输需要花费较长的时间,因此,所述新集群需要在执行上述数据一致性判断操作的基础上,根据接收到的其自身数据存储空间发送的确认消息对外提供数据服务。
如上所述,本步骤执行的两个操作并没有执行先后顺序,因此可以先执行任意一个操作,在此之后执行另一操作。除此之外,在实际应用中,还可以采用多线程方式来执行这两个操作:基于第一线程将所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间中,以及基于第二线程读取所述日志队列中的日志,在一定程度上能够节省数据同步时间,从而进一步减少日志在所述日志队列中的堆积。例如,如附图2所示,新集群Frontend_1采用双线程方式并行执行,其中一个线程用于将数据快照文件snapshot_0从数据存储空间BulkStorage_0同步至数据存储空间BulkStorage_1,另一个线程用于从日志提交系统读取日志。
步骤S103,将读取到的日志合并到所述第二数据存储空间中。
上述步骤S102将所述已同步集群的数据存储空间存储的特征数据同步到所述新集群的数据存储空间中,以及通过所述新集群读取所述日志队列中的日志,在此基础上,本步骤将读取到的日志合并到所述新集群的数据存储空间中,从而集群集合中新加入的所述新集群与集群集合中已同步集群保持数据一致性。具体的,根据读取到的日志所记录数据变更操作涉及的数据变更,将所述数据变更应用到所述第二数据存储空间中。例如,如附图2所示,将读取到的日志所记录数据变更操作涉及的数据变更应用到数据存储空间BulkStorage_1,使数据存储空间BulkStorage_1的数据与数据存储空间BulkStorage_0的数据保持一致。
综上所述,本申请提供的所述数据同步方法,针对新加入集群集合的所述新集群,通知日志队列所述新集群加入数据同步,根据所述已同步集群的数据存储空间存储的特征数据,以数据快照文件的形式将所述已同步集群的数据存储空间存储的特征数据同步到所述新集群的数据存储空间中,使新加入的所述新集群与所述已同步集群的数据保持一致;此外,从所述日志提交系统读取日志队列中的日志,并进一步将读取到的日志合并到所述新集群的数据存储空间中,即:将读取到的日志合并到从所述已同步集群同步到的数据快照文件中,从而使新加入的所述新集群与所述已同步集群以及所述日志队列在整体上保持数据一致,确保数据一致性。
本申请提供的一种数据同步装置实施例如下:
在上述的实施例中,提供了一种数据同步方法,与之相对应的,本申请还提供了一种数据同步装置,下面结合附图进行说明。
参照附图3,其示出了本申请提供的一种数据同步装置实施例的示意图。
由于装置实施例与上述提供的方法实施例相互对应,阅读本实施例的内容请参照上述方法实施例的对应说明。下述描述的装置实施例仅仅是示意性的。
本申请提供一种数据同步装置,包括:
新集群通知单元301,用于通知日志队列有新集群加入数据同步;
数据同步单元302,用于将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
日志合并单元303,用于将读取到的日志合并到所述第二数据存储空间中。
可选的,所述第一数据存储空间存储的特征数据以数据快照文件的形式同步到所述第二数据存储空间中。
可选的,所述数据同步单元302,包括:
初始化指令发送子单元,用于通过所述新集群向所述第二数据存储空间发送初始化指令;
快照请求发送子单元,用于根据所述初始化指令向所述第一数据存储空间发出快照请求;
快照数据文件生成子单元,用于根据所述快照请求,生成所述第一数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间;
确认消息返回子单元,用于通过所述第二数据存储空间向所述新集群返回确认消息。
可选的,所述数据同步单元302采用多线程方式实施,并且,基于第一线程将所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间中,以及基于第二线程读取所述日志队列中的日志。
可选的,所述日志队列由日志提交系统提供并进行维护;相应的,所述新集群通知单元301,包括:
注册请求发送子单元,用于通过所述新集群向所述日志提交系统发送注册请求;
新集群注册子单元,用于将所述新集群加入所述日志提交系统提供的集群列表中;
最低日志版本读取子单元,用于根据所述日志队列中日志的日志版本,读取所述日志队列中日志版本最低的日志对应的日志版本,作为最低日志版本;
最低日志版本发送子单元,用于将所述最低日志版本发送至所述新集群。
可选的,所述日志提交系统接收到所述注册请求之后,所述日志队列中的日志不允许被删除。
可选的,所述数据同步单元302,包括:
日志读取请求发送子单元,用于通过所述新集群向所述日志提交系统发送日志读取请求;
日志发送子单元,用于根据所述日志读取请求将所述日志队列中的日志发送至所述新集群。
可选的,数据同步单元302,包括:
日志判断子单元,用于判断所述新集群是否读取到当前所述日志队列中所有日志,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
可选的,所述数据同步装置,包括:
第一日志判断单元,用于判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;
第二日志判断单元,用于判断所述新集群是否读取到当前所述日志队列中所有日志,若是,运行第三日志判断单元;所述第三日志判断单元,用于判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
可选的,所述日志提交系统接收到所述日志读取确认消息之后,所述日志队列中的日志允许被删除。
可选的,所述日志提交系统提供用于提交过期日志的过期日志确认接口,当通过所述过期日志确认接口接收到所述已同步集群提交的过期日志信息时,根据所述过期日志信息删除所述日志队列中的过期日志。
可选的,所述日志队列中的日志不允许被删除,包括:所述过期日志确认接口不允许被调用;相应的,所述日志队列中的日志允许被删除,包括:所述过期日志确认接口允许被调用。
可选的,所述初始化指令中包含最低日志版本;相应的,所述数据同步单元302,包括:
日志版本判断子单元,用于根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本,若否,运行所述快照数据文件生成子单元。
可选的,若所述日志版本判断子单元输出的判断结果为所述日志版本低于所述最低日志版本,则等待预设时间间隔后,运行所述日志版本判断子单元。
可选的,所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间之后,运行日志版本一致性判断单元;所述日志版本一致性判断单元,用于判断所述数据快照文件所包含数据对应日志的日志版本是否一致,若否,运行日志读取合并单元;所述日志读取合并单元,用于根据所述数据快照文件所包含数据对应日志的日志版本最低的第一日志版本,以及对应日志的日志版本最高的第二日志版本,从所述日志队列获取能够覆盖所述第一日志版本和所述第二日志版本的日志集合,并将读取到的日志集合合并到所述第二数据存储空间中。
可选的,所述日志队列中日志根据所述已同步集群中节点提交的数据变更操作创建,并在创建的日志中记录当前数据变更操作后加入所述日志队列。
可选的,所述日志合并单元303,具体用于根据读取到的日志所记录数据变更操作涉及的数据变更,将所述数据变更应用到所述第二数据存储空间中。
可选的,所述数据存储空间采用下述任意一种实现方式提供快照数据文件存储:非关系型数据库和分布式数据库。
本申请提供的另一种数据同步方法实施例如下:
在上述的实施例中,提供了一种数据同步方法,方法实施主体为日志提交系统;此外,本申请还提供了另一种数据同步方法,方法实施主体为新集群,二者相互配合,下面结合附图进行说明。参照附图4,其示出了本申请提供的另一种数据同步方法实施例的处理流程图,参照附图2,其示出了本申请提供的一种数据同步交互方式的示意图。
由于当前提供的另一种数据同步方法实施例与上述提供的所述数据同步方法实施例相互配合,因此,阅读本实施例的内容请参照上述提供的所述数据同步方法实施例的对应说明。下述描述的方法实施例仅仅是示意性的。
本申请实施例提供的数据同步方法,包括:
步骤S401,向日志提交系统发送注册请求。
本申请实施例中,当集群集合中有新集群加入时,新加入的所述新集群的数据存储空间为空,需要从集群集合中任意一个已同步集群同步数据至新加入的所述新集群,使新加入的所述新集群与所述已同步集群的数据保持一致。除此之外,所述新集群还可以基于所述日志提交系统实现数据同步,使其数据与集群集合中其他数据保持同步。本申请实施例以所述新集群从所述集群集合中任意一个已同步集群同步数据这一实现方式为例进行说明,具体的,当集群集合中有新集群加入时,由新加入的所述新集群向所述日志提交系统发送注册请求,所述日志提交系统在接收到所述新集群发送的注册请求后,将所述新集群加入所述日志提交系统提供的集群列表中,根据所述日志队列中日志的日志版本,读取所述日志队列中日志版本最低的日志对应的日志版本,作为最低日志版本,并将所述最低日志版本向所述新集群发送。
例如,如附图2所示,新集群Frontend_1向日志提交系统发送注册请求,日志提交系统将新集群Frontend_1加入集群列表中,读取日志队列中日志版本最低的日志对应的最低日志版本minLogVersion,向新集群Frontend_1发送最低日志版本minLogVersion。
如上所述,由于数据快照文件代表的全量数据往往比较大,即:已同步集群的数据存储空间存储的全量数据比较大,在生成数据快照文件和通过网络传输数据快照文件的过程中,可能会导致日志队列中的日志与数据快照文件脱节;为了避免这种情况的发生,当所述日志提交系统接收到所述新集群发送的注册请求之后,所述日志提交系统维护的日志队列中的日志不允许被删除,比如通过将所述日志提交系统对外提供的过期日志确认接口设置为不允许被调用状态,从而使接收到注册请求之后的日志得以在所述日志队列中保留。
步骤S402,接收所述日志提交系统发送的最低日志版本。
步骤S403,基于所述最低日志版本向数据存储空间下发初始化指令。
所述新集群向其自身的数据存储空间发送初始化指令之后,所述新集群的数据存储空间根据所述初始化指令向所述已同步集群的数据存储空间发出快照请求,并根据所述快照请求,生成所述已同步集群的数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述新集群的数据存储空间,这一过程完成后所述新集群的数据存储空间会向所述新集群发送确认消息。
例如,如附图2所示,新集群Frontend_1向数据存储空间BulkStorage_1发送初始化指令,数据存储空间BulkStorage_1接收到初始化指令后,向数据存储空间BulkStorage_0发出快照请求,数据存储空间BulkStorage_0接收到快照请求后,给当前存储的全量数据打一个快照,生成包含全量数据的数据快照文件snapshot_0,并将数据快照文件snapshot_0发送至数据存储空间BulkStorage_1,,并向新集群Frontend_1发送确认消息。
步骤S404,向所述日志提交系统发送日志读取请求。
步骤S405,接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
例如,如附图2所示,新集群Frontend_1向日志提交系统发送日志读取请求Request for Log后,日志提交系统向新集群Frontend_1发送日志队列中的日志(SendLog)。
如上所述,所述日志提交系统接收到所述新集群发送的注册请求之后,所述日志队列中的日志不允许被删除,但随着时间的推移,所述日志队列中日志数量不断增加,为了避免所述日志队列中日志的大量堆积,有必要在将所述日志队列中日志同步到所述新集群的基础上,恢复利用所述过期日志确认接口清除所述日志队列中过期日志这一机制。在具体实施时,可通过判断所述新集群是否读取到当前所述日志队列中所有日志,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;若否,继续从所述日志队列中读取日志,直至所述日志队列中的日志全部读取到所述新集群。所述日志提交系统接收到所述日志读取确认消息之后,所述日志队列中的日志允许被删除,比如通过将所述过期日志确认接口从上述不允许被调用状态变更为允许被调用状态,根据过期日志确认接口提交的过期日志信息删除所述日志队列中的过期日志,从而避免日志在所述日志队列中大量堆积。
上述步骤将所述已同步集群的数据存储空间存储的特征数据同步到所述新集群的数据存储空间中,以及通过所述新集群读取所述日志队列中的日志,在此基础上,将读取到的日志合并到所述新集群的数据存储空间中,从而集群集合中新加入的所述新集群与集群集合中已同步集群保持数据一致性。具体的,根据读取到的日志所记录数据变更操作涉及的数据变更,将所述数据变更应用到所述新集群的数据存储空间中。例如,如附图2所示,将读取到的日志所记录数据变更操作涉及的数据变更应用到数据存储空间BulkStorage_1,使数据存储空间BulkStorage_1的数据与数据存储空间BulkStorage_0的数据保持一致。
本申请提供的另一种数据同步装置实施例如下:
在上述的实施例中,提供了另一种数据同步方法,与之相对应的,本申请还提供了另一种数据同步装置,下面结合附图进行说明。
参照附图5,其示出了本申请提供的另一种数据同步装置实施例的示意图。
由于装置实施例与上述提供的方法实施例相互对应,阅读本实施例的内容请参照上述方法实施例的对应说明。下述描述的装置实施例仅仅是示意性的。
本申请提供另一种数据同步装置,包括:
注册请求发送单元,用于向日志提交系统发送注册请求;
最低日志版本接收单元,用于接收所述日志提交系统发送的最低日志版本;
初始化指令下发单元,用于基于所述最低日志版本向数据存储空间下发初始化指令;
日志读取请求发送单元,用于向所述日志提交系统发送日志读取请求;
日志接收应用单元,用于接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
本申请提供的一种电子设备实施例如下:
在上述的实施例中,提供了一种数据同步方法,此外,本申请还提供了一种用于实现所述数据同步方法的电子设备,下面结合附图进行说明。
参照附图6,其示出了本实施例提供的一种电子设备的示意图。
本申请提供的所述电子设备用于实现本申请提供的所述数据同步方法,本实施例与上述提供的数据同步方法实施例相对应,阅读本实施例的内容请参照上述提供的数据同步方法实施例的对应说明。下述描述的实施例仅仅是示意性的。
本申请提供一种电子设备,包括:
存储器601,以及处理器602;
所述存储器601用于存储计算机可执行指令,所述处理器602用于执行所述计算机可执行指令:
通知日志队列有新集群加入数据同步;
将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
将读取到的日志合并到所述第二数据存储空间中。
可选的,所述第一数据存储空间存储的特征数据以数据快照文件的形式同步到所述第二数据存储空间中。
可选的,所述将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,采用如下方式实现:
通过所述新集群向所述第二数据存储空间发送初始化指令;
根据所述初始化指令向所述第一数据存储空间发出快照请求;
根据所述快照请求,生成所述第一数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间;
通过所述第二数据存储空间向所述新集群返回确认消息。
可选的,所述将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志指令在执行时,采用多线程方式执行,并且,基于第一线程将所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间中,以及基于第二线程读取所述日志队列中的日志。
可选的,所述日志队列由日志提交系统提供并进行维护;相应的,所述通知日志队列有新集群加入数据同步,采用如下方式实现:
通过所述新集群向所述日志提交系统发送注册请求;
将所述新集群加入所述日志提交系统提供的集群列表中;
根据所述日志队列中日志的日志版本,读取所述日志队列中日志版本最低的日志对应的日志版本,作为最低日志版本;
将所述最低日志版本发送至所述新集群。
可选的,所述日志提交系统接收到所述注册请求之后,所述日志队列中的日志不允许被删除。
可选的,所述通过所述新集群读取所述日志队列中的日志,采用如下方式实现:
通过所述新集群向所述日志提交系统发送日志读取请求;
根据所述日志读取请求将所述日志队列中的日志发送至所述新集群。
可选的,所述根据所述日志读取请求将所述日志队列中的日志发送至所述新集群指令执行后,所述处理器602还用于执行下述计算机可执行指令:
判断所述新集群是否读取到当前所述日志队列中所有日志,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
可选的,所述将读取到的日志合并到所述第二数据存储空间中指令执行后,所述处理器602还用于执行下述计算机可执行指令:
判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;
或者,判断所述新集群是否读取到当前所述日志队列中所有日志,若是,判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
可选的,所述日志提交系统接收到所述日志读取确认消息之后,所述日志队列中的日志允许被删除。
可选的,所述日志提交系统提供用于提交过期日志的过期日志确认接口,当通过所述过期日志确认接口接收到所述已同步集群提交的过期日志信息时,根据所述过期日志信息删除所述日志队列中的过期日志。
可选的,所述日志队列中的日志不允许被删除,包括:所述过期日志确认接口不允许被调用;相应的,所述日志队列中的日志允许被删除,包括:所述过期日志确认接口允许被调用。
可选的,所述初始化指令中包含最低日志版本;相应的,所述根据所述初始化指令向所述第一数据存储空间发出快照请求指令执行后,且根据所述快照请求,生成所述第一存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间指令执行前,所述处理器602还用于执行下述计算机可执行指令:
根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本,若否,执行所述根据所述快照请求,生成所述第一存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间指令。
可选的,若所述根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本指令的执行结果为是,等待预设时间间隔后,返回执行所述根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本指令。
可选的,所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间之后,所述处理器602还用于执行下述计算机可执行指令:
判断所述数据快照文件所包含数据对应日志的日志版本是否一致,若否,根据所述数据快照文件所包含数据对应日志的日志版本最低的第一日志版本,以及对应日志的日志版本最高的第二日志版本,从所述日志队列获取能够覆盖所述第一日志版本和所述第二日志版本的日志集合,并将读取到的日志集合合并到所述第二数据存储空间中。
可选的,所述日志队列中日志根据所述已同步集群中节点提交的数据变更操作创建,并在创建的日志中记录当前数据变更操作后加入所述日志队列。
可选的,所述将读取到的日志合并到所述第二数据存储空间中,采用如下方式实现:根据读取到的日志所记录数据变更操作涉及的数据变更,将所述数据变更应用到所述第二数据存储空间中。
可选的,所述数据存储空间采用下述任意一种实现方式提供快照数据文件存储:非关系型数据库和分布式数据库。
本申请提供的一种电子设备实施例如下:
在上述的实施例中,提供了一种数据同步方法,此外,本申请还提供了一种用于实现所述数据同步方法的电子设备,下面结合附图进行说明。
参照附图7,其示出了本实施例提供的一种电子设备的示意图。
本申请提供的所述电子设备用于实现本申请提供的所述数据同步方法,本实施例与上述提供的数据同步方法实施例相对应,阅读本实施例的内容请参照上述提供的数据同步方法实施例的对应说明。下述描述的实施例仅仅是示意性的。
本申请提供一种电子设备,包括:
存储器701,以及处理器702;
所述存储器701用于存储计算机可执行指令,所述处理器7402用于执行所述计算机可执行指令:
向日志提交系统发送注册请求;
接收所述日志提交系统发送的最低日志版本;
基于所述最低日志版本向数据存储空间下发初始化指令;
向所述日志提交系统发送日志读取请求;
接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (23)
1.一种数据同步方法,其特征在于,包括:
通知日志队列有新集群加入数据同步;
将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
将读取到的日志合并到所述第二数据存储空间中。
2.根据权利要求1所述的数据同步方法,其特征在于,所述第一数据存储空间存储的特征数据以数据快照文件的形式同步到所述第二数据存储空间中。
3.根据权利要求2所述的数据同步方法,其特征在于,所述将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,采用如下方式实现:
通过所述新集群向所述第二数据存储空间发送初始化指令;
根据所述初始化指令向所述第一数据存储空间发出快照请求;
根据所述快照请求,生成所述第一数据存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间;
通过所述第二数据存储空间向所述新集群返回确认消息。
4.根据权利要求1所述的数据同步方法,其特征在于,所述将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志步骤,采用多线程方式实现,并且,基于第一线程将所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间中,以及基于第二线程读取所述日志队列中的日志。
5.根据权利要求1所述的数据同步方法,其特征在于,所述日志队列由日志提交系统提供并进行维护;
相应的,所述通知日志队列有新集群加入数据同步,采用如下方式实现:
通过所述新集群向所述日志提交系统发送注册请求;
将所述新集群加入所述日志提交系统提供的集群列表中;
根据所述日志队列中日志的日志版本,读取所述日志队列中日志版本最低的日志对应的日志版本,作为最低日志版本;
将所述最低日志版本发送至所述新集群。
6.根据权利要求5所述的数据同步方法,其特征在于,所述日志提交系统接收到所述注册请求之后,所述日志队列中的日志不允许被删除。
7.根据权利要求6所述的数据同步方法,其特征在于,所述通过所述新集群读取所述日志队列中的日志,采用如下方式实现:
通过所述新集群向所述日志提交系统发送日志读取请求;
根据所述日志读取请求将所述日志队列中的日志发送至所述新集群。
8.根据权利要求7所述的数据同步方法,其特征在于,所述根据所述日志读取请求将所述日志队列中的日志发送至所述新集群子步骤执行后,执行下述操作:
判断所述新集群是否读取到当前所述日志队列中所有日志,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
9.根据权利要求8所述的数据同步方法,其特征在于,所述将读取到的日志合并到所述第二数据存储空间中步骤执行后,执行下述步骤:
判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息;
或者,判断所述新集群是否读取到当前所述日志队列中所有日志,若是,判断读取到的日志是否全部合并到所述第二数据存储空间中,若是,通过所述新集群向所述日志提交系统发送日志读取确认消息。
10.根据权利要求8或9所述的数据同步方法,其特征在于,所述日志提交系统接收到所述日志读取确认消息之后,所述日志队列中的日志允许被删除。
11.根据权利要求10所述的数据同步方法,其特征在于,所述日志提交系统提供用于提交过期日志的过期日志确认接口,当通过所述过期日志确认接口接收到所述已同步集群提交的过期日志信息时,根据所述过期日志信息删除所述日志队列中的过期日志。
12.根据权利要求12所述的数据同步方法,其特征在于,所述日志队列中的日志不允许被删除,包括:所述过期日志确认接口不允许被调用;
相应的,所述日志队列中的日志允许被删除,包括:所述过期日志确认接口允许被调用。
13.根据权利要求3所述的数据同步方法,其特征在于,所述初始化指令中包含最低日志版本;
相应的,所述根据所述初始化指令向所述第一数据存储空间发出快照请求子步骤执行后,且根据所述快照请求,生成所述第一存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间子步骤执行前,执行下述操作:
根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本,若否,执行所述根据所述快照请求,生成所述第一存储空间存储的特征数据的快照数据文件,并将所述数据快照文件发送至所述第二数据存储空间子步骤。
14.根据权利要求13所述的数据同步方法,其特征在于,若所述根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本子步骤的判断结果为是,等待预设时间间隔后,返回执行所述根据所述第一数据存储空间存储的特征数据对应的日志版本,判断所述日志版本是否低于所述最低日志版本子步骤。
15.根据权利要求3所述的数据同步方法,其特征在于,所述第一数据存储空间存储的特征数据同步到所述第二数据存储空间之后,执行下述操作:
判断所述数据快照文件所包含数据对应日志的日志版本是否一致,若否,根据所述数据快照文件所包含数据对应日志的日志版本最低的第一日志版本,以及对应日志的日志版本最高的第二日志版本,从所述日志队列获取能够覆盖所述第一日志版本和所述第二日志版本的日志集合,并将读取到的日志集合合并到所述第二数据存储空间中。
16.根据权利要求1所述的数据同步方法,其特征在于,所述日志队列中日志根据所述已同步集群中节点提交的数据变更操作创建,并在创建的日志中记录当前数据变更操作后加入所述日志队列。
17.根据权利要求16所述的数据同步方法,其特征在于,所述将读取到的日志合并到所述第二数据存储空间中,采用如下方式实现:
根据读取到的日志所记录数据变更操作涉及的数据变更,将所述数据变更应用到所述第二数据存储空间中。
18.根据权利要求1所述的数据同步方法,其特征在于,所述数据存储空间采用下述任意一种实现方式提供快照数据文件存储:
非关系型数据库和分布式数据库。
19.一种数据同步装置,其特征在于,包括:
新集群通知单元,用于通知日志队列有新集群加入数据同步;
数据同步单元,用于将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
日志合并单元,用于将读取到的日志合并到所述第二数据存储空间中。
20.一种数据同步方法,其特征在于,包括:
向日志提交系统发送注册请求;
接收所述日志提交系统发送的最低日志版本;
基于所述最低日志版本向数据存储空间下发初始化指令;
向所述日志提交系统发送日志读取请求;
接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
21.一种数据同步装置,其特征在于,包括:
注册请求发送单元,用于向日志提交系统发送注册请求;
最低日志版本接收单元,用于接收所述日志提交系统发送的最低日志版本;
初始化指令下发单元,用于基于所述最低日志版本向数据存储空间下发初始化指令;
日志读取请求发送单元,用于向所述日志提交系统发送日志读取请求;
日志接收应用单元,用于接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
22.一种电子设备,其特征在于,包括:
存储器,以及处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
通知日志队列有新集群加入数据同步;
将已同步集群的第一数据存储空间存储的特征数据同步到所述新集群的第二数据存储空间中,以及通过所述新集群读取所述日志队列中的日志;
将读取到的日志合并到所述第二数据存储空间中。
23.一种电子设备,其特征在于,包括:
存储器,以及处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
向日志提交系统发送注册请求;
接收所述日志提交系统发送的最低日志版本;
基于所述最低日志版本向数据存储空间下发初始化指令;
向所述日志提交系统发送日志读取请求;
接收所述日志提交系统基于所述日志读取请求返回的日志,并将接收到的日志应用到所述数据存储空间中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711083268.6A CN110019514B (zh) | 2017-11-07 | 2017-11-07 | 数据同步方法、装置以及电子设备 |
PCT/CN2018/113337 WO2019091324A1 (zh) | 2017-11-07 | 2018-11-01 | 数据同步方法、装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711083268.6A CN110019514B (zh) | 2017-11-07 | 2017-11-07 | 数据同步方法、装置以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019514A true CN110019514A (zh) | 2019-07-16 |
CN110019514B CN110019514B (zh) | 2023-05-09 |
Family
ID=66438218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711083268.6A Active CN110019514B (zh) | 2017-11-07 | 2017-11-07 | 数据同步方法、装置以及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110019514B (zh) |
WO (1) | WO2019091324A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389863A (zh) * | 2019-07-26 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种数据恢复方法、装置、设备及计算机可读存储介质 |
CN111752910A (zh) * | 2020-06-24 | 2020-10-09 | 上海微盟企业发展有限公司 | 一种异构平台的数据同步方法、系统和相关装置 |
CN111858504A (zh) * | 2020-06-04 | 2020-10-30 | 武汉达梦数据库有限公司 | 基于日志解析同步的操作合并执行方法和数据同步系统 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795499B (zh) * | 2019-09-17 | 2024-04-16 | 中国平安人寿保险股份有限公司 | 基于大数据的集群数据同步方法、装置、设备及存储介质 |
CN111431999B (zh) * | 2020-03-23 | 2022-11-25 | 杭州小影创新科技股份有限公司 | 一种基于Paxos算法的云函数分布式系统 |
CN112069137B (zh) * | 2020-09-02 | 2024-05-17 | 阿波罗智联(北京)科技有限公司 | 生成信息的方法、装置、电子设备及计算机可读存储介质 |
CN112416884A (zh) * | 2020-11-23 | 2021-02-26 | 中国移动通信集团江苏有限公司 | 一种数据同步方法及系统 |
CN114124707A (zh) * | 2021-11-22 | 2022-03-01 | 中国电子科技集团公司第五十四研究所 | 一种网控中心多点热备方法 |
CN114676094B (zh) * | 2022-05-27 | 2022-08-26 | 云上(江西)大数据发展有限公司 | 数字化政府项目的全周期管理方法、系统及可读存储介质 |
CN115544172A (zh) * | 2022-11-28 | 2022-12-30 | 杭州欧若数网科技有限公司 | 一种一主多从的集群间数据实时同步的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和系统 |
CN105262831A (zh) * | 2015-10-30 | 2016-01-20 | 北京奇艺世纪科技有限公司 | 一种存储系统间同步数据的方法、装置及同步系统 |
CN105760398A (zh) * | 2014-12-18 | 2016-07-13 | 中兴通讯股份有限公司 | 一种日志记录系统及日志记录操作方法 |
CN106570007A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 用于分布式缓存系统数据同步的方法和设备 |
US20170116220A1 (en) * | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Synchronized test master |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990307B2 (en) * | 2011-11-16 | 2015-03-24 | Box, Inc. | Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform |
CN103294701B (zh) * | 2012-02-24 | 2016-12-28 | 联想(北京)有限公司 | 一种分布式文件系统以及数据处理的方法 |
CN104346373B (zh) * | 2013-07-31 | 2017-12-15 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN106713392B (zh) * | 2015-11-13 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置和系统 |
-
2017
- 2017-11-07 CN CN201711083268.6A patent/CN110019514B/zh active Active
-
2018
- 2018-11-01 WO PCT/CN2018/113337 patent/WO2019091324A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760398A (zh) * | 2014-12-18 | 2016-07-13 | 中兴通讯股份有限公司 | 一种日志记录系统及日志记录操作方法 |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和系统 |
CN106570007A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 用于分布式缓存系统数据同步的方法和设备 |
US20170116220A1 (en) * | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Synchronized test master |
CN105262831A (zh) * | 2015-10-30 | 2016-01-20 | 北京奇艺世纪科技有限公司 | 一种存储系统间同步数据的方法、装置及同步系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389863A (zh) * | 2019-07-26 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种数据恢复方法、装置、设备及计算机可读存储介质 |
CN111858504A (zh) * | 2020-06-04 | 2020-10-30 | 武汉达梦数据库有限公司 | 基于日志解析同步的操作合并执行方法和数据同步系统 |
CN111858504B (zh) * | 2020-06-04 | 2023-12-12 | 武汉达梦数据库股份有限公司 | 基于日志解析同步的操作合并执行方法和数据同步系统 |
CN111752910A (zh) * | 2020-06-24 | 2020-10-09 | 上海微盟企业发展有限公司 | 一种异构平台的数据同步方法、系统和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110019514B (zh) | 2023-05-09 |
WO2019091324A1 (zh) | 2019-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019514A (zh) | 数据同步方法、装置以及电子设备 | |
WO2020177533A1 (zh) | 电子票据标识分配方法、电子票据生成方法、装置及系统 | |
CN108280080B (zh) | 一种数据同步方法、装置以及电子设备 | |
CN107402722B (zh) | 一种数据迁移方法及存储设备 | |
CN110888858B (zh) | 数据库的操作方法和装置、存储介质、电子装置 | |
CN103870570A (zh) | 一种基于远程日志备份的HBase数据可用性及持久性的方法 | |
CN102546779A (zh) | 一种跨设备间应用数据的同步方法及装置 | |
CN111143093B (zh) | 异步消息分布式处理方法、装置、设备及存储介质 | |
CN112835524A (zh) | 存储资源配置方法、存储资源控制器及调度系统 | |
CN110196843A (zh) | 一种基于容器集群的文件分发方法及容器集群 | |
CN105677536A (zh) | 一种任务消息的实现方法及实现该任务消息的任务系统 | |
US20150286496A1 (en) | Systems and methods for enlisting single phase commit resources in a two phase commit transaction | |
CN107025257B (zh) | 一种事务处理方法及装置 | |
JP6338257B2 (ja) | ネットワーク要素データアクセス方法および装置、およびネットワーク管理システム | |
CN112822091A (zh) | 一种消息处理方法和装置 | |
CN105653566B (zh) | 一种实现数据库写访问的方法及装置 | |
CN111949441A (zh) | 用于可扩展备份搜索的系统和方法 | |
WO2023244491A1 (en) | Techniques for replication checkpointing during disaster recovery | |
CN106789198B (zh) | 一种计算节点管理方法及系统 | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN110568996A (zh) | 基于设备驱动程序的本地存储容量扩充系统 | |
CN112749172A (zh) | 一种缓存与数据库之间的数据同步方法及系统 | |
CN110489392A (zh) | 多租户间的数据访问方法、装置、系统、存储介质及设备 | |
CN111382132A (zh) | 医学影像数据云存储系统 | |
WO2022028189A1 (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40010812 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |