一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于MQTT协议消息的数据同步方法及系统与流程

2022-03-01 21:28:20 来源:中国专利 TAG:

一种基于mqtt协议消息的数据同步方法及系统
技术领域
1.本发明涉及数据传输处理技术领域,具体涉及一种基于mqtt协议消息的数据同步方法及系统。


背景技术:

2.数据库技术是信息系统领域中一项核心技术。随着科技的不断普及和发展,互联网被应用于经济生活及教育教学等各个领域,数据库技术也成了获取数据信息资源的重要途径和手段。通过传统的数据库存储过程可以实现同一局域网内不同数据库之间数据同步,但是却无法解决不同局域网络下数据同步问题,而通过将原数据库数据配置公网ip环境,可以解决网络问题实现数据同步,但是增加网络安全及数据安全风险,且无法做到实时数据同步。


技术实现要素:

3.鉴于现有技术中存在的技术缺陷和技术弊端,本发明实施例提供克服上述问题或者至少部分地解决上述问题的一种基于mqtt协议消息的数据同步方法及系统,具体方案如下:
4.作为本发明的第一方面,提供一种基于mqtt协议消息的数据同步方法,所述方法包括:
5.步骤1,搭建基于mqtt的activemq消息中间件平台,在activemq消息中间件平台为不同目标数据库配置用于存储消息的指定队列;
6.步骤2,当业务系统有相关业务操作时,将对应的业务操作数据转化成指令数据,往对应指定队列中推送一条包括请求业务数据接口的消息;
7.步骤3,当目标数据库收到消息后,基于所述消息获取请求业务数据接口,基于所述请求业务数据接口获取经过转化后的指令数据,基于所述指令数据进行数据同步。
8.进一步地,步骤2还包括:当业务系统有相关业务操作时,根据不同业务类型将业务操作数据存入mqsql关系型数据库中,对mqsql关系型数据库中的业务操作数据进行指令标识。
9.进一步地,所述指令标识包括指令码字段,所述指令码字段包括新增、修改和删除指令。
10.进一步地,步骤3还包括:当目标数据库收到消息后,新建线程池,指定线程池维护的最大线程个数,将新开启的多线程任务放入线程池里进行统一管理,在获取所述指令数据后,将获取到的指令数据存入目标数据库表target_data_temp中,并在线程任务结束后销毁所述线程池,避免内存耗尽。
11.进一步地,所述方法包括,在目标数据库基于所述指令数据进行数据同步完毕后,调用设备接口将指令数据下发至设备,同时调用对应的业务接口上传本地状态数据至源数据库表进行状态回写。
12.作为本发明的第二方面,提供一种基于mqtt协议消息的数据同步系统,所述系统包括:配置单元、消息发送单元以及消息接收单元;
13.所述配置单元用于搭建基于mqtt的activemq消息中间件平台,在activemq消息中间件平台为不同目标数据库配置用于存储消息的指定队列;
14.所述消息发送单元用于当业务系统有相关业务操作时,将对应的业务操作数据转化成指令数据,往对应指定队列中推送一条包括请求业务数据接口的消息;
15.所述消息接收单元用于当目标数据库收到消息后,基于所述消息获取请求业务数据接口,基于所述请求业务数据接口获取经过转化后的指令数据,,基于所述指令数据进行数据同步。
16.进一步地,所述消息发送单元还用于:当业务系统有相关业务操作时,根据不同业务类型将业务操作数据存入mqsql关系型数据库中,对mqsql关系型数据库中的业务操作数据进行指令标识。
17.进一步地,所述指令标识包括指令码字段,所述指令码字段包括新增、修改和删除指令.
18.进一步地,所述消息接收单元还用于:当目标数据库收到消息后,新建线程池,并指定线程池维护的最大线程个数,将新开启的多线程任务放入线程池里进行统一管理,在获取所述指令数据后,将获取到的指令数据存入目标数据库表target_data_temp中,并在线程任务结束后销毁所述线程池,避免内存耗尽。
19.进一步地,所述系统还包括状态回写单元,所述状态回写单元用于在目标数据库基于所述指令数据进行数据同步完毕后,调用设备接口将指令数据下发至设备,同时调用对应的业务接口上传本地状态数据至源数据库表进行状态回写。
20.本发明具有以下有益效果:
21.本发明通过构建activemq消息中间件服务,并为不同的目标数据库服务配置与之对应的队列,可以实现不同局域网网络环境信息互通,并且能够实时监测数据源变化。通过建设统一的指令数据标准规范,实现不同业务形态数据规范化及统一。通过异步多线程任务分别请求各自的源数据库数据存储至目标数据库,保证源数据库数据能够实时、高效的批量同步至目标主机。通过业务接口将已同步数据状态字段进行回写,实现批量数据同步完毕后源数据库数据状态更新,此方法对源数据库需要同步数据至目标数据库提供了整套的解决方案,可以高效、便捷的实现数据同步与数据下发,具有极高的稳定性和极强的适用性。
附图说明
22.图1为提供的一种基于mqtt协议消息的数据同步方法的流程示意图。
具体实施方式
23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
24.如图1所示,作为本发明的第一实施例,提供一种基于mqtt协议消息的数据同步方法,该方法涉及到的数据接口服务和目标数据库服务均采用用java语言并在idea开发环境中具体实现,所述方法具体包括:
25.在自有云平台上搭建基于mqtt的activemq消息中间件平台,搭建生产者服务,自定义一条消息可以正常推送至activemq消息中间件平台的activemq消息队列,搭建接收者服务,可以收到来自activemq消息中间件平台的activemq队列消息。
26.在业务系统搭建源数据库数据服务,当业务系统有相关业务操作时,将对应的业务操作数据存入mqsql关系型数据库,并根据不同业务类型将存入数据库数据进行指令标识,同时为不同目标数据库配置指定队列,往对应队列中推送一条消息。
27.搭建目标数据库服务,当收到待同步数据消息后新建线程池threadexecutorservice,并指定线程池维护的最大线程个数,例如20个,将新开启的多线程任务放入线程池里进行统一管理exceute(thread),异步多线程任务首先调用synccarauthdatafromremotetolocal()方法分别请求各自的源数据库数据,即所述指令数据,获取到指令数据后存入目标数据库表target_data_temp中,当线程任务结束后进行销毁,避免内存耗尽。
28.数据同步完毕后,调用设备接口downloadlocalcarauthdata()将指令数据下发至设备,同时调用业务接口uploadlocalcardownloadstatustoremote()上传本地状态数据至源数据库表进行状态回写。
29.上述实施例中,通过架设activemq中间件构建消息中间件,源数据库数据一旦发生变化,发送者将消息发送给消息中间件平台,将消息存放在指定的消息队列中,并将消息转发给目标数据库数据服务,实现不同局域网网络环境下信息互通,并且能实时监测到源数据变化;
30.通过建设统一的指令数据标准规范,实现不同业务形态数据规范化统一,对于设备下发数据将业务数据转化成设备数据下发相关的指令数据,除必要的数据体外,统一新增指令码字段,例如:新增-i(insert)、修改-u(update)、删除-d(delete)指令;
31.通过在消息服务器初始化配置与不同目标数据标志对应的队列存储对应的消息,目标数据库服务收到待同步消息后,通过异步多线程任务分别请求各自的源数据存储至目标数据库,线程池对线程的创建和销毁进行统一维护管理,一个线程在完成任务后进行销毁,释放不必要内存消耗,进而保证源数据库数据能够实时、高效的批量同步至目标主机。
32.当异步多线程任务完成必要的数据同步及存储操作后,通过业务接口将已同步数据状态字段进行回写,实现批量数据同步完毕后源数据库数据状态更新。
33.作为本发明的第二方面,还提供一种基于mqtt协议消息的数据同步系统,所述系统包括:配置单元、消息发送单元以及消息接收单元;
34.所述配置单元用于搭建基于mqtt的activemq消息中间件平台,在activemq消息中间件平台为不同目标数据库配置用于存储消息的指定队列;
35.所述消息发送单元用于当业务系统有相关业务操作时,将对应的业务操作数据转化成指令数据,往对应指定队列中推送一条包括请求业务数据接口的消息;
36.所述消息接收单元用于当目标数据库收到消息后,基于所述消息获取请求业务数据接口,基于所述请求业务数据接口获取经过转化后的指令数据,,基于所述指令数据进行
数据同步。
37.以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献