CN105701159B - 一种数据同步装置和方法 - Google Patents
一种数据同步装置和方法 Download PDFInfo
- Publication number
- CN105701159B CN105701159B CN201511026377.5A CN201511026377A CN105701159B CN 105701159 B CN105701159 B CN 105701159B CN 201511026377 A CN201511026377 A CN 201511026377A CN 105701159 B CN105701159 B CN 105701159B
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- change message
- implementing result
- transaction
- 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
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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Abstract
本发明公开了一种数据同步装置和方法,以解决分布式系统中消息同步时存在事务一致性差的问题。该装置包括存储单元、管理单元和操作单元,所述管理单元按照所述存储单元中存储数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向操作单元下发针对所述读取的数据变更消息的事务操作指令;所述操作单元通过调用各个生产集群中与管理单元下发的事务操作指令对应的指令接口,将管理单元下发的事务操作下发到所述各个生产集群,并接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果反馈至管理单元,这样能够真正在消息同步时保证事务一致性。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种数据同步装置和方法。
背景技术
随着互联网业务的迅猛发展,如大型的电商系统、社交平台系统、运营商信息、通信技术(Information Communication Technology,ICT)系统、都在享受信息和流量洪流所带来的商业利润增长的同时,面临着海量用户、高并行等技术问题的挑战。一方面需要系统能够快速响应日新月异的业务需求,另一方面能够保证系统的高可用性和安全性。因此传统的系统架构在这个业务需求的驱动下,都在逐步的向互联网化的架构演进。在这个演进的过程中,采用分布式架构,是一个核心的理念。
在一般的大型系统的实际场景中,系统架构会通过读写分离、分库、服务化对等集群方式实现系统的水平可扩展和容量的扩容。在此架构下必然会需要将管理系统(面向运营人员的管理系统)产生的数据变更信息同步到生产系统(面向终端用户的业务承载系统),而生产系统多为分布式集群,一个消息需要分解为多个子消息,将一个同步操作变成多个异步的同步操作。这样就使得一个原子操作变成多个原子操作,必然会存在事务上的不一致性,就需要这些子消息能够在一个父消息事务上保持同时生效且当部分失败后时能够实现弥补操作或回滚操作。
目前分布式系统中保证消息同步和事务一致性的方法是消息推送模式的消息同步技术,如图1所示,消息推送模式的消息同步技术由一个中转的数据同步系统负责接收来自管理系统的数据变更消息,并通过异步模式将消息拆分为多个子消息,分别通过接口调用方式将消息同步到多个生产集群中,如生产集群01和生产集群02。由于现实情况下生产集群的接口一般不会支持事务能力,所以对于部分节点失败时,需要由中转的同步系统进行重试操作,直到成功或达到重试上限。这里就需要生产集群的接口支持幂等性(即同样的消息重复调用的结果一致)。如果整个事务失败时,需要中转的同步系统记录错误日志或将失败信息反馈给管理系统,由管理系统修改数据变更状态为失败。但是这种方法存在一定的不足,如当整个事务失败时,部分成功的节点中就会存在脏数据,存在数据不一致的问题,不能真正实现消息在事务层面上的一致性。
发明内容
本发明实施例提供一种数据同步装置和方法,以使分布式系统中消息同步和事务一致性更完善。
本发明实施例提供的具体技术方案如下:
第一方面,提供一种数据同步装置,包括存储单元、管理单元和操作单元,其中:
所述存储单元,用于存储管理系统发送的数据变更消息;
所述管理单元,用于按照所述存储单元中存储数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向操作单元下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段;
所述操作单元,用于通过调用各个生产集群中与管理单元下发的事务操作指令对应的指令接口,将管理单元下发的事务操作指令下发到所述各个生产集群,并接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果反馈至管理单元;
所述管理单元,还用于基于接收的各个生产集群对本次下发的针对所述数据变更消息的事务操作指令的执行结果形成事务处理结果,并反馈至管理系统。
结合第一方面,在第一方面的第一种可能的实现方式中,所述管理单元根据读取的数据变更消息的事务状态向操作单元下发针对所述读取的数据变更消息的事务操作指令时,具体用于:
所述管理单元在读取的数据变更消息的事务状态为事务初始状态时,则向操作单元下发针对所述读取的数据变更消息的尝试指令;
所述管理单元在读取的数据变更消息的事务状态为事务成功状态时,则向操作单元下发针对所述读取的数据变更消息的提交指令;
所述管理单元在读取的数据变更消息的事务状态为事务失败状态时,则向操作单元下发针对所述读取的数据变更消息的取消指令。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述管理单元在基于接收的各个生产集群对本次下发的针对所述数据变更消息的事务操作指令的执行结果形成事务处理结果,具体用于:
所述管理单元在所有的生产集群对本次下发的提交指令的执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理成功;或
在所有的生产集群对本次下发的取消执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理失败,所述生产集群包括若干台负责具体业务处理的生产主机。
第二方面,提供一种生产主机,包括:
接口单元,用于接收针对数据变更消息的事务操作指令;
处理单元,用于根据所述接口单元接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果;并通过所述接口单元将所述执行结果反馈至所述系统。
结合第二方面,在第二方面的第一种可能的实现方式中,所述处理单元在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,具体用于:
所述处理单元在所述数据变更消息的事务操作指令为尝试指令时,对所述数据变更消息的消息内容进行校验;
在校验失败时,得到针对所述尝试指令的执行结果为失败;
在校验成功时,比较所述数据变更消息的版本是否比所述主机中需要更新的数据信息的版本新,若是,则将所述数据变更消息作为第一数据信息缓存,并得到针对所述尝试指令的执行结果为成功;否则,得到针对所述尝试指令的执行结果为失败。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理单元,还用于:
在得到针对所述尝试指令的执行结果为成功时,通过所述接口单元通知所述系统将所述数据变更消息的事务状态更新为事务成功状态;以及
在得到针对所述尝试指令的执行结果为失败时,通过所述接口单元通知所述系统将所述数据变更消息的事务状态更新为事务失败状态。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述处理单元在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,具体用于:
所述处理单元在所述数据变更消息的事务操作指令为提交指令时,将所述主机在线使用的第二数据信息与本地缓存的所述第一数据信息进行互换操作,若操作成功,得到针对所述提交指令的执行结果为成功;否则,得到针对所述提交指令的执行结果为失败。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述处理单元,还用于:
在得到针对所述提交指令的执行结果为成功时,通过所述接口单元输出所述数据变更消息的提交指令的执行结果为成功;以及
在得到针对所述提交指令的执行结果为失败时,通过所述接口单元通知输出所述数据变更消息的事务状态更新为事务失败状态。
结合第二方面或者以上任何一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述处理单元在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,具体用于:
所述处理单元在所述数据变更消息的事务操作指令为取消指令时,进一步确定针对所述数据变更消息的上一个事务操作指令,
若所述上一个事务操作指令为尝试指令,删除本地缓存的所述第一数据信息,若成功删除,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败;
若所述上一个事务操作指令为提交指令,将所述主机中的第二数据信息与本地缓存的第一数据消息进行互换操作,若操作成功,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
结合第二方面或者以上任何一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述处理单元,还用于:
在得到针对所述取消指令的执行结果为成功时,通过所述接口单元输出所述数据变更消息的取消指令的执行结果为成功;以及
在得到针对所述取消指令的执行结果为失败时,通过所述接口单元输出所述数据变更消息的取消指令的执行结果为失败。
第三方面,提供一种数据同步方法,包括:
存储管理系统发送的数据变更消息;
按照存储的数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段;
接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,并反馈至管理系统。
结合第三方面,在第三方面的第一种可能的实现方式中,根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令,包括:
在读取的数据变更消息的事务状态为事务初始状态时,则向各个生产集群下发针对所述读取的数据变更消息的尝试指令;
在读取的数据变更消息的事务状态为事务成功状态时,则向各个生产集群下发针对所述读取的数据变更消息的提交指令;
在读取的数据变更消息的事务状态为事务失败状态时,则向各个生产集群下发针对所述读取的数据变更消息的取消指令。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,,接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,包括:
在所有的生产集群对本次下发的提交指令的执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理成功;或
在所有的生产集群对本次下发的取消执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理失败。
第四方面,提供一种数据同步方法,应用在业务主机,包括:
接收针对数据变更消息下发的事务操作指令;
根据接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果;并将所述执行结果反馈。
结合第四方面,在第四方面的第一种可能的实现方式中,根据所述事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,包括:
在所述数据变更消息的事务操作指令为尝试指令时,对所述数据变更消息的消息内容进行校验;
在校验失败时,得到针对所述尝试指令的执行结果为失败;
在校验成功时,比较所述数据变更消息的版本是否比所述主机中需要更新的数据信息的版本新,若是,则将所述数据变更消息作为第一数据信息缓存,并得到针对所述尝试指令的执行结果为成功;否则,得到针对所述尝试指令的执行结果为失败。
结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,还包括:
在得到针对所述尝试指令的执行结果为成功时,输出所述数据变更消息的事务状态更新为事务成功状态;以及
在得到针对所述尝试指令的执行结果为失败时,输出所述数据变更消息的事务状态更新为事务失败状态。
结合第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,根据所述事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,包括:
在所述数据变更消息的事务操作指令为提交指令时,将所述主机在线使用的第二数据信息与本地缓存的所述第一数据信息进行互换操作,若操作成功,得到针对所述提交指令的执行结果为成功;否则,得到针对所述提交指令的执行结果为失败。
结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,还包括:
在得到针对所述提交指令的执行结果为成功时,输出所述数据变更消息的提交指令的执行结果为成功;以及
在得到针对所述提交指令的执行结果为失败时,输出所述数据变更消息的事务状态更新为事务失败状态。
结合第四方面或者以上任何一种可能的实现方式,在第四方面的第五种可能的实现方式中,根据所述事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,包括:
在所述数据变更消息的事务操作指令为取消指令时,进一步确定针对所述数据变更消息的上一个事务操作指令
若所述上一个事务操作指令为尝试指令,删除本地缓存的所述第一数据信息,若成功删除,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败;
若所述上一个事务操作指令为提交指令,将所述主机中的第二数据信息与本地缓存的第一数据消息进行互换操作,若操作成功,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
结合第四方面或者以上任何一种可能的实现方式,在第四方面的第五种可能的实现方式中,还包括:
在得到针对所述取消指令的执行结果为成功时,输出所述数据变更消息的取消指令的执行结果为成功;以及
在得到针对所述取消指令的执行结果为失败时,输出所述数据变更消息的取消指令的执行结果为失败。
第五方面,提供一种数据同步系统,包括如第一方面、第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式中的任一种可能的实现方式所述的数据同步装置和如第而方面、第二方面的第一种可能的实现方式或第二方面的第六种可能的实现方式中的任一种可能的实现方式所述的生产主机。
本发明实施例中的数据同步装置接收管理系统下发的数据变更消息,根据所述数据变更消息的事务状态下发事务操作指令给生产主机,生产主机接收到事务操作指令后,根据事务操作指令完成相应的操作内容,这样能够真正实现消息在事务上的一致性,能够解决当整个数据变更消息的事务失败时,部分同步成功的生产主机中存在脏数据,导致数据不一致,事务不一致的问题,实现方式简单,便于推广利用。
附图说明
图1为现有的消息推送模式的消息同步示意图;
图2为本发明实施例应用场景示意图;
图3为本发明实施例中管理系统、数据同步装置和生产主机内部结构交互示意图;
图4A、图4B为本发明实施例中数据同步设备结构示意图;
图5A、图5B为为本发明实施例中生产主机的设备结构示意图;
图6为本发明实施例中一种数据同步方法流程示意图;
图7为本发明实施例中另一种数据同步方法流程示意图;
图8为本发明实施例中事务操作指令三段式提交的流程图;
图9为本发明实施例中事务操作指令两段式提交的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明实施例中的应用场景,包括:管理系统、数据同步装置、生产集群01和生产集群02,其中:
管理系统:用于提供面向运营管理人员的运营支撑功能的系统,可以是主备双机组网或对等集群组网。管理系统集群与数据同步装置采用异步数据同步模式,即提交了需要同步的数据变更消息后立即返回响应,消息交由数据同步装置缓存,并实现后续的事务一致性同步操作。数据同步装置完成事务同步后,无论是事务操作成功还是事务操作失败,都通过回执接口将数据变更消息的同步结果反馈给管理系统集群。
数据同步装置:为提供承载应用部署、服务接口能力、数据存储读取等基本能力的容器,并提供数据变更消息在分布式环境下同步的事务一致性保障能力,将多个生产集群的数据同步进行事务关联管理,通过与生产集群的接口对接实现各个生产集群间事务层面上的针对数据变更消息的各种指令操作。
生产集群:为提供面向最终消费者的业务功能的系统,绝大多数情况下为分布式对等集群组网。并且基于面向服务的体系架构(Service Oriented Architecture,SOA)的理念,生产集群会根据服务的对象或领域的不同,划分为多个逻辑集群,各个逻辑生产集群间实现服务、数据和资源上的松耦合,所述生产集群包括若干台负责具体业务处理的生产主机。
图3为管理系统30、数据同步装置31和生产集群01中的生产主机32的系统内部结构交互示意图,其中:数据同步装置31通过存储单元310、操作单元311、管理单元312这三个模块来实现数据变更消息的指令下发与事务管理。生产集群01中的生产主机32通过接口单元320和处理单元321实现相应的指令执行与执行结果反馈功能。
管理系统30,用于将数据变更消息发送到数据同步装置31。
具体的,管理系统30将数据变更消息发送到数据同步装置31中后,还用于接收所述数据同步装置31在接收到数据变更消息后反馈的实时响应,最终数据变更消息同步是否成功,需要根据数据同步装置31异步反馈的事务处理结果确定。
如图3所示,生产集群01中的生产主机32包括接口单元320和处理单元321,其中:
所述接口单元320部署在生产集群中的客户端Jar包或库,提供与数据同步装置31进行TCC交互的能力,并根据事务操作指令执行对应的数据操作。通过这个接口单元可以屏蔽生产集群对于TCC事务操作的技术实现,提供一套抽象的TCC接口声明,生产集群只需要根据TCC的接口声明,由业务生产系统即处理单元321实现消息校验、数据库操作和消息的版本比较的能力。
所述处理单元321由生产集群基于接口单元所定义的TCC接口结合本业务集群的数据结构和数据存储方式,实现TCC指令所要完成的操作内容。
所述接口单元320:负责接收来自接口单元320中的事务操作执行器下发的TCC指令,并根据事务操作指令完成该具体操作内容,最终将本次操作的结果反馈给数据同步装置31。所述接口单元320将TCC的操作封装为抽象的接口,由不同的业务生产主机各自完成接口的独特数据模型的差异处理逻辑。
所述接口单元320中存储有消息对象信息,消息对象信息为Try指令下发时由数据同步装置31一并传输到该生产主机的。消息对象信息由四部分数据结构组成:版本信息、事务信息、操作信息、消息内容。
版本信息,用于当前同步的数据变更消息与在线数据的新旧比较用,一般采用时间戳或版型序号实现。
事务信息,用于关联同步的数据变更消息与数据同步装置31中的事务的归属关系,在后续的Cancel和Confirm操作中,需要通过事务信息来查找对应的消息对象。
操作信息,用于定义同步的数据变更消息对应在线数据的更新方式,操作方式包含,增、删、改。主机的处理单元321需要根据操作方式对自身进行相应的数据库操作。
消息内容为管理系统发送的数据变更消息的所有原始信息。
所述处理单元321中封装有消息校验器、版本比较器,版本切换器,在线库版本A和事务库版本B,其中:
消息校验器,负责定义一套数据校验的抽象接口,接口的实现由生产主机所部署的处理单元321完成。当接口单元320接收到尝试指令操作时,会将同步的数据变更消息内容提交给消息校验器,消息校验器根据业务系统的校验逻辑对消息内容进行校验,当校验成功时,则进行下一步版本比较,当校验失败时,则终止Try操作,并反馈Try指令执行失败结果给数据同步装置31。
版本比较器:负责在接收到尝试指令时,将请求同步的数据变更消息内容与生产主机在线使用的数据内容的版本进行比较,通过时间戳或版本号进行比较,当同步的数据变更消息版本比当前生产主机在线的数据版本新,则将同步的数据变更消息进行暂存处理,存储到处理单元中的事务库版本B中或本地,当同步的数据变更消息版本比当前生产主机在线的数据版本旧时,则返回Try指令执行失败结果给数据同步装置31。
版本切换器:负责在接受到提交指令时,将生产主机在线库中版本A的数据和事务库中版本B中的数据进行回滚替换操作;在接受到取消指令时,判断如果取消的是提交操作,则将生产主机在线库中版本A的数据和事务库中版本B中的暂存数据进行回滚替换操作;如果取消的是尝试操作,则删除事务库版本B中的数据。
如图3所示,本发明实施例中的数据同步装置包括存储单元310、操作单元311和管理单元312,其中:
所述存储单元310,用于存储管理系统发送的数据变更消息。
具体的,存储单元310用于分别根据存储的消息对象的ID按照时间先后顺序以队列方式进行排列,所述存储单元310将不同类型的数据变更消息存储在不同的队列中,可以进一步提升消息处理的并行效率。
所述管理单元312,用于按照所述存储单元310中存储数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向操作单元下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段。
所述数据变更消息的事务生命周期包括消息初始阶段、消息尝试阶段、消息提交阶段、消息尝试失败阶段、消息提交失败阶段。针对新接收到的数据变更消息,从消息初始阶段开始进行消息校验后进入消息尝试阶段,当校验成功时则进入消息提交阶段,否则,进入消息尝试失败阶段;在消息提交阶段中进行消息的同步提交,若同步提交成功,则针对所述数据变更消息的处理结果为同步成功;若同步提交失败,则进入消息提交失败阶段。当所述变更消息处于消息初始阶段时,所述数据变更消息的事务状态为事务初始状态;当所述变更消息处于消息提交阶段时,所述数据变更消息的事务状态为事务成功状态;当所述变更消息处于消息提交失败阶段或者处于消息尝试失败阶段时,所述数据变更消息的事务状态为事务失败状态。
所述管理单元312,具体用于管理每个数据变更消息的事务生命周期,得到所述数据变更消息的事务状态,根据所述数据变更消息的事务状态下发事务操作指令。
其中,所述事务操作指令包括:尝试(Try)指令,提交(Confirm)指令和取消(Cancel)指令,简称TCC。
具体的,所述管理单元312根据读取的数据变更消息的事务状态向操作单元311下发针对所述读取的数据变更消息的事务操作指令时,具体用于:
所述管理单元312在读取的数据变更消息的事务状态为事务初始状态时,则向操作单元311下发针对所述读取的数据变更消息的尝试指令;
所述管理单元312在读取的数据变更消息的事务状态为事务成功状态时,则向操作单元311下发针对所述读取的数据变更消息的提交指令;
所述管理单元312在读取的数据变更消息的事务状态为事务失败状态时,则向操作单元311下发针对所述读取的数据变更消息的取消指令。
进一步,所述管理单元312还用于实现以下异常场景的处理能力,包括超时管理和补偿管理。
超时管理:监控每一个下发指令的时间,超时后触发补偿操作。
补偿管理:对于超时或未知原因造成的指令失败,执行一定次数的补偿操作,支持指令重复下发,支持幂等性操作。
所述操作单元311,用于通过调用各个生产集群中与管理单元312下发的事务操作指令对应的指令接口,将管理单元312下发的事务操作指令下发到所述各个生产集群,并接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果反馈至管理单元312,所述生产集群包括若干台负责具体业务处理的生产主机。
具体的,操作单元311在根据管理单元312下发的事务操作指令执行与各个生产集群的指令接口调用功能时,相同ID的对象消息采用串行同步操作,即只有当当前数据变更消息的事务完成或失败后,才会执行下一个数据变更消息的处理,由此来保证不会出现对同一个消息对象的并发操作而产生的数据不一致问题。同时操作单元311负责接送各个生产集群反馈的事务操作指令执行结果,根据所述事务操作指令执行结果更新管理单元312中的所述数据变更消息的事务状态。
所述管理单元312,还用于基于接收的各个生产集群对本次下发的针对所述数据变更消息的事务操作指令的执行结果形成事务处理结果,并反馈至管理系统。
具体的,所述管理单元312在基于接收的各个生产集群对本次下发的针对所述数据变更消息的事务操作指令的执行结果形成事务处理结果时,具体用于:
所述管理单元312在所有的生产集群对本次下发的提交指令的执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理成功;或
在所有的生产集群对本次下发的取消执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理失败。
请参见图4A,本发明实施例提供一种数据同步设备,该数据同步设备可以包括存储器401、处理器402和接收器403。
其中,处理器402可以是中央处理器(CPU)或特定应用集成电路(ApplicationSpecific Integrated Circuit,ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(Field Programmable Gate Array,FPGA)开发的硬件电路,可以是基带芯片。
存储器401的数量可以是一个或多个。存储器401可以包括只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)和磁盘存储器。
接收器403可以用于与外部设备进行通信,例如接收器403可以与生产主机进行通信。
可选的,请参见图4B,该装置还可以包括发送器404,可以用于与外部设备进行通信,例如发送器404也可以与生产主机进行通信。
发送器404和接收器403可以是同一实体模块,例如可以是能够实现收发功能的实体模块,比如可以称为收发器,或者发送器404和接收器403也可以是单独的实体模块。
这些存储器401、发送器404和接收器403可以通过总线与处理器402相连接(图4A-图4B以此为例),或者也可以通过专门的连接线分别与处理器402连接。
通过对处理器402进行设计编程,将下面所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行下面图6所示的方法。如何对处理器402进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
其中,该数据同步设备可以通过软件方式实现,比如可以是固化在设备中的一套软件程序,或者也可以通过硬件方式实现,比如可以是在设备中新增的硬件模块,或者也可以利用设备中原有的硬件模块实现,比如处理器402可以由设备中的数据处理系统实现,存储器401可以由设备中的存储器件实现,或者存储器401也可以由设备中的数据处理系统的内部缓存实现,发送器404和接收器403可以由设备中的数据收发系统实现。
如图3所示,本发明实施例中的生产主机包括接口单元320和处理单元321,其中:
接口单元320,用于接收数据同步装置31下发的针对数据变更消息的事务操作指令;
处理单元321,用于根据所述接口单元320接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果;并通过所述接口单元320将所述执行结果反馈至所述数据同步装置31。
可选的,所述处理单元321在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,具体用于:
所述处理单元321在所述数据变更消息的事务操作指令为尝试指令时,对所述数据变更消息的消息内容进行校验;
在校验失败时,得到针对所述尝试指令的执行结果为失败;
在校验成功时,比较所述数据变更消息的版本是否比所述主机中需要更新的数据信息的版本新,若是,则将所述数据变更消息作为第一数据信息缓存,并得到针对所述尝试指令的执行结果为成功;否则,得到针对所述尝试指令的执行结果为失败。
所述处理单元321,还用于:
在得到针对所述尝试指令的执行结果为成功时,通过所述接口单元320通知所述数据同步装置31将所述数据变更消息的事务状态更新为事务成功状态;以及
在得到针对所述尝试指令的执行结果为失败时,通过所述接口单元320通知所述数据同步装置31将所述数据变更消息的事务状态更新为事务失败状态。
可选的,所述处理单元321在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,具体用于:
所述处理单元321在所述数据变更消息的事务操作指令为提交指令时,将所述主机在线使用的第二数据信息与本地缓存的所述第一数据信息进行互换操作,若操作成功,得到针对所述提交指令的执行结果为成功;否则,得到针对所述提交指令的执行结果为失败。
可选的,所述处理单元321,还用于:
在得到针对所述提交指令的执行结果为成功时,通过所述接口单元320通知所述数据同步装置31所述数据变更消息的提交指令的执行结果为成功;以及
在得到针对所述提交指令的执行结果为失败时,通过所述接口单元320通知所述数据同步装置31将所述数据变更消息的事务状态更新为事务失败状态。
可选的,所述处理单元321在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,具体用于:
所述处理单元321在所述数据变更消息的事务操作指令为取消指令时,进一步确定针对所述数据变更消息的上一个事务操作指令。
若所述上一个事务操作指令为尝试指令,删除本地缓存的所述第一数据信息,若成功删除,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败;
若所述上一个事务操作指令为提交指令,将所述主机中的第二数据信息与本地缓存的第一数据消息进行互换操作,若操作成功,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
可选的,所述处理单元321,还用于:
在得到针对所述取消指令的执行结果为成功时,通过所述接口单元320通知所述数据同步装置31所述数据变更消息的取消指令的执行结果为成功;以及
在得到针对所述取消指令的执行结果为失败时,通过所述接口单元320通知所所述数据同步装置31所述数据变更消息的取消指令的执行结果为失败。
请参见图5A,本发明实施例提供一种数据同步设备,该数据同步设备可以是生产主机,可以包括存储器501、处理器502和接收器503。
其中,处理器502可以是中央处理器(CPU)或特定应用集成电路(ApplicationSpecific Integrated Circuit,ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(Field Programmable Gate Array,FPGA)开发的硬件电路,可以是基带芯片。
存储器501的数量可以是一个或多个。存储器501可以包括只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)和磁盘存储器。
接收器503可以用于与外部设备进行通信,例如接收器503可以与其他设备进行通信,例如与图4A或图4B中的设备进行通信。
可选的,请参见图5B,该装置还可以包括发送器504,可以用于与外部设备进行通信,例如发送器504也可以与其他设备进行通信,例如图4A或图4B中的设备。
发送器504和接收器503可以是同一实体模块,例如可以是能够实现收发功能的实体模块,比如可以称为收发器,或者发送器504和接收器503也可以是单独的实体模块。
这些存储器501、发送器504和接收器503可以通过总线与处理器502相连接(图5A-图5B以此为例),或者也可以通过专门的连接线分别与处理器502连接。
通过对处理器502进行设计编程,将下面所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行下面图7所示的方法。如何对处理器502进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
其中,该数据同步设备可以通过软件方式实现,比如可以是固化在设备中的一套软件程序,或者也可以通过硬件方式实现,比如可以是在设备中新增的硬件模块,或者也可以利用设备中原有的硬件模块实现,比如处理器502可以由设备中的数据处理系统实现,存储器501可以由设备中的存储器件实现,或者存储器501也可以由设备中的数据处理系统的内部缓存实现,发送器504和接收器503可以由设备中的数据收发系统实现。
下面介绍本发明实施例提供的方法。
基于上述装置实施例,参阅图6所示,本发明实施例中提供一种数据同步方法,该方法可以由如前所述的数据同步装置31或图4A或图4B中的设备来执行,具体包括:
步骤600:存储管理系统发送的数据变更消息;
步骤601:按照存储的数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段。
具体的,根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令时,执行:
在读取的数据变更消息的事务状态为事务初始状态时,则向各个生产集群下发针对所述读取的数据变更消息的尝试指令;
在读取的数据变更消息的事务状态为事务成功状态时,则向各个生产集群下发针对所述读取的数据变更消息的提交指令;
在读取的数据变更消息的事务状态为事务失败状态时,则向各个生产集群下发针对所述读取的数据变更消息的取消指令。
步骤602:接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,并反馈至管理系统,所述生产集群包括若干台负责具体业务处理的生产主机。
具体的,接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,包括:
在所有的生产集群对本次下发的提交指令的执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理成功;或
在所有的生产集群对本次下发的取消执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理失败。
基于上述装置实施例,参阅图7所示,本发明实施例中提供一种事务一致性方法,应用在各业务主机,该方法可以由如前所述的生产主机32或图5A或图5B中的设备来执行,具体包括:
步骤700:接收第一系统下发的针对数据变更消息的事务操作指令。
步骤701:根据接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果;并将所述执行结果反馈至所述第一系统。
其中,第一系统为上述图3中的数据同步装置31或图4A、图4B中数据同步设备或具有其功能的其他系统。
具体的,步骤701中根据接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,包括以下三种情形:
第一种情形为:在所述数据变更消息的事务操作指令为尝试指令时,对所述数据变更消息的消息内容进行校验;
在校验失败时,得到针对所述尝试指令的执行结果为失败;
在校验成功时,比较所述数据变更消息的版本是否比所述主机中需要更新的数据信息的版本新,若是,则将所述数据变更消息作为第一数据信息缓存,并得到针对所述尝试指令的执行结果为成功;否则,得到针对所述尝试指令的执行结果为失败。
进一步的,在上述第一种情形中,在得到针对所述尝试指令的执行结果为成功时,通知所述第一系统将所述数据变更消息的事务状态更新为事务成功状态;以及
在得到针对所述尝试指令的执行结果为失败时,通知所述第一系统将所述数据变更消息的事务状态更新为事务失败状态。
第二种情形为:在所述数据变更消息的事务操作指令为提交指令时,将所述主机在线使用的第二数据信息与本地缓存的所述第一数据信息进行互换操作,若操作成功,得到针对所述提交指令的执行结果为成功;否则,得到针对所述提交指令的执行结果为失败。
进一步的,在上述第二种情形中,在得到针对所述提交指令的执行结果为成功时,通知所述第一系统所述数据变更消息的提交指令的执行结果为成功;以及
在得到针对所述提交指令的执行结果为失败时,通知所述第一系统将所述数据变更消息的事务状态更新为事务失败状态。
第三种情形为:在所述数据变更消息的事务操作指令为取消指令时,进一步确定针对所述数据变更消息的上一个事务操作指令
若所述上一个事务操作指令为尝试指令,删除本地缓存的所述第一数据信息,若成功删除,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败;
若所述上一个事务操作指令为提交指令,将所述主机的第二数据信息与本地缓存的第一数据消息进行互换操作,若操作成功,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
进一步的,在上述第三种情形中,在得到针对所述取消指令的执行结果为成功时,通知所述第一系统所述数据变更消息的取消指令的执行结果为成功;以及
在得到针对所述取消指令的执行结果为失败时,通知所述第一系统所述数据变更消息的取消指令的执行结果为失败。
进一步的,本发明实施例中支持两种组合的事务操作指令的执行模式。
执行模式一:三段式指令,即尝试指令、提交指令、取消指令各自独立操作。基于图3的实现流程可参阅图8所示,其中:
尝试指令(Try):由生产主机实现,提供数据同步校验、版本比较操作接口定义,完成同步信息的校验、需要同步的消息对象与在线消息对象的版本比较、需要同步的消息对象的离线缓存操作。
提交指令(Confirm):由生产主机实现,提供数据同步的提交操作接口定义,完成事务库版本B中消息对象与在线库中版本A的消息的互换操作,互换操作需要基于消息对象中的操作信息进行对应的增删改操作。
取消指令(Cancel):由生产主机实现,提供数据同步的取消操作接口定义,如果取消的是提交操作,则使用事务库版本B中的数据对在线库中版本A中的数据进行回滚替换操作;如果取消的是尝试操作,则删除事务库版本B中的数据。
参阅图8所示,数据同步装置按顺序读取管理系统下发的数据变更消息,每读取到一个数据变更消息,针对该数据变更消息下发尝试指令,主机接收到尝试指令时,进行数据变更消息的消息校验和版本比较,在尝试指令执行成功时下发提交指令,主机接收到提交指令时针对该数据变更消息进行数据同步操作;在尝试指令执行失败时下发针对尝试指令的取消指令,主机接收到取消指令时将本地缓存的数据变更消息进行删除;主机在提交指令执行失败时,上报数据同步装置,此时数据同步装置下发针对提交指令的取消指令,主机接收到该取消指令时,进行回滚操作,退回到数据同步之前的状态。
执行模式二:两段式提交,即将尝试指令和提交指令,组合为一个指令进行下发,生产主机的接口单元在接收到此组合指令后,串行依次执行Try和Confirm操作,任何一部操作失败都将返回整个组合指令执行失败的结果。基于图3的实现流程可参阅图9所示。
取消指令(Cancel):由生产主机实现,提供数据同步的取消操作接口定义,如果取消的是提交操作,则使用事务库版本B中的数据对在线库中版本A中的数据进行回滚替换操作;如果取消的是尝试操作,则删除事务库版本B中的数据。
从图9中可以看出,图9的流程与图8完全相同,只是将尝试指令和提交指令,组合为一个指令进行下发,图8和图9中的数据同步模式都可以实现事务一致性,在下发的数据变更消息中的数据准确性比较高的情形下,图9的模式的数据同步效率更高,在下发的数据变更消息中的数据准确性比较差的情形下,图8的模式的数据同步准确性更高。
综上所述,本发明实施例中,存储管理系统发送的数据变更消息;按照存储的数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段;接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,并反馈至管理系统,所述生产集群包括若干台负责具体业务处理的生产主机。这样解决了现有的当整个数据变更消息的同步事务处理失败时,部分成功节点中就会存在脏数据,导致数据不一致,不能实现消息同步时保证事务一致性的问题,并大大提高了数据同步效率和同步准确率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (19)
1.一种数据同步装置,其特征在于,包括存储单元、管理单元和操作单元,其中:
所述存储单元,用于存储管理系统发送的数据变更消息;
所述管理单元,用于按照所述存储单元中存储数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向操作单元下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段;
所述操作单元,用于通过调用各个生产集群中与管理单元下发的事务操作指令对应的指令接口,将管理单元下发的事务操作指令下发到所述各个生产集群,并接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果反馈至管理单元;
所述管理单元,还用于基于接收的各个生产集群对本次下发的针对所述数据变更消息的事务操作指令的执行结果形成事务处理结果,并反馈至管理系统。
2.如权利要求1所述的装置,其特征在于,所述管理单元根据读取的数据变更消息的事务状态向操作单元下发针对所述读取的数据变更消息的事务操作指令时,具体用于:
所述管理单元在读取的数据变更消息的事务状态为事务初始状态时,则向操作单元下发针对所述读取的数据变更消息的尝试指令;
所述管理单元在读取的数据变更消息的事务状态为事务成功状态时,则向操作单元下发针对所述读取的数据变更消息的提交指令;
所述管理单元在读取的数据变更消息的事务状态为事务失败状态时,则向操作单元下发针对所述读取的数据变更消息的取消指令。
3.如权利要求2所述的装置,其特征在于,所述管理单元在基于接收的各个生产集群对本次下发的针对所述数据变更消息的事务操作指令的执行结果形成事务处理结果,具体用于:
所述管理单元在所有的生产集群对本次下发的提交指令的执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理成功;或
在所有的生产集群对本次下发的取消执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理失败,所述生产集群包括若干台负责具体业务处理的生产主机。
4.一种生产主机,其特征在于,包括:
接口单元,用于从系统接收针对数据变更消息的事务操作指令;
处理单元,用于根据所述接口单元接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果;并通过所述接口单元将所述执行结果反馈至所述系统;
其中,所述执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,包括:
所述处理单元在所述数据变更消息的事务操作指令为尝试指令时,对所述数据变更消息的消息内容进行校验;在校验失败时,得到针对所述尝试指令的执行结果为失败;在校验成功时,比较所述数据变更消息的版本是否比所述主机在线使用的第二数据信息的版本新,若是,则将所述数据变更消息作为第一数据信息缓存,并得到针对所述尝试指令的执行结果为成功;否则,得到针对所述尝试指令的执行结果为失败;
所述处理单元在所述数据变更消息的事务操作指令为取消指令、且所述取消指令的上一个事务操作指令为尝试指令时,则删除本地缓存的所述第一数据信息;若成功删除,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
5.如权利要求4所述的主机,其特征在于,所述处理单元,还用于:
在得到针对所述尝试指令的执行结果为成功时,通过所述接口单元通知所述系统将所述数据变更消息的事务状态更新为事务成功状态;以及
在得到针对所述尝试指令的执行结果为失败时,通过所述接口单元通知所述系统将所述数据变更消息的事务状态更新为事务失败状态。
6.如权利要求4所述的主机,其特征在于,所述处理单元在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,还用于:
所述处理单元在所述数据变更消息的事务操作指令为提交指令时,将所述主机在线使用的所述第二数据信息与本地缓存的所述第一数据信息进行互换操作,若操作成功,得到针对所述提交指令的执行结果为成功;否则,得到针对所述提交指令的执行结果为失败。
7.如权利要求6所述的主机,其特征在于,所述处理单元,还用于:
在得到针对所述提交指令的执行结果为成功时,通过所述接口单元输出所述数据变更消息的提交指令的执行结果为成功;以及
在得到针对所述提交指令的执行结果为失败时,通过所述接口单元通知输出所述数据变更消息的事务状态更新为事务失败状态。
8.如权利要求4或6所述的主机,其特征在于,所述处理单元在根据所述事务操作指令,执行针对所述数据变更消息的相应操作时,得到针对所述事务操作指令的执行结果,还用于:
所述处理单元在所述数据变更消息的事务操作指令为取消指令时,且所述取消指令的上一个事务操作指令为提交指令,将所述主机中的第二数据信息与本地缓存的第一数据信息进行互换操作,若操作成功,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
9.如权利要求8所述的主机,其特征在于,所述处理单元,还用于:
在得到针对所述取消指令的执行结果为成功时,通过所述接口单元输出所述数据变更消息的取消指令的执行结果为成功;以及
在得到针对所述取消指令的执行结果为失败时,通过所述接口单元输出所述数据变更消息的取消指令的执行结果为失败。
10.一种数据同步方法,其特征在于,包括:
存储管理系统发送的数据变更消息;
按照存储的数据变更消息的先后顺序,依次读取数据变更消息,并根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令,所述事务状态用于描述所述数据变更消息所处的处理阶段;
接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,并反馈至管理系统。
11.如权利要求10所述的方法,其特征在于,根据读取的数据变更消息的事务状态向各个生产集群下发针对所述读取的数据变更消息的事务操作指令,包括:
在读取的数据变更消息的事务状态为事务初始状态时,则向各个生产集群下发针对所述读取的数据变更消息的尝试指令;
在读取的数据变更消息的事务状态为事务成功状态时,则向各个生产集群下发针对所述读取的数据变更消息的提交指令;
在读取的数据变更消息的事务状态为事务失败状态时,则向各个生产集群下发针对所述读取的数据变更消息的取消指令。
12.如权利要求11所述的方法,其特征在于,接收各个生产集群对本次下发的事务操作指令的执行结果,将所述执行结果形成事务处理结果,包括:
在所有的生产集群对本次下发的提交指令的执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理成功;或
在所有的生产集群对本次下发的取消执行结果均为成功时,形成针对所述数据变更消息的事务处理结果为事务处理失败。
13.一种数据同步方法,应用在业务主机,其特征在于,包括:
接收针对数据变更消息下发的事务操作指令;
根据接收的事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,包括:在所述数据变更消息的事务操作指令为尝试指令时,对所述数据变更消息的消息内容进行校验;在校验失败时,得到针对所述尝试指令的执行结果为失败;在校验成功时,比较所述数据变更消息的版本是否比所述主机在线使用的第二数据信息的版本新,若是,则将所述数据变更消息作为第一数据信息缓存,并得到针对所述尝试指令的执行结果为成功;否则,得到针对所述尝试指令的执行结果为失败;在所述数据变更消息的事务操作指令为取消指令、且所述取消指令的上一个事务操作指令为尝试指令时,则删除本地缓存的所述第一数据信息;若成功删除,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败;
并将所述执行结果反馈。
14.如权利要求13所述的方法,其特征在于,还包括:
在得到针对所述尝试指令的执行结果为成功时,输出所述数据变更消息的事务状态更新为事务成功状态;以及
在得到针对所述尝试指令的执行结果为失败时,输出所述数据变更消息的事务状态更新为事务失败状态。
15.如权利要求13所述的方法,其特征在于,根据所述事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,还包括:
在所述数据变更消息的事务操作指令为提交指令时,将所述主机在线使用的第二数据信息与本地缓存的所述第一数据信息进行互换操作,若操作成功,得到针对所述提交指令的执行结果为成功;否则,得到针对所述提交指令的执行结果为失败。
16.如权利要求15所述的方法,其特征在于,还包括:
在得到针对所述提交指令的执行结果为成功时,输出所述数据变更消息的提交指令的执行结果为成功;以及
在得到针对所述提交指令的执行结果为失败时,输出所述数据变更消息的事务状态更新为事务失败状态。
17.如权利要求13或15所述的方法,其特征在于,根据所述事务操作指令,执行针对所述数据变更消息的相应操作,得到针对所述事务操作指令的执行结果,还包括:
在所述数据变更消息的事务操作指令为取消指令时,若所述取消指令的上一个事务操作指令为提交指令,将所述主机中的第二数据信息与本地缓存的第一数据信息进行互换操作,若操作成功,得到针对所述取消指令的执行结果为成功;否则,得到针对所述取消指令的执行结果为失败。
18.如权利要求17所述的方法,其特征在于,还包括:
在得到针对所述取消指令的执行结果为成功时,输出所述数据变更消息的取消指令的执行结果为成功;以及
在得到针对所述取消指令的执行结果为失败时,输出所述数据变更消息的取消指令的执行结果为失败。
19.一种数据同步系统,其特征在于,包括如权利要求1-3任一项所述的装置和如权利要求4-9任一项所述的主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511026377.5A CN105701159B (zh) | 2015-12-30 | 2015-12-30 | 一种数据同步装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511026377.5A CN105701159B (zh) | 2015-12-30 | 2015-12-30 | 一种数据同步装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105701159A CN105701159A (zh) | 2016-06-22 |
CN105701159B true CN105701159B (zh) | 2019-05-03 |
Family
ID=56226743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511026377.5A Active CN105701159B (zh) | 2015-12-30 | 2015-12-30 | 一种数据同步装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105701159B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106339408B (zh) * | 2016-08-10 | 2019-08-23 | 深圳中兴网信科技有限公司 | 数据同步方法、数据同步装置和服务器 |
CN106407334A (zh) * | 2016-09-05 | 2017-02-15 | 乐视控股(北京)有限公司 | 缓存集群的更新方法及装置 |
CN107861832B (zh) * | 2017-09-27 | 2020-11-13 | 深信服科技股份有限公司 | 数据验证方法、装置及可读存储介质 |
CN110858197A (zh) * | 2018-08-21 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 一种同步数据的方法和装置 |
CN109597690B (zh) * | 2018-11-14 | 2019-10-22 | 浙江远算云计算有限公司 | 一种高性能云计算云爆发同步方法 |
CN109947801A (zh) * | 2019-02-25 | 2019-06-28 | 交通银行股份有限公司 | 数据库数据同步系统、方法及装置 |
CN110175159B (zh) * | 2019-05-29 | 2020-07-31 | 京东数字科技控股有限公司 | 用于对象存储集群的数据同步方法与系统 |
CN112487081A (zh) * | 2019-09-12 | 2021-03-12 | 北京国双科技有限公司 | 数据同步方法、装置、存储介质及设备 |
CN112380183A (zh) * | 2020-11-13 | 2021-02-19 | 深圳市和讯华谷信息技术有限公司 | 分布式文件的同步方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459503A (zh) * | 2007-12-12 | 2009-06-17 | 华为技术有限公司 | 一种实现数据同步的方法和装置 |
CN101997829A (zh) * | 2009-08-18 | 2011-03-30 | 华为终端有限公司 | 一种分级数据同步的方法和设备 |
CN102143194A (zh) * | 2010-06-10 | 2011-08-03 | 华为技术有限公司 | 数据同步的方法、系统、中间数据节点及终止数据节点 |
CN103686726A (zh) * | 2012-09-26 | 2014-03-26 | 成都鼎桥通信技术有限公司 | 用户数据管理方法、设备和系统 |
CN103701913A (zh) * | 2013-12-30 | 2014-04-02 | 优视科技有限公司 | 数据同步方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100462839B1 (ko) * | 2002-12-24 | 2004-12-23 | 한국전자통신연구원 | 모바일 환경에서의 이동 클라이언트와 서버간의 데이터동기화 및 갱신 충돌 해결 방법 |
-
2015
- 2015-12-30 CN CN201511026377.5A patent/CN105701159B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459503A (zh) * | 2007-12-12 | 2009-06-17 | 华为技术有限公司 | 一种实现数据同步的方法和装置 |
CN101997829A (zh) * | 2009-08-18 | 2011-03-30 | 华为终端有限公司 | 一种分级数据同步的方法和设备 |
CN102143194A (zh) * | 2010-06-10 | 2011-08-03 | 华为技术有限公司 | 数据同步的方法、系统、中间数据节点及终止数据节点 |
CN103686726A (zh) * | 2012-09-26 | 2014-03-26 | 成都鼎桥通信技术有限公司 | 用户数据管理方法、设备和系统 |
CN103701913A (zh) * | 2013-12-30 | 2014-04-02 | 优视科技有限公司 | 数据同步方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105701159A (zh) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105701159B (zh) | 一种数据同步装置和方法 | |
US11899684B2 (en) | System and method for maintaining a master replica for reads and writes in a data store | |
US10015042B2 (en) | System and method for data replication using a single master failover protocol | |
CN103297456B (zh) | 一种分布式系统下共享资源的访问方法及分布式系统 | |
US10248704B2 (en) | System and method for log conflict detection and resolution in a data store | |
US9489434B1 (en) | System and method for replication log branching avoidance using post-failover rejoin | |
US9521196B2 (en) | Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment | |
US9069827B1 (en) | System and method for adjusting membership of a data replication group | |
CN108287756A (zh) | 一种处理任务的方法及装置 | |
US8442958B2 (en) | Server change management | |
US20150120658A1 (en) | System and method for splitting a replicated data partition | |
CN109831500A (zh) | Kubernetes集群中配置文件与Pod的同步方法 | |
CN104885054A (zh) | 大规模并行处理数据库中执行事务的系统和方法 | |
CN109582433A (zh) | 一种资源调度方法、装置、云计算系统及存储介质 | |
CN104346373B (zh) | 分区日志队列同步管理方法及设备 | |
CN115599870B (zh) | 基于消息队列的存量数据与增量数据融合的数据同步方法 | |
CN103345502B (zh) | 分布式数据库的事务处理方法和系统 | |
CN109376197A (zh) | 一种数据同步方法、服务器及计算机存储介质 | |
CN107430603A (zh) | 大规模并行处理数据库的系统和方法 | |
CN107273440A (zh) | 计算机应用、数据存储方法、微服务和微数据库 | |
CN108345617A (zh) | 一种数据同步方法、装置以及电子设备 | |
CN109643310A (zh) | 用于数据库中数据重分布的系统和方法 | |
CN106354563A (zh) | 用于3d重建的分布式计算系统以及3d重建方法 | |
CN104793981B (zh) | 一种虚拟机集群的在线快照管理方法及装置 | |
CN102902746A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |