CN114595071A - 一种券商核心交易数据同步系统及方法 - Google Patents
一种券商核心交易数据同步系统及方法 Download PDFInfo
- Publication number
- CN114595071A CN114595071A CN202210223687.XA CN202210223687A CN114595071A CN 114595071 A CN114595071 A CN 114595071A CN 202210223687 A CN202210223687 A CN 202210223687A CN 114595071 A CN114595071 A CN 114595071A
- Authority
- CN
- China
- Prior art keywords
- message
- prepended
- transaction
- service system
- processing request
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本发明公开了分布式系统数据一致性技术领域的一种券商核心交易数据同步系统及方法,包括:接收业务系统发送的prepared消息;对prepared消息进行持久化处理,向业务系统反馈消息发送结果;接收业务系统根据本地事务一完成结果发送的prepared消息处理请求;响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统;响应于prepared消息处理请求为回滚时,删除所述prepared消息;响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。本发明能够串联起柜台系统与业务系统,在分布式环境下实现了二者之间的数据一致性。
Description
技术领域
本发明涉及一种券商核心交易数据同步系统及方法,属于分布式系统数据一致性技术领域。
背景技术
数据库事务(transaction)是一个对数据库的操作序列,这些操作要么全部执行,要么全部失败,是一个不可分割的工作单位。例如甲给乙账户转账,事务保证了当甲账户金额减少时,乙账户必须同时增加相同金额。
券商的核心交易系统,即柜台系统,一个基本的功能是给客户记账,柜台系统与其它业务系统在物理层面相互独立。当其它业务系统发生一笔客户业务时,业务系统完成了自身的处理逻辑,最终需要通过调用柜台系统提供的接口,将业务数据流转到柜台,由后者完成记账流程。在这种分布式环境下,由于不同系统之间使用了不同的数据库,不同数据库的事务相互独立,无法靠单机事务保证一笔业务在不同系统间同时成功或同时失败。此时极易发生有的系统业务处理成功,而个别系统处理失败,从而造成系统间数据不一致的情况。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种券商核心交易数据同步系统及方法,能够串联起境外柜台交易系统与周边业务系统,在分布式环境下实现了基于可靠消息的柜台系统与其它业务系统间的数据一致性方案。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种券商核心交易数据同步方法,包括:
接收业务系统发送的prepared消息;
对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
接收业务系统根据本地事务一完成结果发送的prepared消息处理请求;
响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
响应于prepared消息处理请求为回滚时,删除所述prepared消息;
响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
进一步的,所述业务系统收到prepared消息发送失败时,终止本次业务流程并向发起业务的上游系统返回本次业务失败,由上游系统决定是否重试。
进一步的,所述柜台系统执行本地事务二失败时,所述消息集群将所述prepared消息再次投递到柜台系统,并于投递次数达到一定阈值则记录错误日志并发出告警。
进一步的,每个所述prepared消息包括唯一的流水号作为数据库唯一索引。
进一步的,所述业务系统基于事务结果查询检查本地事务一状态后,根据本地事务状态确定prepared消息处理请求后再次发送至所述消息集群。
进一步的,所述业务系统为券商的银证转账系统。
进一步的,所述消息集群是由多台message broker组成的主从节点,且消息数据在集群时冗余存储。
第二方面,本发明提供了一种券商核心交易数据同步系统,包括:
消息接收模块:用于接收业务系统发送的prepared消息;
处理模块:用于对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
处理请求接收模块:用于接收业务系统根据本地事务一完成结果发送的prepared消息处理请求:
投递模块:用于响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
删除模块:用于响应于prepared消息处理请求为回滚时,删除所述prepared消息;
回查模块:用于响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
第三方面,本发明提供了一种券商核心交易数据同步装置,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据上述任一项所述方法的步骤。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
与现有技术相比,本发明所达到的有益效果:
一、本发明属于分布式系统数据一致性技术领域,能够串联起境外柜台交易系统与周边业务系统(外汇兑换系统、客户出入金系统、交易服务系统、客户券息管理系统等),在分布式环境下实现了基于可靠消息的柜台系统与其它业务系统间的数据一致性方案,提出了一套完整的基于可靠消息的数据一致性实现流程。本发明在工程实践中具有很高的性能,并解决了分布式事务的同步阻塞问题,即使在券商to c业务并发量很高的场景下依然能保持较高吞吐量。
本发明将分布式事务中的各参与者进行了解耦,通过消息集群异步串联起事务参与者,不同系统之间异步处理本地事务,因此不会造成对资源的同步阻塞;且系统吞吐量大,由于没有同步阻塞,且消息集群又能起到对业务流量削峰填谷的作用,因此系统并发度高,即使面对券商新股申购、会员促销等高并发业务场景下,仍能稳定运行,保证数据的一致性。另外,系统稳定性强。消息集群的服务是无状态的,天然具备良好的水平扩展性。当业务量增加,可以通过增加消息集群的服务器解决。
附图说明
图1是本发明实施例一提供的基于可靠消息的数据最终一致性方案流程图;
图2是本发明实施例一提供的券商的银证转账业务处理流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例一:
本实施例提供了一种券商核心交易数据一致性的方法,针对柜台交易系统的特点,结合券商业务的多场景、实时性要求高、数据安全性强等特点,设计出的基于可靠消息的数据最终一致性方案流程如图1所示。
业务系统在执行本地事务一之前,先向消息集群发送prepared类型的消息,此类型的消息不会被消息集群投递到柜台系统,而是持久化在消息集群数据库;
消息集群处理完prepared类型消息后,向业务系统返回响应,包括prepared消息发送成功或prepared消息发送失败;
如果业务系统收到prepared消息发送失败,则本次业务流程终止,并向上游系统返回本次业务失败,由发起业务的上游系统决定是否重试。
如果业务系统收到prepared消息发送成功,则业务系统执行本地事务一,完成本地业务流程及数据持久化工作;
业务系统根据本地事务一成功与否来决定向消息集群发送提交/回滚prepared消息的请求;
如果业务系统提交给消息集群的是提交请求,则消息集群将prepared消息投递到柜台系统,柜台系统收到消息后执行本地事务二,完成柜台的业务流程及数据持久化工作。对于消息集群,只有在成功接收到消息后并持久化成功,才向业务系统返回成功的响应。并且消息集群并非单点,而是由多台message broker组成的主从节点,消息数据在集群时冗余存储的。
如果业务系统提交给消息集群的请求是回滚,则消息集群会删除对应的prepared消息;
柜台系统消费失败的场景有两种,一种是超时了;另一种是业务真的处理失败了。
对于第一种失败场景,消息集群重试即可,柜台系统通过消息的唯一流水号作为数据库唯一索引保证消息不会重复消费,即消息幂等。
对于第二种场景,如果消息反复重试失败,达到一定阈值(如5次)则记录错误日志并发出告警,此时需要人工介入解决该问题。因为如果不是因为程序bug,那么反复重试失败的概率非常小。
若消息集群未收到业务系统本地事务成功/回滚,即图1中第4步失败,消息集群不知道是该提交还是回滚消息。消息集群对于超时后仍为prepared的消息,将主动向业务系统发起事务结果查询,业务系统自身必须实现事务结果查询逻辑,以明确prepared消息应该被投递还是回滚,如流程图第8、9、10步骤。这个过程称为事务回查。
下面以券商的银证转账业务来举例说明本发明实际使用的详细方法和步骤,流程如图2所示:
券商的银证转账业务非常常见。客户在银行端发起了银证转账请求,银行首先将客户个人银行账户的资金划拨到券商的银行账户,然后通知券商的银证转账系统转账成功。收到银行通知后,银证转账系统必须要将转出成功的信息通知到柜台系统,以便柜台给客户的证券账户入账资金,如果通知柜台失败,将造成银行成功转账数据与客户柜台账户资金数据不一致,进而导致客户发现银行的资金被扣了,但是证券账号的资金没有增加。
本发明能很好的解决该转账场景下的数据一致性问题。券商银证转账系统收到银行转账成功通知后首先向消息集群发送prepared消息,然后开启本地事务持久化银证转账入金订单,再向消息集群发送提交prepared消息的通知,由消息集群负责消息的可靠投递到柜台系统,从而给客户入账。
异常场景下,若消息集群无法确定银证转账系统本地事务是否成功,则发起事务回查机制,银证转账系统通过查询对应的入金订单是否成功持久化到数据库中来确定本地事务是否成功,再将结果返回给消息集群。
本技术方案通过可靠消息机制实现券商业务系统与柜台系统的交易数据最终一致性方案。通过消息集群将外围业务系统与核心柜台系统解耦,消除系统间同步阻塞,达到高性能目的;通过业务系统回调接口实现事务回查机制,建立起柜台系统主动查询业务系统本地事务状态的机制;柜台系统通过业务系统的唯一流水号作为数据库唯一索引,保证消费消息的幂等。
实施例二:
一种券商核心交易数据同步系统,可实现实施例一所述的一种券商核心交易数据同步方法,包括:
消息接收模块:用于接收业务系统发送的prepared消息;
处理模块:用于对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
处理请求接收模块:用于接收业务系统根据本地事务一完成结果发送的prepared消息处理请求:
投递模块:用于响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
删除模块:用于响应于prepared消息处理请求为回滚时,删除所述prepared消息;
回查模块:用于响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
实施例三:
本发明实施例还提供了一种券商核心交易数据同步装置,可实现实施例一所述的一种券商核心交易数据同步方法,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行下述方法的步骤:
接收业务系统发送的prepared消息;
对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
接收业务系统根据本地事务一完成结果发送的prepared消息处理请求;
响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
响应于prepared消息处理请求为回滚时,删除所述prepared消息;
响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
实施例四:
本发明实施例还提供了一种计算机可读存储介质,可实现实施例一所述的一种券商核心交易数据同步方法,其上存储有计算机程序,该程序被处理器执行时实现下述方法的步骤:
接收业务系统发送的prepared消息;
对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
接收业务系统根据本地事务一完成结果发送的prepared消息处理请求;
响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
响应于prepared消息处理请求为回滚时,删除所述prepared消息;
响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种券商核心交易数据同步方法,其特征是,由消息集群执行,包括:
接收业务系统发送的prepared消息;
对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
接收业务系统根据本地事务一完成结果发送的prepared消息处理请求;
响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
响应于prepared消息处理请求为回滚时,删除所述prepared消息;
响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
2.根据权利要求1所述的券商核心交易数据同步方法,其特征是,所述业务系统收到prepared消息发送失败时,终止本次业务流程并向发起业务的上游系统返回本次业务失败,由上游系统决定是否重试。
3.根据权利要求1所述的券商核心交易数据同步方法,其特征是,所述柜台系统执行本地事务二失败时,所述消息集群将所述prepared消息再次投递到柜台系统,并于投递次数达到一定阈值则记录错误日志并发出告警。
4.根据权利要求1所述的券商核心交易数据同步方法,其特征是,每个所述prepared消息包括唯一的流水号作为数据库唯一索引。
5.根据权利要求1所述的券商核心交易数据同步方法,其特征是,所述业务系统基于事务结果查询检查本地事务一状态后,根据本地事务状态确定prepared消息处理请求后再次发送至所述消息集群。
6.根据权利要求1所述的券商核心交易数据同步方法,其特征是,所述业务系统为券商的银证转账系统。
7.根据权利要求1所述的券商核心交易数据同步方法,其特征是,所述消息集群是由多台message broker组成的主从节点,且消息数据在集群时冗余存储。
8.一种券商核心交易数据同步系统,其特征是,包括:
消息接收模块:用于接收业务系统发送的prepared消息;
处理模块:用于对prepared消息进行持久化处理,向业务系统反馈消息发送结果,其中,所述业务系统收到prepared消息发送成功后执行本地事务一;
处理请求接收模块:用于接收业务系统根据本地事务一完成结果发送的prepared消息处理请求:
投递模块:用于响应于prepared消息处理请求为提交请求时,将所述prepared消息投递到柜台系统,其中,所述柜台系统收到消息后执行本地事务二;
删除模块:用于响应于prepared消息处理请求为回滚时,删除所述prepared消息;
回查模块:用于响应于一定时间内未收到prepared消息处理请求时,向业务系统发起事务结果查询进行事务回查。
9.一种券商核心交易数据同步装置,其特征是,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据权利要求1~7任一项所述方法的步骤。
10.计算机可读存储介质,其上存储有计算机程序,其特征是,该程序被处理器执行时实现权利要求1~7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210223687.XA CN114595071A (zh) | 2022-03-07 | 2022-03-07 | 一种券商核心交易数据同步系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210223687.XA CN114595071A (zh) | 2022-03-07 | 2022-03-07 | 一种券商核心交易数据同步系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595071A true CN114595071A (zh) | 2022-06-07 |
Family
ID=81815736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210223687.XA Pending CN114595071A (zh) | 2022-03-07 | 2022-03-07 | 一种券商核心交易数据同步系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595071A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150031A (zh) * | 2022-06-20 | 2022-10-04 | 中国工商银行股份有限公司 | 基于分布式消息的分布式系统消息响应方法及装置 |
-
2022
- 2022-03-07 CN CN202210223687.XA patent/CN114595071A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150031A (zh) * | 2022-06-20 | 2022-10-04 | 中国工商银行股份有限公司 | 基于分布式消息的分布式系统消息响应方法及装置 |
CN115150031B (zh) * | 2022-06-20 | 2024-02-27 | 中国工商银行股份有限公司 | 基于分布式消息的分布式系统消息响应方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6434555B1 (en) | Method for transaction recovery in three-tier applications | |
CN111459575B (zh) | 调用请求的处理方法、装置和计算机存储介质 | |
CN111367628A (zh) | 分布式事务的处理方法、装置及消息生产方、消费方系统 | |
CN1996855A (zh) | 一种保持数据一致性的方法及系统 | |
CN110888718A (zh) | 分布式事务的实现方法及装置 | |
US8006248B2 (en) | Method, apparatus and computer program for facilitating communication between a client application and a server application | |
CN114595071A (zh) | 一种券商核心交易数据同步系统及方法 | |
CN109885382A (zh) | 跨系统分布式事务处理方法和分布式事务处理的系统 | |
CN108762895B (zh) | 处理分布式事务的方法及装置 | |
CN112116471B (zh) | 一种证券算法交易过程中的实时算法交易总线系统 | |
CN111177158B (zh) | 一种订单与库存匹配一致的方法 | |
CN106845966B (zh) | 货款信息处理方法及装置 | |
CN113742043A (zh) | 一种服务器后端任务异步拆分方法 | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
CN114066476A (zh) | 一种解决分布式应用交易后发先至的方法、装置及存储介质 | |
CN114612204A (zh) | 对账方法及装置 | |
CN113609229A (zh) | Fabric区块链中的快速日志复制方法及装置 | |
CN113760470B (zh) | 一种基于事务消息及反查实现分布式事务的方法及系统 | |
CN112634049A (zh) | 一种防止代收付交易入账重复的方法和装置 | |
US6539434B1 (en) | UOWE's retry process in shared queues environment | |
CN116051108A (zh) | 支付处理方法、装置、设备及存储介质 | |
CN117675185A (zh) | 基于事务消息的密码协议事务管理方法、介质及装置 | |
CN112199213B (zh) | 一种挂单交互数据的数据交互方法及服务器 | |
CN101488134A (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 |