基于消息队列的数据迁移增量数据同步方法及系统与流程
未命名
10-18
阅读:143
评论:0
1.本发明涉及计算机领域,尤其涉及基于消息队列的数据迁移增量数据同步方法及系统。
背景技术:
2.随着企业业务架构中台化的推进,各种通用的业务功能被集中到了各种各样的中台,例如额度中心、用户中心等,但业务功能迁移和相关的数据迁移并非一蹴而就的事情,在此过渡期间,我们需要新老逻辑分别在中台和业务后台并行运行,这个时候我们就需要将每一个对于中台的数据修改同步到业务后台,因此亟需要有一个可靠的数据增量同步方案保证双方数据一致。
技术实现要素:
3.本发明的目的是提供一种基于消息队列的数据迁移增量数据同步方法及系统。
4.本发明所提供的基于消息队列的数据迁移增量数据同步方法,包括如下步骤:
5.s1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的步骤;
6.s2用于业务中台将订单消息发送至消息中间件的步骤;
7.s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤。
8.本发明所提供的基于消息队列的数据迁移增量数据同步系统,包括如下模块:
9.s1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的模块;
10.s2用于业务中台将订单消息发送至消息中间件的模块;
11.s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的模块。
12.本发明所提供的基于消息队列的数据迁移增量数据同步方法及系统,经生产验证,数据增量同步准确率能够达到99.9999%的业界标准,平均延时1s左右,最高延时30s,且适用于要求数据最终一致,并且同步动作时序要求不高的场景,此外,本技术对接钉钉告警机器人,能够将消息队列中系统无法处理的消息发送至钉钉,提醒人工介入。
附图说明
13.图1为本发明实施例一所述的基于消息队列的数据迁移增量数据同步方法流程示意图;
14.图2为本发明实施例一所述的s2用于业务中台将订单消息发送至消息中间件的步骤示意图;
15.图3为本发明实施例一所述的s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤示意图;
16.图4为本发明实施例一所述的s4用于业务中台对消息中间件进行自检的步骤示意
图;
17.图5为本发明所提供的基于消息队列的数据迁移增量数据同步方法及系统的原理流程示意图;
18.图6为本发明所提供的基于消息队列的数据迁移增量数据同步方法及系统的部署模型示意图。
具体实施方式
19.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.实施例一
21.如图1-6所示,本实施例所提供的基于消息队列的数据迁移增量数据同步方法,包括如下步骤:
22.s1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的步骤;本领域技术人员可以理解,消息表中订单消息状态置为0代表消息处于发送中。
23.s2用于业务中台将订单消息发送至消息中间件的步骤;
24.s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤。
25.本领域技术人员可以理解,所述消息中间件利用了rabbitmq的消息高可靠支持,确保消息在生产者和消费者之间可靠传递,进而保证数据迁移中数据不丢失。
26.进一步,所述s1用于业务中台将订单数据保存在本地数据库,并将消息表中的消息状态置为0的步骤,包括:用于对配置文件进行配置的步骤。
27.本领域技术人员可以理解,业务中台引入可靠消息生产者jar包生产消息;通过修改配置文件定义可靠消息信息数据库和消息队列;通过修改配置类定义数据库对应的数据源。
28.进一步,所述s2用于业务中台将订单消息发送至消息中间件的步骤,包括:
29.s21用于调用发送接口将消息表中的订单消息发送到消息中间件的步骤;
30.s22用于消息中间件接受订单消息,并确认路由状态,并将路由状态返回业务中台的步骤;
31.s23用于业务中台接收消息中间件回传的业务状态的步骤。
32.本领域技术人员可以理解,所述发送接口为messageservice.send(msgcontent),发送订单变更消息,消息内容不做要求。
33.进一步,所述s23用于业务中台接收消息中间件回传的业务状态的步骤,包括:
34.s231用于判断接收的业务状态,若业务状态为确认消息,则将订单消息状态置为1,若为业务状态为失败消息,则将订单消息状态置为2。本领域技术人员可以理解,状态置为1代表发送成功,状态置为2代表发送失败,比如路由不可达。
35.进一步,所述s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤。包括:
36.s31用于获取消息状态为1的订单消息,并将对应的订单数据同步至业务后台的步
骤;
37.s32用于判断业务后台订单数据是否成功,若成功,则将消息状态置为3,若失败,则将消息状态置为4的步骤;本领域技术人员可以理解,通过比较业务后台与中台的数据是否一致,来判断订单数据是否成功。
38.s33用于删除同步后的订单消息的步骤。本领域技术人员可以理解,无论同步成功与失败,消息队列都删除这条消息,因为重回队列会带来无意义不可控的重试。
39.进一步,本实施例所提供的基于消息队列的数据迁移增量数据同步方法,还包括:
40.s4用于业务中台对消息中间件进行自检的步骤。
41.进一步,所述s4用于业务中台对消息中间件进行自检的步骤,包括:
42.s41用于定时从消息表中拉取消息状态不为3且重试次数未达到5次的消息,执行s21的步骤;
43.s42用于定时从消息表中拉取消息状态不为3且重试次数达到5次的消息,调用钉钉接口,向外发送人工提醒的步骤。
44.本领域技术人员可以理解,可靠消息数据同步工具是根植于rabbitmq的java工具包。中台需要持有生产者jar包,调用jar包中发送方法来进行消息发送,并通过定时任务调用重试方法对消费失败的消息进行重试。而业务后台需要持有消费者jar包,修改消息状态,并通过定时任务拉取重试5次仍然失败的消息,发送通知到钉钉,提醒相关人员人工介入。
45.实施例二
46.本实施例所提供的基于消息队列的数据迁移增量数据同步系统,包括如下模块:
47.s1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的模块;本领域技术人员可以理解,消息表中订单消息状态置为0代表消息处于发送中。
48.s2用于业务中台将订单消息发送至消息中间件的模块;
49.s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的模块。
50.本领域技术人员可以理解,所述消息中间件利用了rabbitmq的消息高可靠支持,确保消息在生产者和消费者之间可靠传递,进而保证数据迁移中数据不丢失。
51.进一步,所述s1用于业务中台将订单数据保存在本地数据库,并将消息表中的消息状态置为0的模块,包括:用于对配置文件进行配置的子模块。
52.本领域技术人员可以理解,业务中台引入可靠消息生产者jar包生产消息;通过修改配置文件定义可靠消息信息数据库和消息队列;通过修改配置类定义数据库对应的数据源。
53.进一步,所述s2用于业务中台将订单消息发送至消息中间件的模块,包括:
54.s21用于调用发送接口将消息表中的订单消息发送到消息中间件的子模块;
55.s22用于消息中间件接受订单消息,并确认路由状态,并将路由状态返回业务中台的子模块;
56.s23用于业务中台接收消息中间件回传的业务状态的子模块。
57.本领域技术人员可以理解,所述发送接口为messageservice.send(msgcontent),发送订单变更消息,消息内容不做要求。
58.进一步,所述s23用于业务中台接收消息中间件回传的业务状态的子模块,包括:
59.s231用于判断接收的业务状态,若业务状态为确认消息,则将订单消息状态置为1,若为业务状态为失败消息,则将订单消息状态置为2的单元。本领域技术人员可以理解,状态置为1代表发送成功,状态置为2代表发送失败,比如路由不可达。
60.进一步,所述s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的模块。包括:
61.s31用于获取消息状态为1的订单消息,并将对应的订单数据同步至业务后台的子模块;
62.s32用于判断业务后台订单数据是否成功,若成功,则将消息状态置为3,若失败,则将消息状态置为4的子模块;本领域技术人员可以理解,通过比较业务后台与中台的数据是否一致,来判断订单数据是否成功。
63.s33用于删除同步后的订单消息的子模块。本领域技术人员可以理解,无论同步成功与失败,消息队列都删除这条消息,因为重回队列会带来无意义不可控的重试。
64.进一步,本实施例所提供的基于消息队列的数据迁移增量数据同步系统,还包括:
65.s4用于业务中台对消息中间件进行自检的模块。
66.进一步,所述s4用于业务中台对消息中间件进行自检的模块,包括:
67.s41用于定时从消息表中拉取消息状态不为3且重试次数未达到5次的消息,执行s21的子模块;
68.s42用于定时从消息表中拉取消息状态不为3且重试次数达到5次的消息,调用钉钉接口,向外发送人工提醒的子模块。
69.本领域技术人员可以理解,可靠消息数据同步工具是根植于rabbitmq的java工具包。中台需要持有生产者jar包,调用jar包中发送系统来进行消息发送,并通过定时任务调用重试系统对消费失败的消息进行重试。而业务后台需要持有消费者jar包,修改消息状态,并通过定时任务拉取重试5次仍然失败的消息,发送通知到钉钉,提醒相关人员人工介入。
70.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种基于消息队列的数据迁移增量数据同步方法,其特征在于,包括如下步骤:s1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的步骤;s2用于业务中台将订单消息发送至消息中间件的步骤;s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤。2.如权利要去1所述的基于消息队列的数据迁移增量数据同步方法,其特征在于,所述s1用于业务中台将订单数据保存在本地数据库,并将消息表中的消息状态置为0的步骤,包括:用于对配置文件进行配置的步骤。3.如权利要去2所述的基于消息队列的数据迁移增量数据同步方法,其特征在于,所述s2用于业务中台将订单消息发送至消息中间件的步骤,包括:s21用于调用发送接口将消息表中的订单消息发送到消息中间件的步骤;s22用于消息中间件接受订单消息,并确认路由状态,并将路由状态返回业务中台的步骤;s23用于业务中台接收消息中间件回传的业务状态的步骤。4.如权利要去3所述的基于消息队列的数据迁移增量数据同步方法,其特征在于,所述s23用于业务中台接收消息中间件回传的业务状态的步骤,包括:s231用于判断接收的业务状态,若业务状态为确认消息,则将订单消息状态置为1,若为业务状态为失败消息,则将订单消息状态置为2。5.如权利要去4所述的基于消息队列的数据迁移增量数据同步方法,其特征在于,所述s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤。包括:s31用于获取消息状态为1的订单消息,并将对应的订单数据同步至业务后台的步骤;s32用于判断业务后台订单数据是否成功,若成功,则将消息状态置为3,若失败,则将消息状态置为4的步骤;s33用于删除同步后的订单消息的步骤。6.如权利要去5所述的基于消息队列的数据迁移增量数据同步方法,其特征在于,还包括:s4用于业务中台对消息中间件进行自检的步骤。7.如权利要去6所述的基于消息队列的数据迁移增量数据同步方法,其特征在于,所述s4用于业务中台对消息中间件进行自检的步骤,包括:s41用于定时从消息表中拉取消息状态不为3且重试次数未达到5次的消息,执行s21的步骤;s42用于定时从消息表中拉取消息状态不为3且重试次数达到5次的消息,调用钉钉接口,向外发送人工提醒的步骤。8.一种基于消息队列的数据迁移增量数据同步系统,其特征在于,包括如下模块:s1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的模块;s2用于业务中台将订单消息发送至消息中间件的模块;s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的模块。9.如权利要求8所述的基于消息队列的数据迁移增量数据同步系统,其特征在于,所述
s1用于业务中台将订单数据保存在本地数据库,并将消息表中的消息状态置为0的模块,包括:用于对配置文件进行配置的子模块。10.如权利要求9所述的基于消息队列的数据迁移增量数据同步系统,其特征在于,所述s2用于业务中台将订单消息发送至消息中间件的模块,包括:s21用于调用发送接口将消息表中的订单消息发送到消息中间件的子模块;s22用于消息中间件接受订单消息,并确认路由状态,并将路由状态返回业务中台的子模块;s23用于业务中台接收消息中间件回传的业务状态的子模块。11.如权利要求10所述的基于消息队列的数据迁移增量数据同步系统,其特征在于,所述s23用于业务中台接收消息中间件回传的业务状态的子模块,包括:s231用于判断接收的业务状态,若业务状态为确认消息,则将订单消息状态置为1,若为业务状态为失败消息,则将订单消息状态置为2的单元。12.如权利要求11所述的基于消息队列的数据迁移增量数据同步系统,其特征在于,所述s3用于业务后台从中消息中间件获取订单消息,并进行数据同步的模块。包括:s31用于获取消息状态为1的订单消息,并将对应的订单数据同步至业务后台的子模块;s32用于判断业务后台订单数据是否成功,若成功,则将消息状态置为3,若失败,则将消息状态置为4的子模块;s33用于删除同步后的订单消息的子模块。13.如权利要求12所述的基于消息队列的数据迁移增量数据同步系统,其特征在于,还包括:s4用于业务中台对消息中间件进行自检的模块。14.如权利要求13所述的基于消息队列的数据迁移增量数据同步系统,其特征在于,所述s4用于业务中台对消息中间件进行自检的模块,包括:s41用于定时从消息表中拉取消息状态不为3且重试次数未达到5次的消息,执行s21的子模块;s42用于定时从消息表中拉取消息状态不为3且重试次数达到5次的消息,调用钉钉接口,向外发送人工提醒的子模块。
技术总结
本发明公开了一种基于消息队列的数据迁移增量数据同步方法,其方法部分包括S1用于业务中台将订单数据保存在本地数据库,并将消息表中的订单消息状态置为0的步骤;S2用于业务中台将订单消息发送至消息中间件的步骤;S3用于业务后台从中消息中间件获取订单消息,并进行数据同步的步骤。本发明所公开的基于消息队列的数据迁移增量数据同步方法及系统,能确保消息在生产者和消费者之间可靠传递,进而保证数据迁移中数据不丢失。数据迁移中数据不丢失。数据迁移中数据不丢失。
技术研发人员:史红哲 吴昊 白星皓
受保护的技术使用者:上海维信荟智金融科技有限公司
技术研发日:2023.07.25
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种磁铁自动填充装置与方法与流程 下一篇:一种用于润滑油分装的清洗装置和方法与流程
