CN110309231B - 一种跨机房的数据同步方法及系统 - Google Patents

一种跨机房的数据同步方法及系统 Download PDF

Info

Publication number
CN110309231B
CN110309231B CN201910628529.0A CN201910628529A CN110309231B CN 110309231 B CN110309231 B CN 110309231B CN 201910628529 A CN201910628529 A CN 201910628529A CN 110309231 B CN110309231 B CN 110309231B
Authority
CN
China
Prior art keywords
synchronous
data
message
machine room
synchronization
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
Application number
CN201910628529.0A
Other languages
English (en)
Other versions
CN110309231A (zh
Inventor
王亚军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Focus Technology Co Ltd
Original Assignee
Focus Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Focus Technology Co Ltd filed Critical Focus Technology Co Ltd
Priority to CN201910628529.0A priority Critical patent/CN110309231B/zh
Publication of CN110309231A publication Critical patent/CN110309231A/zh
Application granted granted Critical
Publication of CN110309231B publication Critical patent/CN110309231B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Abstract

本发明公开了一种跨机房的数据同步方法及系统,其特征在于,通过生成代理对象拦截数据变更动作,以捕获生产者的数据变更动作,并封装为同步消息,由消息中间件传送至订阅数据变更动作的消费者,经消息拆包能触发消费者发生与生产者相同的数据变更动作,完成跨机房数据同步;并在同步执行过程中,以同步监控表实时记录每个机房的数据同步完成情况。达到有效地减少数据同步过程中代码重复编制次数,扩展性极强的技术效果;在同步执行过程中,以持久化的同步监控表实时记录每个机房的数据同步完成情况,同时也有助于动态实时地监控数据同步过程,在同步出现问题时及时干预。

Description

一种跨机房的数据同步方法及系统
技术领域
本发明涉及分布式系统领域,特别是涉及一种跨机房的数据同步方法及系统。
背景技术
随着微服务架构的成熟与流行,配置中心是支撑该架构的核心中间件之一,配置中心一般为CS架构,C是客户端,以组件的形式接入应用,S为服务端,由配置应用及管理应用组成,两者均为独立部署应用,其中配置应用负责处理来自客户端和管理应用的配置读写请求;管理应用提供web操作页面并在后台发送请求给配置应用,完成配置管理。大型网站为保证可用性会采用异地多活的部署架构,因此配置应用也需要在每个机房部署,配置数据通常是存储在数据库中,并基于数据库自带的日志重演机制,将数据同步到所有机房,但由于这种数据同步模式采用单通道,即不同机房数据库采用直连模式,受限于网络通道的流量及传输速度,大数据量的传输无疑会导致阻塞情况的发生,同步性能会急剧下降,数据同步效率低下。
其次,消息中间件技术解决了分布式环境中数据同步依赖单通道的困境,实现能并发处理不同消息传递的目的,然而它却带了新的问题,即需要为不同的业务操作编制不同调用消息中间价接口的调用代码,随着业务量增多,编制的调用代码量也越来越多,代码的冗余既不利于后期的维护,也不利于遇到问题时的快速处理;进一步地,由于不同消息中间件的接口标准不一样,如果中途更换消息中间件,无疑将带来巨大的修改工作量。
现有的数据同步技术要不是基于数据库增量日志解析,实时将数据同步到本机房或跨机房的mysql/oracle数据库,要不是采用发布订阅模式实现不同类型数据同步,以有效利用网络资源、存储资源和计算资源,如发明专利“面向消息中间件的跨域数据同步方法与系统”(申请号:201811043048.5),但不管是哪一种方法,都脱离不了对通道流量、消息中间件的依赖,因此如何既保证消息的并行传递,又不至于编制冗余的接口调用代码,是当前应解决的技术问题。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种跨机房的数据同步方法及系统。
为解决上述技术问题,本发明提供一种跨机房的数据同步方法,其特征在于,通过生成代理对象拦截数据变更动作,以捕获生产者的数据变更动作,并封装为同步消息,由消息中间件传送至订阅数据变更的消费者,经消息拆包能触发消费者发生与生产者相同的数据变更动作,完成跨机房数据同步;并在同步执行过程中,以同步监控表实时记录每个机房的数据同步完成情况,具体步骤包括:
步骤1,基于动态代理技术,为数据变更动作生成代理对象:在跨机房环境中,设置发生数据变更动作的机房为生产机房,其他机房则为消费机房;待外部操作触发生产机房内部数据发生变更动作时,捕获触发操作并利用动态代理技术为数据变更动作生成代理对象,将其作为数据变更动作的代理执行者;
所述数据变更动作,特指数据增加、数据删除和数据修改的动作;所述外部操作是指能刺激数据变更动作并引发数据库发生变化的操作,包括页面点击和文本输入;
步骤2,代理对象将拦截的数据变更动作封装为同步消息后,生产机房执行数据变更动作成功后,发送同步消息,在同步监控表中新增同步记录;所述同步监控表用于监测并判定数据同步的完成与否,所述同步监控表中的字段内容包括同步消息ID、数据变更动作方法名及方法执行参数、所有机房名和同步完成机房名;
步骤3,消息中间件接收生产机房发送的同步消息,并将同步消息转发至各消费者机房完成数据同步,生成监控消息反馈至生产机房;
步骤4,基于监控消息的内容,更新生产机房的同步监控表,对完成数据同步的消费机房进行记录:生产机房接收到监控消息后,根据监控消息中的同步消息id定位至同步监控表中相对应的数据记录,并将监控消息中的机房名追加入该数据记录的“同步完成机房名”字段内容中;
步骤5,数据同步过程的实时动态监控:每分钟调用生产机房数据库的同步监控表,遍历表中的字段“所有机房名”和“同步完成机房名”,对两个字段的内容进行一致性校验,并以可视化的方式展示数据变更动作的同步完成进程。
所述步骤2还包括:
步骤201,代理对象自动拦截生产机房内数据变更事件的发生,获取数据变更动作、外部操作触发的数据变更动作方法及方法参数,将其一同封装为同步消息,并为同步消息生成唯一ID;
步骤202,生产机房执行数据变更动作,并将变更后的数据持久化入数据库中;待变更执行成功后,同步消息由生产机房发送至消息中间件;
步骤203,判断同步消息是否成功发送至消息中间件,如发送失败,则抛出异常;若发送成功,生产者机房数据库中的同步监控表中新增同步监控记录,字段包括同步消息ID、数据变更动作方法名及方法执行参数、所有机房名、同步完成机房名;其中同步完成机房名初次默认为生产者机房名名称;所有机房名为跨机房环境中所有机房的名称。
所述步骤3还包括:
步骤301,根据消费机房在消息中间件中的主题(Topic)订阅情况,消息中间件将接收到的同步消息转送至有订阅的消费机房;
步骤302,消费机房中各计算机拆解同步消息,触发产生与生产者相同的数据变更动作,根据同步消息中的数据变更动作方法名及方法执行参数,调用数据变更动作方法并传入参数,完成数据在数据库变更和持久化;
步骤303,消费机房将同步消息id与机房名封装为监控消息,由于所有机房均已在消息中间件中订阅监控类的消息,待消息中间件接收到监控类的消息后,直接转送至生产机房。
所述步骤4的同步监控表更新具体为:生产机房接收到监控消息后,根据监控消息中的同步消息id定位至同步监控表中相对应的数据记录,并将监控消息中的机房名追加入该数据记录的“同步完成机房名”字段内容中。
所述步骤5中,执行基于“所有机房名”和“同步完成机房名”两个字段内容一致性检验,若两者内容一致,提示“同步成功完成”,并以调用回调函数的形式告知所有关系人;所述回调函数中集结了邮件、微信、QQ和短信的消息通知接口;若记录中两者内容不一致,提取未完成数据同步的机房名,并提示“同步正在进行中”;根据计算已完成同步的百分比,可视化展示数据同步执行进度。
所述步骤5中,在调用数据执行一致性校验的过程中,若间隔时间大于10分钟,字段“同步完成机房”的内容没有发生变化,提示“同步延迟”,并结合当前已完成同步的百分比确定计算延迟程度,调用回调函数发送“同步延迟程度”的提示消息至关系人。
所述本地机房的代理模块利用Javassist代理技术创建代理对象,当应用客户端接收到新增产品数据的需求,并将需求发送至服务器端处理时,代理对象拦截对产品数据新增方法的调用,阻拦产品数据库发生变更,获取目标对象(即产品数据新增)、产品数据新增方法及方法参数,封装为同步消息,并利用Twitter snowflake算法生成同步消息ID号,所述消息中间件为分布式发布订阅消息系统。
一种跨机房的数据同步系统,其特征在于,为跨机房环境中每个机房的每台计算机配置同步组件,所述同步组件具体包括依次相连的代理模块,消息模块、分析模块及持久化模块;
所述代理模块,用于利用动态代理技术,直接为拦截到的数据变更动作对象生成一个代理对象,代理执行数据变更动作;
所述消息模块,用于执行消息的传送和接收;
所述分析模块,用于监控数据同步的完成进度;
所述持久化模块,用于数据在数据库的持久化,并执行数据的增加、删除、修改和检查。
本发明所达到的有益效果:
(1)本发明基于对动态代理技术的应用,以生成的代理对象捕获数据变更动作并封装同步消息,借助通用的消息中间件接口调用代码完成消息在生产者和消费者间的传递,并利用消息中间件的并行机制高效地完成数据同步,有效地减少数据同步过程中代码重复编制次数,扩展性极强;
(2)本发明在同步执行过程中,以持久化的同步监控表实时记录每个机房的数据同步完成情况,同时也有助于动态实时地监控数据同步过程,在同步出现问题时及时干预。
附图说明
图1为本发明的示例性实施例的结构示意图;
图2为本发明的示例性实施例中的同步数据流程图;
图3为本发明的示例性实施例中基于Kafka的跨机房数据同步实现流程图。
具体实施方式
下面结合附图和示例性实施例对本发明作进一步的说明:
在本发明实施例中,在跨机房环境中,发生数据变更动作的机房自动成为生产者(下文称:生产机房),其他机房自动成为消费者(下文称:消费机房);
图1为本发明实施例中一种跨机房的数据同步结构示意图,包括电信机房、本地机房、国外机房,在本发明实施例中,默认本地机房为生产机房,电信机房和国外机房为消费机房,由于国外机房提前在消息中间件中提前订阅产品数据的同步服务,因此当本地机房内发生相关产品数据的变更时,比如产品种类的增加、产品名称的修改等等,本地机房通过代理对象形成同步消息,经消息中间件转送至国外机房,但不会转送至电信机房;同时,当国外机房完成数据变更动作后组织监控消息,经消息中间件转送至本地机房处理及记录;
每个机房内每台计算机内配置同步组件,由代理模块,消息模块、分析模块及持久化模块组成;其中,所述代理模块,用于利用动态代理技术,直接为拦截到的数据变更动作对象生成一个代理对象,代理执行数据变更动作;所述消息模块,用于执行消息的传送和接收;所述分析模块,用于从数据库中调取监控数据进行分析,获取数据同步的完成进度;所述持久化模块,用于将监控数据和变更数据在数据库的持久化,并执行数据的增、珊、改、查;
图2为本发明实施例中一种跨机房的同步数据流程图,基于对动态代理技术的应用,通过生成代理对象拦截数据变更动作对象,以捕获生产者的数据变更动作,并封装为同步消息由消息中间件传送至订阅数据变更动作的消费者,经消息拆包能触发消费者发生与生产者相同的数据变更动作,完成跨机房数据同步;并在同步执行过程中,以持久化的同步监控表实时记录每个机房的数据同步完成情况,具体流程包括:
S201:基于动态代理技术,为数据变更动作生成代理对象;在跨机房环境中,待外部操作触发生产机房内部数据发生变更动作时,捕获触发操作并利用动态代理技术为数据变更动作生成代理对象,将其作为数据变更动作的代理执行者;
在跨机房环境中,发生数据变更动作的机房为生产机房,其他机房则为消费机房;
在本发明中,所述数据变更动作,特指数据增加、数据删除、数据修改的动作;所述外部操作是指类似页面点击、文本输入等能刺激数据变更动作并引发数据库发生变化的操作;
S202:代理对象将拦截的数据变更动作封装为同步消息后,生产机房执行数据变更动作成功后,发送同步消息,在同步监控表中新增同步记录;所述同步监控表是监测并判定数据同步完成与否的标志,字段内容包括同步消息ID、数据变更动作方法名及方法执行参数、所有机房名、同步完成机房名;
具体步骤包括:
步骤S202-1:代理对象自动拦截生产机房内数据变更事件的发生,获取数据变更动作、外部操作触发的数据变更动作方法及方法参数,将其一同封装为同步消息,并为同步消息生成唯一ID;
步骤S202-2:生产机房执行数据变更动作,并将变更后的数据持久化入数据库中;待变更执行成功后,同步消息由生产机房发送至消息中间件;
步骤S202-3:判断同步消息是否成功发送至消息中间件,如发送失败,抛出异常;若发送成功,生产机房数据库中的同步监控表中新增同步监控记录,字段包括同步消息ID、数据变更动作方法名及方法执行参数、所有机房名、同步完成机房名;其中同步完成机房名初次默认为生产机房名名称;所有机房名为跨机房环境中所有机房的名称;
S203:消息中间件接收生产机房发送的同步消息,并将同步消息转发至有需同步数据需要的各消费者机房完成数据同步,生成监控消息反馈至生产机房;具体过程包括:
步骤S203-1:根据消费机房在消息中间件中的主题(Topic)订阅情况,消息中间件将接收到的同步消息转送至有订阅的消费机房;
步骤S203-2:消费机房中各计算机拆解同步消息,触发产生与生产者相同的数据变更动作,根据同步消息中的数据变更动作方法名及方法执行参数,调用数据变更动作方法并传入参数,完成数据在数据库变更和持久化;
步骤S203-3:消费机房将同步消息id与机房名封装为监控消息,由于所有机房均已在消息中间件中订阅监控类的消息,待消息中间件接收到监控类的消息后,直接转送至生产者机房;
S204:基于监控消息的内容,更新生产机房的同步监控表,对已完成数据同步的消费机房进行记录:生产机房接收到监控消息后,根据监控消息中的同步消息id定位至同步监控表中相对应的数据记录,并将监控消息中的机房名追加入该数据记录的“同步完成机房”字段内容中;
S205:数据同步过程的实时动态监控:每分钟调用生产机房数据库的同步监控表,遍历表中的字段“所有机房名”和“同步完成机房名”,对两个字段的内容进行一致性校验,并以可视化的方式展示数据变更动作的同步完成进程;
鉴于如果每次更新都对同步监控表进行调用,频繁读取数据库并做校验无疑是对资源的浪费;如果时间过久进行调用,待同步出现异常时,并不能及时发现;以1分钟作为周期,既不会因为频繁造成性能降低,也不会担心周期过长而导致异常处理延时;
特别地,基于“所有机房名”和“同步完成机房名”两个字段内容一致性检验,若两者内容一致,提示“同步成功完成”,并以调用回调函数的形式告知所有关系人;回调函数中集结了邮件、微信、QQ、短信等多类型的消息通知接口;若记录中两者内容不一致,提取未完成数据同步的机房名,并提示“同步正在进行中”;根据计算已完成同步的百分比,可视化展示数据同步执行进度;
特别地,在调用数据执行一致性校验的过程中,若间隔时间大于10分钟,字段“同步完成机房”的内容没有发生变化,提示“同步延迟”,并结合当前已完成同步的百分比确定计算延迟程度,调用回调函数发送“同步延迟程度”的提示消息至关系人;
图3为本发明实施例中基于Kafka的跨机房数据同步实现流程图,在本发明实施例中,本地机房为发送机房,电信机房和国外机房为接收机房,以新增产品数据为例,同步流程包括:
步骤S301:本地机房的代理模块利用Javassist代理技术创建代理对象,生产机房默认为发送机房,消费机房则默认为其他所有接收机房;实现代码如下:
Figure BDA0002127948850000071
Figure BDA0002127948850000081
步骤S302:当应用客户端接收到新增产品数据的需求,并将需求发送至服务器端处理时,代理对象拦截对产品数据新增方法的调用,阻拦产品数据库发生变更,获取目标对象(即产品数据新增)、产品数据新增方法及方法参数,封装为同步消息,并利用Twittersnowflake算法生成同步消息ID号;实现代码如下:
Figure BDA0002127948850000082
步骤S303:代理对象调用产品数据新增方法,持久化模块控制产品数据库内插入新的产品数据,如若没有插入成功,抛出异常;如若成功,消息模块将同步消息发送至Kafka,所述Kafka为是由Apache软件基金会开发的一种高吞吐量的分布式发布订阅消息系统,如若成功发送,发送机房数据库中的同步监控表新增监控记录,记录信息包括同步消息ID、产品数据新增方法名及方法参数、所有机房名、同步完成机房名;其中同步完成机房名初次默认为本地机房的名称(即local);所有机房名为本地机房名称(即local)、电信机房名称(即tc)、国外机房(即inter),如表1所示的第2条数据记录;
表1
Figure BDA0002127948850000091
步骤S304:Kafka根据电信机房和国外机房的在Kafka的消息主题订阅情况,将同步消息传送至完成订阅服务的电信机房和国外机房;
鉴于产品数据是强一致性数据,跨机房环境内必须保持每个机房内产品数据保持一致性,因此电信机房和国外机房均会订阅产品数据同步服务的消息;
步骤S305:电信机房和国外机房的消息模块接受并处理同步消息,经对消息解包,根据同步消息中包含的数据变更动作对象(即产品数据新增)和变更方法(即产品数据新增方法),调用产品数据新增方法并传入方法参数,完成产品数据的新增,并持久化入两个机房的数据库中;
步骤S306:待电信机房和国外机房成功地完成与本地机房的产品数据新增的数据变更后,两个机房分别将同步消息id与各自机房名封装为监控消息,分别为监控消息A(20190617-2,tc)、监控消息B(20190617-2,inter),由于所有机房均已在消息中间件中订阅监控类的消息,待Kafka接收到监控类的消息后,直接转送至本地机房;
步骤S307:本地机房的消息模块接收到监控消息A和监控消息B,根据消息中的同步消息id:20190617-2定位到数据监控表(即本发明实施例中的表1)中相应的记录,即(20190617-2;Add_product();
产品编号:p-01,产品类型:LED灯,产品名称:LED球泡灯;local,tc,inter;local),将2个监控消息中的机房名追加入该记录的“同步完成机房”字段内容中,追加成功的记录为:(20190617-2;Add_product();产品编号:p-01,产品类型:LED灯,产品名称:LED球泡灯;local,tc,inter;local,tc,inter);
步骤S308:发送机房的分析模块控制持久化模块调用数据库中的同步监控表,针对字段“所有机房名”和“同步完成机房名”的内容做一致性校验,如本发明实施例中的记录20190617-2,字段“所有机房名”的内容是local,tc,inter,字段“同步完成机房名”的内容也是local,tc,inter,此时提示本地机房、电信机房和国外机房这三个机房的新增产品数据已同步完成;
假若内容不一致,如表1中的第1条数据记录:(20190617-1;Delete_order();订单编号:001;local,tc,inter;local,tc),相对于字段“所有机房名”,字段“同步完成机房名”中没有”inter”,将机房名”inter”提取出并提示”同步正在进行中,inter机房未完成同步”;根据已完成同步的机房数,计算同步完成度,即2/3=66.7%.
如若10分钟及以上,未完成同步记录(20190617-1;Delete_order();订单编号:001;local,tc,inter;local,tc)内容一直没有发生变化,提示“同步延迟”至关系人。
本发明主要用于提供一种跨机房的数据同步方法及系统,基于对动态代理技术的应用,以生成的代理对象捕获数据变更动作并封装同步消息,借助通用的消息中间件接口调用代码完成消息在生产者和消费者间的传递,并利用消息中间件的并行机制高效地完成数据同步,有效地减少数据同步过程中代码重复编制次数,扩展性极强;本发明在同步执行过程中,以持久化的同步监控表实时记录每个机房的数据同步完成情况,同时也有助于动态实时地监控数据同步过程,在同步出现问题时及时干预。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。

Claims (8)

1.一种跨机房的数据同步方法,其特征在于,通过生成代理对象拦截数据变更动作,以捕获生产者的数据变更动作,并封装为同步消息,由消息中间件传送至订阅数据变更动作的消费者,经消息拆包能触发消费者发生与生产者相同的数据变更动作,完成跨机房数据同步;并在同步执行过程中,以同步监控表实时记录每个机房的数据同步完成情况,具体步骤包括:
步骤1,基于动态代理技术,为数据变更动作生成代理对象:在跨机房环境中,设置发生数据变更动作的机房为生产机房,其他机房则为消费机房;待外部操作触发生产机房内部数据发生变更动作时,捕获触发操作并利用动态代理技术为数据变更动作生成代理对象,将其作为数据变更动作的代理执行者;
所述数据变更动作,特指数据增加、数据删除和数据修改的动作;所述外部操作是指能刺激产生数据变更动作并引发数据库发生变化的操作,包括页面点击和文本输入;
步骤2,代理对象将拦截的数据变更动作封装为同步消息后,生产机房执行数据变更动作成功后,发送同步消息,在同步监控表中新增同步记录;所述同步监控表用于监测并判定数据同步的完成与否,所述同步监控表中的字段内容包括同步消息ID、数据变更动作方法名及方法执行参数、所有机房名和同步完成机房名;
步骤3,消息中间件接收生产机房发送的同步消息,并将同步消息转发至各消费者机房完成数据同步,生成监控消息反馈至生产机房;
步骤4,基于监控消息的内容,更新生产机房的同步监控表,对完成数据同步的消费机房进行记录:生产机房接收到监控消息后,根据监控消息中的同步消息id定位至同步监控表中相对应的数据记录,并将监控消息中的机房名追加入该数据记录的“同步完成机房名”字段内容中;
步骤5,数据同步过程的实时动态监控:每分钟调用生产机房数据库的同步监控表,遍历表中的字段“所有机房名”和“同步完成机房名”,对两个字段的内容进行一致性校验,并以可视化的方式展示数据变更动作的同步完成进程。
2.如权利要求1所述的一种跨机房的数据同步方法,其特征在于:所述步骤2还包括:
步骤201,代理对象自动拦截生产机房内数据变更事件的发生,获取数据变更动作、外部操作触发的数据变更动作方法及方法参数,将其一同封装为同步消息,并为同步消息生成唯一ID;
步骤202,生产机房执行数据变更动作,并将变更后的数据持久化入数据库中;待变更执行成功后,同步消息由生产机房发送至消息中间件;
步骤203,判断同步消息是否成功发送至消息中间件,如发送失败,则抛出异常;若发送成功,生产者机房数据库中的同步监控表中新增同步监控记录,字段包括同步消息ID、数据变更动作方法名及方法执行参数、所有机房名、同步完成机房名;其中同步完成机房名初次默认为生产者机房名名称;所有机房名为跨机房环境中所有机房的名称。
3.如权利要求2所述的一种跨机房的数据同步方法,其特征在于:所述步骤3还包括:
步骤301,根据消费机房在消息中间件中的主题Topic订阅情况,消息中间件将接收到的同步消息转送至有订阅的消费机房;
步骤302,消费机房中各计算机拆解同步消息,触发产生与生产者相同的数据变更动作,根据同步消息中的数据变更动作方法名及方法执行参数,调用数据变更动作方法并传入参数,完成数据在数据库变更和持久化;
步骤303,消费机房将同步消息id与机房名封装为监控消息,由于所有机房均已在消息中间件中订阅监控类的消息,待消息中间件接收到监控类的消息后,直接转送至生产机房。
4.如权利要求3所述的一种跨机房的数据同步方法,其特征在于:所述步骤4的同步监控表更新具体为:生产机房接收到监控消息后,根据监控消息中的同步消息id定位至同步监控表中相对应的数据记录,并将监控消息中的机房名追加入该数据记录的“同步完成机房名”字段内容中。
5.如权利要求4所述的一种跨机房的数据同步方法,其特征在于:所述步骤5中,执行基于“所有机房名”和“同步完成机房名”两个字段内容一致性检验,若两者内容一致,提示“同步成功完成”,并以调用回调函数的形式告知所有关系人;所述回调函数中集结了邮件、微信、QQ和短信的消息通知接口;若记录中两者内容不一致,提取未完成数据同步的机房名,并提示“同步正在进行中”;根据计算已完成同步的百分比,可视化展示数据同步执行进度。
6.如权利要求5所述的一种跨机房的数据同步方法,其特征在于,所述步骤5中,在调用数据执行一致性校验的过程中,若间隔时间大于10分钟,字段“同步完成机房”的内容没有发生变化,提示“同步延迟”,并结合当前已完成同步的百分比确定计算延迟程度,调用回调函数发送“同步延迟程度”的提示消息至关系人。
7.如权利要求6所述的一种跨机房的数据同步方法,其特征在于,本地机房的代理模块利用Javassist代理技术创建代理对象,当应用客户端接收到新增产品数据的需求,并将需求发送至服务器端处理时,代理对象拦截对产品数据新增方法的调用,阻拦产品数据库发生变更,获取目标对象、产品数据新增方法及方法参数,封装为同步消息,并利用Twittersnowflake算法生成同步消息ID号,所述消息中间件为分布式发布订阅消息系统。
8.一种根据权利要求1-7之一所述方法进行的跨机房的数据同步系统,其特征在于,为跨机房环境中每个机房的每台计算机配置同步组件,所述同步组件具体包括依次相连的代理模块,消息模块、分析模块及持久化模块;
所述代理模块,用于利用动态代理技术,直接为拦截到的数据变更动作对象生成一个代理对象,代理执行数据变更动作;
所述消息模块,用于执行消息的传送和接收;
所述分析模块,用于监控数据同步的完成进度;
所述持久化模块,用于数据在数据库的持久化,并执行数据的增加、删除、修改和检查。
CN201910628529.0A 2019-07-12 2019-07-12 一种跨机房的数据同步方法及系统 Active CN110309231B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910628529.0A CN110309231B (zh) 2019-07-12 2019-07-12 一种跨机房的数据同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910628529.0A CN110309231B (zh) 2019-07-12 2019-07-12 一种跨机房的数据同步方法及系统

Publications (2)

Publication Number Publication Date
CN110309231A CN110309231A (zh) 2019-10-08
CN110309231B true CN110309231B (zh) 2022-07-29

Family

ID=68080075

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910628529.0A Active CN110309231B (zh) 2019-07-12 2019-07-12 一种跨机房的数据同步方法及系统

Country Status (1)

Country Link
CN (1) CN110309231B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324664A (zh) * 2020-01-22 2020-06-23 北京大生在线科技有限公司 一种多机房缓存同步的实现方法
CN111339194A (zh) * 2020-02-24 2020-06-26 平安科技(深圳)有限公司 数据库接入层中间件的自动调度方法和装置
CN111475537B (zh) * 2020-04-09 2023-06-23 杭州小影创新科技股份有限公司 基于pulsar的全球数据同步系统
WO2021223109A1 (zh) * 2020-05-06 2021-11-11 深圳市欢太科技有限公司 数据同步方法、装置、系统、电子设备及存储介质
CN112182095A (zh) * 2020-08-31 2021-01-05 福州智象信息技术有限公司 多机房之间进行业务数据同步的方法及装置、设备和介质
CN112434043B (zh) * 2020-12-02 2022-12-20 新华三大数据技术有限公司 一种数据同步方法、装置、电子设备及介质
CN113709250B (zh) * 2021-08-31 2023-09-15 中国电子科技集团公司第二十八研究所 一种基于订阅发送模式的跨域用户数据同步方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202375A (zh) * 2014-08-22 2014-12-10 广州华多网络科技有限公司 同步数据的方法及系统
CN104618219A (zh) * 2014-12-30 2015-05-13 北京奇虎科技有限公司 一种进行跨机房数据同步的方法和装置
CN106341454A (zh) * 2016-08-23 2017-01-18 世纪龙信息网络有限责任公司 跨机房多活分布式数据库管理系统和方法
CN109714392A (zh) * 2018-11-26 2019-05-03 聚好看科技股份有限公司 一种跨机房数据同步方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202375A (zh) * 2014-08-22 2014-12-10 广州华多网络科技有限公司 同步数据的方法及系统
CN104618219A (zh) * 2014-12-30 2015-05-13 北京奇虎科技有限公司 一种进行跨机房数据同步的方法和装置
CN106341454A (zh) * 2016-08-23 2017-01-18 世纪龙信息网络有限责任公司 跨机房多活分布式数据库管理系统和方法
CN109714392A (zh) * 2018-11-26 2019-05-03 聚好看科技股份有限公司 一种跨机房数据同步方法和装置

Also Published As

Publication number Publication date
CN110309231A (zh) 2019-10-08

Similar Documents

Publication Publication Date Title
CN110309231B (zh) 一种跨机房的数据同步方法及系统
CN111506412A (zh) 基于Airflow的分布式异步任务构建、调度系统及方法
CN105245373B (zh) 一种容器云平台系统的搭建及运行方法
CN102880503B (zh) 数据分析系统及数据分析方法
CN111090699A (zh) 业务数据的同步方法和装置、存储介质、电子装置
CN108769112B (zh) 一种非侵入式rpc接口监控方法及系统
CN107766509B (zh) 一种网页静态备份的方法和装置
CN111752799A (zh) 一种业务链路跟踪方法、装置、设备及储存介质
CN108076098A (zh) 一种业务处理方法及系统
CN110138876B (zh) 任务部署方法、装置、设备及平台
CN102467411A (zh) 一种工作流处理及工作流代理方法、装置和系统
CN103067230A (zh) 一种通过植入监控代码实现对http服务监控的方法
CN105760240A (zh) 分布式任务处理方法及装置
CN111796983A (zh) 一种体彩异常交易请求的监控系统及方法
CN103297485B (zh) 分布式缓存自动管理系统和分布式缓存自动管理方法
CN103107921A (zh) 监控方法和系统
CN105516266A (zh) 一种业务监控方法、系统及相关设备
CN111831748A (zh) 数据同步方法、装置及存储介质
CN113703997A (zh) 集成多种消息代理的双向异步通信中间件系统及实现方法
CN105069029A (zh) 一种实时etl系统及方法
CN113259408B (zh) 数据传输方法和系统
CN111210340A (zh) 一种自动任务处理方法、装置、服务器及存储介质
CN111143304B (zh) 一种基于请求链路的微服务系统异常日志分析方法
CN109683875B (zh) 分布式环境下mvc模式的应用框架系统及其方法
CN113778709B (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