本发明涉及云计算技术领域,特别是涉及一种双向数据同步方法及系统。
背景技术:
目前为了保证应用服务的的高可用,动态调配应用服务能力,提高企业市场竞争力。企业大多会选择对接多个云资源提供商,将应用部署在不同服务商的云资源上。以此来保证,”不将所有鸡蛋放在一个篮子里”。但是,云资源服务商之间是没有任何关联。当其中一个云资源出现故障,就会造成当前平台的应用处于不可用状态,影响业务的正常运行,这将会对企业造成巨额的损失。
目前现有的技术方案是通过保证数据库的公用性,来保证跨云应用的数据同步性。这种方式是最简单的,也是较为低成本的做到跨云应用的数据同步性。保证数据库的公用性,就是通过本地机房提供数据的存储服务,通过专线接入到云资源上,部署在不同的云服务商的应用访问的是相同的数据源。
如图1所示,为数据库公用性双云数据同步的解决方案。从图1中可以看出该方案具有的缺点有:
1.数据高度耦合。如若本地机房和云平台链入备阻隔,如专线被中断。
两个平台的将丧失服务能力。
2.可扩展性差。单一平台改动会影响另一平台的使用。
3.资源利用度低。云资源平台有丰富的生态圈,该结构单一没有充分利用到现有的云资源。
技术实现要素:
本发明要解决的技术问题是提供一种双向数据同步方法及系统,能够实现不同云平台之间的数据解耦,实现跨云平台的数据高可用。
为解决上述技术问题,本发明提供了一种双向数据同步方法,所述方法包括:获取数据源云平台的数据更新指令;对所述数据更新指令进行事务处理;通过数据目的云平台提供的接口服务,将经过了事务处理的数据更新指令同步至数据目的云平台。
在一些实施方式中,所述数据更新指令包括:create指令、delete指令、update指令、insert指令。
在一些实施方式中,获取数据源云平台的数据更新指令,包括:通过数据源云平台的消息队列,获取数据源云平台的数据更新指令。
在一些实施方式中,所述消息队列包括:redis消息队列。
在一些实施方式中,redis消息队列中存储有在数据源云平台的数据库中已经执行的数据更新指令的执行数据。
在一些实施方式中,所述数据更新指令的执行数据依据执行的时间顺序逐条存储。
在一些实施方式中,对所述数据更新指令进行事务处理,包括:对所述数据更新指令进行解析,得到所述数据更新指令中的关键参数;根据所述关键参数,对所述数据更新指令进行事务记录。
在一些实施方式中,通过数据目的云平台提供的接口服务,将经过了事务处理的数据更新指令同步至数据目的云平台,包括:根据所述事务记录,将未经过同步处理的数据更新指令同步至数据目的云平台。
此外,本发明还提供了一种双向数据同步系统,所述系统包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据前文所述的双向数据同步方法。
采用这样的设计后,本发明至少具有以下优点:
本发明既保证的不同的云平台上的应用的独立性,同时做到了对现有平台应用的数据结构零改动的影响,唯一要做的就是对migration模块的应用的开发和维护,极大的降低了企业的实现跨云高可用的成本。
附图说明
上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。
图1是现有技术提供的数据库公用性的网络结构图;
图2是本发明实施例提供的双向数据同步方法的应用网络结构图;
图3是本发明实施例提供的双向数据同步方法的流程图;
图4是本发明实施例提供的双向数据同步系统的结构图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图2示出了本发明实施例提供的双向数据同步方法所应用的网络环境。参见图2,在双向数据同步方法所涉及的两个云平台中,除了各自所部署的应用服务之外,还分别配备有各自的后台数据库系统及消息队列。
每个云平台的后台数据库系统在作用在于对该云平台提供的云服务提供后台数据支持。例如,在提供云服务过程中需要使用的各个关键的数据表、索引均可以由后台数据库系统来提供。
每个云平台各自的后台数据库系统均是独立运行的。因此,在使用两个云平台分别作为主备,保证云服务的可用性时,主云平台的后台数据库系统与备用云平台的后台数据库系统之间会存在数据不同步的问题。
可以理解的是,在各自独立运行的过程中,主云平台的后台数据库和备用云平台的后台数据库会分别执行各自的数据更新指令。此处所将的数据更新指令是指对数据库的存储结构和存储内容会有改变的指令。这样的指令可以有:create指令、delete指令、update指令、insert指令。
消息队列的作用在于存储在数据源云平台的数据库中已经执行的数据更新指令的执行数据。换言之,在每个云平台上,只要后台数据库执行一次数据更新指令,属于该云平台的消息队列中就存储一个相应的消息。典型的,消息队列是指redis消息队列。
需要注意的是,上述的云平台,其中的数据库以及消息队列均部署于云端。
另外,为了实现两个云平台之间的数据同步,在本地机房部署migration模块。migration模块根据每个云平台上消息队列中存储的消息,向另外一侧的云平台执行数据同步。此时,作为消息来源的云平台就是数据源云平台,而另外一个云平台就是数据目的云平台。并且,migration模块能够实现在两个云平台之间的双向同步。也就是说,数据源云平台既可以是主云平台,也可以是备用云平台。
图3示出了本发明实施例提供的双向数据同步方法的流程。由于在本发明实施例中,上述的双向数据同步方法由本地部署的migration模块执行,图3示出的流程也就是migration模块所执行的流程。参见图3,双向数据同步方法包括:
s31,获取数据源云平台的数据更新指令。
s32,对所述数据更新指令进行事务处理。
s33,通过数据目的云平台提供的接口服务,将经过了事务处理的数据更新指令同步至数据目的云平台。
在图3示出的双向数据同步方法的执行流程中,对数据更新指令执行的事务处理主要是指对于指令执行操作的事务记录。更为具体,上述的事务处理包括:对所述数据更新指令进行解析,得到所述数据更新指令中的关键参数;根据所述关键参数,对所述数据更新指令进行事务记录。
由于对指令执行进行了事务记录,通过数据目的云平台提供的接口服务,将经过了事务处理的数据更新指令同步至数据目的云平台,包括:根据所述事务记录,将未经过同步处理的数据更新指令同步至数据目的云平台。
当前双云数据同步是具有很大的扩展性,比如:可以做到多云同步,不止限制于两个云平台之间。migration模块可以进行持续的开发维护.保证数据的高可靠。
图4是本发明双向数据同步系统的结构图。参见图4,双向数据同步系统包括:中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有系统操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,本领域技术人员利用上述揭示的技术内容做出些许简单修改、等同变化或修饰,均落在本发明的保护范围内。