CN112667418A - 基于消息队列高可用性的数据同步方法 - Google Patents
基于消息队列高可用性的数据同步方法 Download PDFInfo
- Publication number
- CN112667418A CN112667418A CN202011631693.6A CN202011631693A CN112667418A CN 112667418 A CN112667418 A CN 112667418A CN 202011631693 A CN202011631693 A CN 202011631693A CN 112667418 A CN112667418 A CN 112667418A
- Authority
- CN
- China
- Prior art keywords
- message
- message queue
- stage
- data synchronization
- queue server
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及数据同步技术领域,具体为基于消息队列高可用性的数据同步方法,包括以下内容:S100:消息发布端向消息队列服务器发送一阶段准备消息;S200:消息队列服务接收一阶段准备消息;S300:消息发布端执行本地数据事务;S400:消息发布端根据本地数据事务执行结果向消息队列服务器发送二阶段消息;S500:消息队列服务器接收消息发布端发布的二阶段消息,若二阶段消息为二阶段提交消息,则将消息下发给消息消费端;若二阶段消息为二阶段撤回消息,则清除一阶段准备消息。本申请的基于消息队列高可用性的数据同步方法,能够提供高可用性的消息队列服务,确保生产端发送的数据同步到消费端。
Description
技术领域
本发明涉及数据同步技术领域,具体为基于消息队列高可用性的数据同步方法。
背景技术
不同应用***之前的数据同步,一般会使用消息队列,将耦合性降至最低,对消息队列要求必须是高可用、高可靠、高吞吐以及低延时。
在此,当发送消息的客户端或者是消息存储的服务端不可用时,***间的数据同步就会造成影响。如何解决数据在消息队列受到影响的情况下后续依然能正常同步到下游,是消息队列服务的技术难点。
发明内容
本发明意在提供基于消息队列高可用性的数据同步方法,能够提供高可用性的消息队列服务,确保生产端发送的数据同步到消费端。
本申请提供如下技术方案:
基于消息队列高可用性的数据同步方法,包括以下内容:
S100:消息发布端根据本地数据事务生成一阶段准备消息并发送至消息队列服务器;
S200:消息队列服务接收一阶段准备消息并反馈成功信息;
S300:消息发布端接收到消息队列服务器的反馈信息执行本地数据事务;
S400:消息发布端根据本地数据事务执行结果向消息队列服务器发送二阶段消息;若本地数据事务执行成功则向消息队列服务器发送二阶段提交消息;若本地数据事务执行失败则向消息队列服务器发送二阶段撤回消息;
S500:消息队列服务器接收消息发布端发布的二阶段消息,若二阶段消息为二阶段提交消息,则将消息下发给消息消费端;若二阶段消息为二阶段撤回消息,则清除一阶段准备消息。
进一步,S400中,若本地数据事务执行无响应,则启动定时任务定时查询本地数据事务执行结果,根据定时任务的查询结果重复执行S400。
进一步,***存储有数据同步状态表,所述本地数据事务执行时会根据执行结果修改数据同步状态表,所述S400中根据数据同步状态表判断本地数据事务的执行结果。
进一步,S500还包括:
S510:若消息队列服务器超时未收到消息发布端发送的二阶段消息,则向消息发布端发送核查请求;
还包括:
S600:消息发布端接收到核查请求后,执行S400。
进一步,所述S300中,若消息发布端未接收到消息队列服务器的反馈信息则重新向消息队列服务器发送一阶段准备消息。
进一步,还包括:
S700:消息消费端消费消息队列服务器下发的消息,并通过回调反馈消费成功信息;
S800:消息队列服务器接收消费成功信息,确认消息消费成功。
进一步,S800还包括:
S810:消息队列服务器未接收到消费成功信息,延时预设时间后重新进行消息下发。
本发明技术方案的有益效果为:
本发明技术方案中,通过一阶段消息和二阶段消息将本地数据事务执行的消息分段发送,进而可以实现消息的事务性,保证发送消息和本地状态保持一致,确保状态成功时,数据消息一定在服务端;而本地数据执行对应的应用服务如遇到意外发生时,可以通过定时任务轮询状态表,确保服务在正常可用后,及时同步未成功的数据到消费端进行消费应用,进而保证数据可以同步到消息队列服务器,达到***的高可用,数据强一致性的要求。
附图说明
图1为本申请基于消息队列高可用性的数据同步方法实施例中对应的***的逻辑架构图;
图2为本申请基于消息队列高可用性的数据同步方法实施例的流程图。
具体实施方式
下面通过具体实施方式对本申请技术方案进行进一步详细说明:
实施例一
本实施例公开的基于消息队列高可用性的数据同步方法,基于消息队列服务***,如图1所示,该***包括本地数据库应用服务、消息发布端、消息队列服务器、消息消费端、定时任务服务,如图2所示,该方法包括以下内容:
S100:消息发布端根据本地数据事务生成一阶段准备消息并发送至消息队列服务器;
S200:消息队列服务接收一阶段准备消息并反馈成功信息;
S300:消息发布端接收到消息队列服务器的反馈信息执行本地数据事务;
S400:消息发布端根据本地数据事务执行结果向消息队列服务器发送二阶段消息;若本地数据事务执行成功则向消息队列服务器发送二阶段提交消息;若本地数据事务执行失败则向消息队列服务器发送二阶段撤回消息;若本地数据事务执行无响应,则启动定时任务定时查询本地数据事务执行结果,根据定时任务的查询结果重复执行S400,本实施例中,定时任务服务采用基于XXL-JOB的定时任务***,若重复16次后仍然未得到本地数据事务执行结果,则向消息队列服务发送二阶段撤回消息并生成错误记录。
本实施例中,***存储有数据同步状态表,本地数据事务执行时会根据执行结果修改数据同步状态表,S400中根据数据同步状态表判断本地数据事务的执行结果。
S500:消息队列服务器接收消息发布端发布的二阶段消息,若二阶段消息为二阶段提交消息,则将消息下发给消息消费端;若二阶段消息为二阶段撤回消息,则清除一阶段准备消息。若消息队列服务器超时未收到消息发布端发送的二阶段消息,则向消息发布端发送核查请求;
S600:消息发布端接收到核查请求后,执行S400。S300中,若消息发布端未接收到消息队列服务器的反馈信息则重新向消息队列服务器发送一阶段准备消息。
还包括:
S700:消息消费端消费消息队列服务器下发的消息,并通过回调反馈消费成功信息;
S800:消息队列服务器接收消费成功信息,确认消息消费成功。
S810:消息队列服务器未接收到消费成功信息,延时预设时间后重新进行消息下发。重复下发5次后仍未收到消费成功信息,则清除消息,并生成错误记录。
实施例二
本实施例与实施例一的区别在于:本实施例中,还包括:S350:消息发布端对本地数据事务进行分析,预估本地数据事务的执行时间,根据执行时间的预估结果生成重试间隔和重试次数;
S400中根据S350中生成的重试次数进行重试。所述S350包括:预测模型根据本地数据事务涉及的数据表的数量、数据字段的数量、数据量、字段数据长度、数据库类型、数据库物理参数预估本地数据事务的执行时间。预测模型采用基于LSTM神经网络模型,根据历史数据构建训练数据集,并通过训练数据集对神经网络模型进行训练,以实现准确的预测。重试间隔为0.5倍的执行时间,重试次数为本实施例中,通过对本地数据事务的执行时间进行预测,可以准确的判断重试次数和重试间隔,避免需要长时间进行执行的本地数据事务在重试次数用尽后无法及时更新的问题。
以上的仅是本发明的实施例,该发明不限于此实施案例涉及的领域,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
Claims (7)
1.基于消息队列高可用性的数据同步方法,其特征在于:包括以下内容:
S100:消息发布端根据本地数据事务生成一阶段准备消息并发送至消息队列服务器;
S200:消息队列服务接收一阶段准备消息并反馈成功信息;
S300:消息发布端接收到消息队列服务器的反馈信息执行本地数据事务;
S400:消息发布端根据本地数据事务执行结果向消息队列服务器发送二阶段消息;若本地数据事务执行成功则向消息队列服务器发送二阶段提交消息;若本地数据事务执行失败则向消息队列服务器发送二阶段撤回消息;
S500:消息队列服务器接收消息发布端发布的二阶段消息,若二阶段消息为二阶段提交消息,则将消息下发给消息消费端;若二阶段消息为二阶段撤回消息,则清除一阶段准备消息。
2.根据权利要求1所述的基于消息队列高可用性的数据同步方法,其特征在于:S400中,若本地数据事务执行无响应,则启动定时任务定时查询本地数据事务执行结果,根据定时任务的查询结果重复执行S400。
3.根据权利要求2所述的基于消息队列高可用性的数据同步方法,其特征在于:***存储有数据同步状态表,所述本地数据事务执行时会根据执行结果修改数据同步状态表,所述S400中根据数据同步状态表判断本地数据事务的执行结果。
4.根据权利要求3所述的基于消息队列高可用性的数据同步方法,其特征在于:S500还包括:
S510:若消息队列服务器超时未收到消息发布端发送的二阶段消息,则向消息发布端发送核查请求;
还包括:
S600:消息发布端接收到核查请求后,执行S400。
5.根据权利要求4所述的基于消息队列高可用性的数据同步方法,其特征在于:所述S300中,若消息发布端未接收到消息队列服务器的反馈信息则重新向消息队列服务器发送一阶段准备消息。
6.根据权利要求5所述的基于消息队列高可用性的数据同步方法,其特征在于:还包括:
S700:消息消费端消费消息队列服务器下发的消息,并通过回调反馈消费成功信息;
S800:消息队列服务器接收消费成功信息,确认消息消费成功。
7.根据权利要求6所述的基于消息队列高可用性的数据同步方法,其特征在于:S800还包括:
S810:消息队列服务器未接收到消费成功信息,延时预设时间后重新进行消息下发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011631693.6A CN112667418B (zh) | 2020-12-31 | 2020-12-31 | 基于消息队列高可用性的数据同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011631693.6A CN112667418B (zh) | 2020-12-31 | 2020-12-31 | 基于消息队列高可用性的数据同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667418A true CN112667418A (zh) | 2021-04-16 |
CN112667418B CN112667418B (zh) | 2023-07-18 |
Family
ID=75413399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011631693.6A Active CN112667418B (zh) | 2020-12-31 | 2020-12-31 | 基于消息队列高可用性的数据同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667418B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294548A (zh) * | 2013-05-13 | 2013-09-11 | 华中科技大学 | 一种基于分布式文件***的io请求调度方法和*** |
CN103647669A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种保证分布式数据处理一致性的***及方法 |
US20160344834A1 (en) * | 2015-05-20 | 2016-11-24 | SanDisk Technologies, Inc. | Transaction log acceleration |
US20180089312A1 (en) * | 2016-09-26 | 2018-03-29 | Splunk Inc. | Multi-layer partition allocation for query execution |
CN108009027A (zh) * | 2017-11-23 | 2018-05-08 | 北京百度网讯科技有限公司 | 队列消息一致性的实现方法、装置、设备及存储介质 |
CN110377433A (zh) * | 2019-06-04 | 2019-10-25 | 威富通科技有限公司 | 支付结果的异步通知方法、装置及支付网关、存储介质 |
CN110764933A (zh) * | 2019-10-23 | 2020-02-07 | 北京证大向上金融信息服务有限公司 | 一种消息处理方法、装置、***及计算设备 |
CN111026560A (zh) * | 2019-10-17 | 2020-04-17 | 平安科技(深圳)有限公司 | 处理产品数据的方法、装置、计算机设备及存储介质 |
CN111045839A (zh) * | 2019-12-04 | 2020-04-21 | 中国建设银行股份有限公司 | 分布式环境下基于两阶段事务消息的顺序调用方法及装置 |
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
-
2020
- 2020-12-31 CN CN202011631693.6A patent/CN112667418B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294548A (zh) * | 2013-05-13 | 2013-09-11 | 华中科技大学 | 一种基于分布式文件***的io请求调度方法和*** |
CN103647669A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种保证分布式数据处理一致性的***及方法 |
US20160344834A1 (en) * | 2015-05-20 | 2016-11-24 | SanDisk Technologies, Inc. | Transaction log acceleration |
US20180089312A1 (en) * | 2016-09-26 | 2018-03-29 | Splunk Inc. | Multi-layer partition allocation for query execution |
CN108009027A (zh) * | 2017-11-23 | 2018-05-08 | 北京百度网讯科技有限公司 | 队列消息一致性的实现方法、装置、设备及存储介质 |
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
CN110377433A (zh) * | 2019-06-04 | 2019-10-25 | 威富通科技有限公司 | 支付结果的异步通知方法、装置及支付网关、存储介质 |
CN111026560A (zh) * | 2019-10-17 | 2020-04-17 | 平安科技(深圳)有限公司 | 处理产品数据的方法、装置、计算机设备及存储介质 |
CN110764933A (zh) * | 2019-10-23 | 2020-02-07 | 北京证大向上金融信息服务有限公司 | 一种消息处理方法、装置、***及计算设备 |
CN111045839A (zh) * | 2019-12-04 | 2020-04-21 | 中国建设银行股份有限公司 | 分布式环境下基于两阶段事务消息的顺序调用方法及装置 |
Non-Patent Citations (2)
Title |
---|
QI SHEN: ""A general purpose contention manager for software transactions on the GPU"", 《JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING》 * |
陈然: ""云南电力市场大规模用户实时出清***设计与实现"", 《中国电机工程学会电力市场专业委员会2019年学术年会暨全国电力交易机构联盟论坛论文集》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112667418B (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4612715B2 (ja) | 情報処理システム、データ更新方法およびデータ更新プログラム | |
US9304868B2 (en) | Scalable relational database replication | |
US8700760B2 (en) | Method and systems for redundant server automatic failover | |
CN110691133B (zh) | 一种应用于网络通信设备的web服务拟态***及方法 | |
US6314512B1 (en) | Automatic notification of connection or system failure in asynchronous multi-tiered system by monitoring connection status using connection objects | |
CN108874558B (zh) | 分布式事务的消息订阅方法、电子装置及可读存储介质 | |
EP0814590A2 (en) | Preventing conflicts in distributed systems | |
CN107277083B (zh) | 一种数据交互的处理方法、装置及*** | |
US6363401B2 (en) | Enhanced two-phase commit protocol | |
CN101141301B (zh) | 用于事务恢复的方法及装置 | |
US20050268146A1 (en) | Recovery in a distributed stateful publish-subscribe system | |
US7818757B1 (en) | Method for guaranteeing processing of messages in a continuous processing system | |
US7472161B2 (en) | System for ensuring client access to messages from a server | |
CN116016546A (zh) | 一种在cdn中批量预热资源文件的方法及*** | |
CN112667418A (zh) | 基于消息队列高可用性的数据同步方法 | |
US20030131111A1 (en) | Information processing system, information processing apparatus and access distributing method | |
CN112596801A (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN103841193A (zh) | 一种信息推送方法及*** | |
JPWO2008105099A1 (ja) | アプリケーション連携制御プログラム、アプリケーション連携制御方法およびアプリケーション連携制御装置 | |
CN104734886A (zh) | 一种业务服务器的管理方法、装置及*** | |
CN112256454B (zh) | 消息延时处理方法和*** | |
US8214421B2 (en) | Conformance testing without reference implementation of an XML standard | |
CN114398157A (zh) | 分布式事务处理方法、装置、设备、存储介质及程序产品 | |
CN113656200A (zh) | 一种利用延时队列实现发货通知的方法及其*** | |
CN114629900B (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 |