首页> 中国专利> 多机房之间进行业务数据同步的方法及装置、设备和介质

多机房之间进行业务数据同步的方法及装置、设备和介质

摘要

本发明提供一种多机房之间进行业务数据同步的方法及装置、设备和介质,方法包括:业务服务以及同步服务;设置一数据同步框架,通过代码侵入每个服务器端,统一接管同步模式;若数据产生修改,则被拦截至业务服务的队列中,将其进行序列化;业务服务将序列化的数据发送至同步服务;同步服务将接收的序列化的数据进行数据反序列化操作,写入远端的服务器中,支持不同机房间数据的多向同步。

著录项

  • 公开/公告号CN112182095A

    专利类型发明专利

  • 公开/公告日2021-01-05

    原文格式PDF

  • 申请/专利权人 福州智象信息技术有限公司;

    申请/专利号CN202010896795.4

  • 发明设计人 左丹;

    申请日2020-08-31

  • 分类号G06F16/27(20190101);G06F16/25(20190101);G06F9/54(20060101);

  • 代理机构35212 福州市鼓楼区京华专利事务所(普通合伙);

  • 代理人林燕

  • 地址 350000 福建省福州市马尾区湖里路27号1#楼2-17Z室(自贸试验区内)

  • 入库时间 2023-06-19 09:26:02

说明书

技术领域

本发明涉及计算机技术领域,特别涉及一种多机房之间进行业务数据同步的方法及装置、设备和介质。

背景技术

当存在多个机房之间的数据需要进行同步时,现有市面上的产品大都是针对某个库/表进行整个同步,细粒度很粗,无法按业务、按需对特定的数据进行同步。而且缺乏对redis,es等数据进行多向数据同步的整体解决方案。

以redis为例,目前主要通过节点之间进行主从配置实现同步,允许存在一个写节点,多个从节点,但如果是跨机房,多区域数据的多写同步,redis本身的主从配置无法实现,目前基本都采用的是基于主从协议的数据复制,采用MQ等中间件来实现跨机房的传输来实现,以redis的同步工具XPipe为例,其流程如下:

如图1所示,Slave keeper(伪装为redis slave)收集redis日志,然后将日志交由proxy进行压缩,同步。同时proxy也负责接受来自对方的数据,回写至Masterkeeper(伪装为redis master)。

XPipe无法支持多区域(超过2个机房)下的双写,同时采用了主从协议下的日志去更新,所以也无法从业务上控制同步粒度,必须整个redis一起同步。

发明内容

本发明要解决的技术问题,在于提供一种多机房之间进行业务数据同步的方法及装置、设备和介质,支持不同机房间数据的多向同步。

第一方面,本发明提供了一种多机房之间进行业务数据同步的方法,包括:业务服务以及同步服务;

步骤1、设置一数据同步框架,通过代码侵入每个服务器端,统一接管同步模式;

步骤2、若数据产生修改,则被拦截至业务服务的队列中,将其进行序列化;

步骤3、业务服务将序列化的数据发送至同步服务;

步骤4、同步服务将接收的序列化的数据进行数据反序列化操作,写入远端的服务器中。

进一步地,所述数据同步框架中封装了Elasticsearch组件、Rabbitmq组件、Redis组件以及Mysql组件,用于提供Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务,并提供与原sdk一致的接口。

进一步地,所述步骤4进一步具体为:同步服务将接收的序列化的数据进行数据反序列化为mysql client、Elasticsearchclient、redis client或mq client的操作,写入远端的服务器中对应的Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务。

第二方面,本发明提供了一种多机房之间进行业务数据同步的装置,包括:业务服务以及同步服务;

侵入模块,设置一数据同步框架,通过代码侵入服务器端,统一接管同步模式;

序列化模块,若数据产生修改,则被拦截至业务服务的队列中,将其进行序列化;

发送模块,业务服务将序列化的数据发送至同步服务;

同步模块,同步服务将接收的序列化的数据进行数据反序列化操作,写入远端的服务器中。

进一步地,所述数据同步框架中封装了Elasticsearch组件、Rabbitmq组件、Redis组件以及Mysql组件,用于提供Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务,并提供与原sdk一致的接口。

进一步地,所述同步模块进一步具体为:同步服务将接收的序列化的数据进行数据反序列化为mysql client、Elasticsearchclient、redis client或mq client的操作,写入远端的服务器中对应的Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务。

第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。

第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

本申请实施例提供的一种多机房之间进行业务数据同步的方法及装置、设备和介质,实现数据的精细同步控制,同时支持不同机房间数据的多向同步。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为现有的数据同步的示意图;

图2为本发明数据同步的示意图;

图3为本发明实施例一中方法中的流程图;

图4为本发明实施例二中装置的结构示意图。

具体实施方式

本申请实施例通过提供一种多机房之间进行业务数据同步的方法及装置、设备和介质,解决了无法从业务上控制同步粒度,必须整个redis一起同步的问题;达到支持不同机房间数据的多向同步。

本申请实施例中的技术方案,总体思路如下:

设置数据同步框架,通过代码侵入server端统一接管同步的模式,对数据同步提供如下特性:

支持Elasticsearch、Rabbitmq、Redis、Mysql的数据同步,多写模式;其中数据的格式不一样,但都会序列化为json字符串,Server端接收后,能反序列化回来;

业务服务通过代码侵入控制同步的粒度:

client.insert(data1);//data1不会被同步

client.createSync().insert(data2);//data2被同步

如图2所示,当createSync产生的修改,被拦截到mysql changes/es changes/redis changes/mq changes的队列中(通过云端配置进行控制同步的位置),被同步处理器序列化,再通过数据发送器发送给同步服务,完成一次client端的同步处理。其中数据发送器是由服务监视器产生的,它决定了数据如何发送给同步服务,比如以消息队列的形式,发送给同步服务。

数据同步服务接受队列中的消息,并根据同步处理器中所对应的目标,将数据反序列化为mysql client/es client/redis client/mq client的操作,写入远端的server中,完成跨区的数据写入,即完成数据同步;以redis client为例,表示同步服务中创建的redis client实例,它会连接远程的redis server(即redis服务)。例如:json数据时,将json反序列化为client的操作,相当于调用client的方法,比如redis client的set方法。该方法,就把数据写到远程的redis server中了,完成数据的同步。

同理,在每个区域部署对应的同步服务,就可以实现多区域的数据多写。

实施例一

如图3所示,本实施例提供一种多机房之间进行业务数据同步的方法,包括:业务服务以及同步服务;

步骤1、设置一数据同步框架,通过代码侵入每个服务器端,统一接管同步模式,所述数据同步框架中封装了Elasticsearch组件、Rabbitmq组件、Redis组件以及Mysql组件,用于提供Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务,并提供与原sdk一致的接口;

步骤2、若数据产生修改,则被拦截至业务服务的队列中,将其进行序列化;

步骤3、业务服务将序列化的数据发送至同步服务;

步骤4、同步服务将接收的序列化的数据进行数据反序列化为mysql client、Elasticsearchclient、redis client或mq client的操作,写入远端的服务器中对应的Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务。

基于同一发明构思,本申请还提供了与实施例一中的方法对应的装置,详见实施例二。

实施例二

如图4所示,在本实施例中提供了一种多机房之间进行业务数据同步的装置,包括:业务服务以及同步服务;

侵入模块,设置一数据同步框架,通过代码侵入服务器端,统一接管同步模式,所述数据同步框架中封装了Elasticsearch组件、Rabbitmq组件、Redis组件以及Mysql组件,用于提供Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务,并提供与原sdk一致的接口;

序列化模块,若数据产生修改,则被拦截至业务服务的队列中,将其进行序列化;

发送模块,业务服务将序列化的数据发送至同步服务;

同步模块,同步服务将接收的序列化的数据进行数据反序列化为mysql client、Elasticsearchclient、redis client或mq client的操作,写入远端的服务器中对应的Elasticsearch服务、Rabbitmq服务、Redis服务以及Mysql服务。

由于本发明实施例二所介绍的装置,为实施本发明实施例一的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。

基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。

实施例三

本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。

由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。

基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。

实施例四

本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。

本申请实施例中提供的技术方案,至少具有如下技术效果或优点:本申请实施例提供的方法、装置、系统、设备及介质,

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号