CN115665175B - 一种分布式网关系统及其交易处理方法 - Google Patents
一种分布式网关系统及其交易处理方法 Download PDFInfo
- Publication number
- CN115665175B CN115665175B CN202211672977.9A CN202211672977A CN115665175B CN 115665175 B CN115665175 B CN 115665175B CN 202211672977 A CN202211672977 A CN 202211672977A CN 115665175 B CN115665175 B CN 115665175B
- Authority
- CN
- China
- Prior art keywords
- transaction
- state
- processing module
- request
- message processing
- 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
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提出了一种分布式网关系统及其交易处理方法,该系统包括:消息处理模块,记录每种交易对应的查证交易关联关系,并配置响应信息模板;租约管理模块,负责向消息处理模块提供租约,并对租约的发放数量、等待时间和持有时限进行管理;状态管理模块包括交易状态存储单元和交易报文存储单元,交易状态存储单元在收到交易请求和返回响应之间记录临时交易受理状态,以及在收到查证请求但未找到相关交易数据时记录临时虚拟交易受理状态,交易报文存储单元在网关成功获取租约或等待时间超时后持久化保存交易请求和返回的响应报文内容。本发明能够降低业务服务系统的高峰期响应失败率,及网络抖动导致后发先至数据失步的概率,提升服务的可靠性。
Description
技术领域
本发明涉及计算机信息处理领域,具体而言,涉及一种分布式网关系统及其交易处理方法。
背景技术
目前,计算机系统之间的信息交互基本都是以客户端-服务端模式进行的,其中服务端主要包括网关系统和业务服务系统,由客户端将请求消息通过网络发送至服务端,之后服务端生成响应返回给客户端,完成一次交互过程。
通常的业务场景下,一笔交易首先由交易请求和交易响应构成。部分交易由于需要较长时间处理,因此做成异步模式,即交易响应不直接返回交易的最终结果(系统异常等失败情况除外),需要客户端之后发起交易查证请求,服务端根据对应交易的实际状态返回交易查证响应。
服务端的网关系统通常为分布式部署,即多个节点组成集群,以提升整体稳定性和吞吐量。网关系统作为业务服务系统的前置系统,一般需要负责对客户端发来的请求做通用的安全检查,并根据请求内容分发到正确的业务服务系统。
大多数网关系统还具备了流量控制功能,在请求量过大时将后端业务服务系统无法承受的超额请求拒之门外,这种方式虽然能够确保业务服务系统保持在一个安全的负载范围内,但对于部分客户端来说,请求被拒绝后会造成不良的用户体验,且多数情况下客户端会重试,进一步的加剧拥堵。
另外,受到网络波动的影响,客户端的请求消息传输到服务端的耗时有时会有较大波动,导致后发送的请求反而比先发送的请求更早到达服务端,即所谓的后发先至。在后发先至的请求到达后,且先发的请求未到达前,如果客户端请求服务端查询先发请求的交易状态,服务端就只能回复无交易数据这样的响应,但随后对应的请求到达服务端,服务端依然会正常受理,构建交易。而此时客户端已经将先发的请求判定为交易失败,通信双方的交易状态由此失去同步,在金融等行业还会引起对账不平等后续问题。
发明内容
鉴于上述问题,本发明提供了一种分布式网关系统及其交易处理方法,降低了业务服务系统的高峰期响应失败率,及网络抖动导致后发先至数据失步的概率,提升了服务的可靠性。
为解决上述技术问题,本发明采用的技术方案是:一种分布式网关系统,交互设置于客户端和业务服务系统之间,包括:消息处理模块,记录每种交易对应的查证交易关联关系,并按照业务服务系统的样式配置响应信息模板,所述响应信息模板中包含取值为[处理中]、[处理失败]和[查无交易]的交易状态字段;租约管理模块,负责向所述消息处理模块提供租约,并对所述租约的发放数量、等待时间和持有时限进行管理;状态管理模块,其包括交易状态存储单元和交易报文存储单元,所述交易状态存储单元负责在收到交易请求和返回响应之间的时间段内记录临时交易受理状态,以及在收到查证请求但未找到相关交易数据时记录临时的虚拟交易受理状态,所述交易报文存储单元负责在网关成功获取租约或者等待时间超时后持久化保存交易请求和返回的响应报文内容。
作为优选方案,所述交易状态包括[请求缓冲中]、[已调用业务系统]和[缓冲失败];优先根据交易状态存储单元中的临时交易受理状态判断,如果查到记录,则代表交易目前已被缓冲,正在处理,对客户端展示为[请求缓冲中];如果查无记录,进一步查看交易报文存储单元内是否有记录交易请求,若有,则对客户端展示为[已调用业务系统];若无,则查看交易状态存储单元内是否留存了该交易的虚拟交易受理状态,如果没有虚拟受理状态,则立刻在交易状态存储单元中创建记录,对客户端展示为[请求缓冲中];如果查到虚拟交易受理状态,则检查创建时间是否距离当前时间已超过交易预设的时间限制,超过则对客户端展示[缓冲失败],未超过则展示[请求缓冲中]。
作为优选方案,所述对所述租约的发放数量、等待时间和持有时限进行管理,包括:确保按照先来后到的公平顺序发放租约,且在同一时间发放的租约不超过预设数量,超量的请求会被直接拒绝;控制每种交易租约的等待时间上限,超时后,所述消息处理模块会放弃等待并向客户端返回系统处理超时的响应消息;每种交易类型的租约设置有最大持有时限,若消息处理模块持有租约超时还不归还,租约会在租约管理模块重新生成。
作为优选方案,所述业务服务系统负责处理网关系统转发的交易请求,并按照业务逻辑生成响应消息回传至网关系统。
作为优选方案,当所述租约管理模块不可用时,所有交易请求均立即转发至业务服务系统,队列缓冲功能降级为不做缓冲,但后发先至的防范功能依然可用;当所述状态管理模块不可用时,所有交易请求和响应消息不做状态维护,相关查证请求均直接路由至业务服务系统,出现后发先至情况时,以及对正在队列缓冲的交易请求做查证时,会返回取值为[查无交易]的交易状态字段,系统整体降级为同步的请求应答模式,但缓冲功能依然可用;当所述租约管理模块和状态管理模块均不可用时,系统整体降级为同步转发网关模式,不做缓冲,也不能处理后发先至。
本发明还提供了一种如上任一项所述的分布式网关系统的交易处理方法,包括如下步骤:所述客户端发送交易请求至消息处理模块;所述消息处理模块响应交易请求,向所述状态管理模块查询交易状态;所述状态管理模块返回交易状态为[请求缓冲中];所述消息处理模块向租约管理模块尝试获取租约,此时所有租约全部发放,进行队列缓冲;所述消息处理模块将预设的取值为[处理中]的交易状态字段返回至客户端;所述客户端接收状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;所述消息处理模块响应查证请求,向状态管理模块查询交易状态,所述状态管理模块根据唯一标识查询到交易状态为[请求缓冲中]并返回;所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理中]的交易状态字段;所述消息处理模块在等待超时之前,有租约被释放并分配给了当前交易;所述消息处理模块将交易请求转发至业务服务系统;所述业务服务系统处理交易请求,并向所述消息处理模块返回交易响应消息;所述消息处理模块将交易响应消息发送至客户端。
本发明还提供了一种如上任一项所述的分布式网关系统的交易处理方法,包括如下步骤:所述客户端发送交易请求至消息处理模块;所述消息处理模块响应交易请求,向所述状态管理模块查询交易状态;所述状态管理模块返回交易状态为[请求缓冲中];所述消息处理模块向租约管理模块尝试获取租约,此时缓冲队列的交易数量已经达到上限;所述消息处理模块将预设的取值为[处理失败]的交易状态字段返回至客户端;所述消息处理模块向状态管理模块告知交易请求缓冲失败,所述状态管理模块记录所述交易请求的唯一标识和对应的[缓冲失败]交易状态;所述客户端接收状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;所述消息处理模块响应查证请求,向状态管理模块查询交易状态,所述状态管理模块根据唯一标识查询到交易状态为[缓冲失败]并返回;所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理失败]的交易状态字段。
本发明还提供了一种如上任一项所述的分布式网关系统的交易处理方法,包括如下步骤:所述客户端发送交易请求至消息处理模块,且所述交易请求传输网络延迟;所述客户端在设定时间内未获得响应,则发起交易查证请求;所述消息处理模块在网络恢复正常时接收到交易查证请求,并按照唯一标识向状态管理模块查询对应的充值交易状态;所述状态管理模块未能查询到交易记录和查证记录,则创建与所述唯一标识对应的虚拟交易状态[请求缓冲中],并向消息处理模块返回状态;所述消息处理模块将预设的取值为[处理中]的交易状态字段返回至客户端;所述客户端接收交易状态字段后,在一段时间后再次发起交易查证请求;所述消息处理模块响应查证请求,向状态管理模块查询交易状态;所述状态管理模块根据唯一标识查询到交易状态为[缓冲失败]并返回至消息处理模块;所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理失败]的交易状态字段;所述消息处理模块接收到交易请求,向所述状态管理模块查询交易状态;所述状态管理模块返回交易状态为[缓冲失败];所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理失败]的交易状态字段。
本发明还提供了一种如上任一项所述的分布式网关系统的交易处理方法,包括如下步骤:所述客户端发送交易请求至消息处理模块;所述消息处理模块响应交易请求,向所述状态管理模块查询交易状态;所述状态管理模块返回交易状态为[请求缓冲中];所述消息处理模块向租约管理模块获取到交易对应的租约;所述消息处理模块将交易请求转发至业务服务系统;所述消息处理模块向状态管理模块通知交易唯一标识和业务服务系统的状态,所述状态管理模块对交易唯一标识和业务服务系统的状态进行记录;所述业务服务系统处理交易业务,并向所述消息处理模块返回交易响应消息;所述消息处理模块将交易状态字段发送给客户端;所述客户端接收状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;所述消息处理模块响应查证请求,向状态管理模块查询交易状态,所述状态管理模块根据唯一标识查询到交易状态为[已调用业务系统]并返回;所述消息处理模块向业务服务系统转发客户端的交易查证请求,所述业务服务系统通过唯一标识找到对应的实际交易数据,并向所述消息处理模块返回交易状态字段,所述交易状态字段为[成功]或[失败]状态;所述消息处理模块向客户端返回从业务服务系统收到的查证响应消息。
本发明还提供了一种如上任一项所述的分布式网关系统的交易处理方法,包括如下步骤:所述客户端发送交易请求至消息处理模块;所述租约管理模块故障不可用时,所述消息处理模块直接向状态管理模块通知登记交易请求状态,记录为[已调用业务系统];所述消息处理模块将交易请求转发至业务服务系统;所述业务服务系统向消息处理模块返回交易响应消息,若此时系统过载,则响应中包含系统繁忙信息,若此时系统正常,则响应中包含充值成功或失败状态信息;所述消息处理模块将交易响应消息发送至客户端;新发起一笔交易请求至消息处理模块;所述租约管理模块和状态管理模块均不可用,所述消息处理模块直接将交易请求转发至业务服务系统;所述业务服务系统处理交易业务并返回交易业务响应;所述消息处理模块向客户端转发交易状态字段;所述客户端接收状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;所述消息处理模块将查证请求转发至业务服务系统;所述业务服务系统根据唯一标识查找交易记录并返回交易状态字段;所述消息处理模块向客户端转发交易状态字段;所述客户端新发起一笔交易请求至消息处理模块,因网络故障导致消息传输大幅度延迟;所述客户端判断交易请求超时,随即发起交易查证请求;所述交易状态管理模块不可用,所述消息处理模块直接将查证请求转发至业务服务系统;所述业务服务系统无法查找到流水号对应的交易记录,则返回交易状态字段为[查无交易记录];所述消息处理模块将交易状态字段转发至客户端,所述客户端将该笔交易记录为失败状态;当所述充值请求到达消息处理模块,所述消息处理模块直接将交易请求转发至业务服务系统正常处理;所述业务服务系统成功交易,返回交易状态字段;所述消息处理模块将交易状态字段转发至客户端,由于客户端已超时,所述消息处理模块无法将交易状态字段传输至客户端,此时该笔交易在客户端和业务服务系统的状态不同,报告异常。
与现有技术相比,本发明的有益效果包括:通过将公平的队列逻辑整合到交易请求的处理中,允许在一定的时效和总容量下让过量的请求缓冲,并按照网关后端的业务服务系统最大吞吐量进行平稳传输。同时,为了避免后发先至引起的通信双方数据失步,针对查证类型的交易会创建一段时间的虚拟处理中状态,这确保了在收到后至的交易请求之前不会直接对查证请求返回交易不存在,只要后至的交易请求在时间段内到达服务端,业务就可以正常进行。
本发明利用分布式交易状态存储的一致性和可靠性,按照交易维度读写租约信息和交易状态信息,并指令网关对接收到的交易请求做缓冲/发送至业务服务系统,以及对查证请求返回正确的交易状态。本发明保护了脆弱的业务服务系统,提升了整体的消息吞吐量,降低了脉涌发生时拒绝服务的概率,避免了网络抖动导致交易和查证后发先至而引起通信双方的交易状态失步,而且服务端模块化设计可以在部分模块故障时依然可以让系统保持最小功能,维持核心的网关转发能力。从整体上看,本发明能够降低业务服务系统的高峰期响应失败率,及网络抖动导致后发先至数据失步的概率,提升服务的可靠性。
附图说明
参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:
图1为本发明实施例分布式网关系统的结构示意图;
图2为本发明实施例执行缓冲的交易请求的时序图;
图3为本发明实施例系统满负荷的交易处理的时序图;
图4为本发明实施例查证请求与交易请求后发先至的时序图;
图5为本发明实施例正常进行转发的交易请求的时序图;
图6为本发明实施例模块异常时的交易处理的时序图。
具体实施方式
容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
根据本发明的一实施方式结合图1示出。一种分布式网关系统,交互设置于客户端和业务服务系统之间,网关系统和业务服务系统统称为服务端。业务服务系统负责处理网关系统转发的交易请求,并按照业务逻辑生成响应消息回传至网关系统。
该网关系统包括消息处理模块,租约管理模块和状态管理模块,各模块实现功能如下所示:
(1)消息处理模块,记录每种交易对应的查证交易关联关系,并按照业务服务系统的样式配置响应信息模板,响应信息模板中包含取值为[处理中]、[处理失败]和[查无交易]的交易状态字段。具体的,该响应信息模板包括原始交易失败的响应信息模板和查证交易的响应信息模板。对于处理成功的交易,直接由业务服务系统返回查证结果即可,网关系统无需干预。
在收到交易请求后,该消息处理模块首先去调用状态管理模块,如果查到交易状态为[缓冲失败],说明客户端之前对此交易做过查证,同时超过了虚拟缓冲的最大时限,此交易因网络抖动等原因延迟了太久,客户端可能已判定交易失败,服务端放弃处理此交易,并向客户端返回预设的交易响应消息,交易响应消息包含[处理失败]字段。
如果交易状态为[请求缓冲中],则向租约管理模块尝试获取租约。等待租约发放可能会消耗一定时间,最长不超过对应交易配置的租约获取超时时间,即请求缓冲的时间有限度要求。成功获取租约后,该消息处理模块立即命令状态管理模块将请求信息写入交易报文存储单元(交易状态变为[已调用业务系统]),然后将请求发送给后端的业务服务系统处理,并等待响应。
如果因为租约已全部发放(即交易缓冲队列已达极限),或者等待租约超时,该消息处理模块需要命令状态管理模块,根据响应信息模板向交易报文存储单元写入[处理失败]字段(具备特殊的错误码)。
该消息处理模块收到查证请求时,首先使用交易唯一标识(ID或流水号)检查状态管理模块,得到状态为[请求缓冲中]/[已调用业务系统]/[缓冲失败]。其中[请求缓冲中]状态下会返回预设的带有处理中状态的响应消息;[已调用业务系统]状态下会调用业务服务系统的相关查证接口,并将业务服务系统返回的响应回传给发起查证的客户端;[缓冲失败]状态下会返回预设的带有处理失败状态的响应消息;[查无交易记录]返回预设的带有查无交易响应码的响应消息。
在消息缓冲时,网关系统通过维护模板化的查证响应,可以不依赖于业务服务系统而构建准确的查证结果,直接向客户端返回消息处理中的响应。
(2)租约管理模块,负责向消息处理模块提供租约,并对租约的发放数量、等待时间和持有时限进行管理。
具体的,对租约的发放数量、等待时间和持有时限进行管理,包括:确保按照先来后到的公平顺序发放租约,且在同一时间发放的租约不超过预设数量(即控制网关消息处理的最大并发量),超量的请求会被直接拒绝。控制每种交易租约的等待时间上限,超时后,消息处理模块会放弃等待并向客户端返回系统处理超时的响应消息。租约发放后,消息处理模块需要归还,以便租约管理模块可以将归还的租约发放给其他请求。每种交易类型的租约设置有最大持有时限,若消息处理模块持有租约超时(通常是由于软件或硬件异常导致)还不归还,租约会在租约管理模块重新生成。
本发明将租约管理模块典型的公平可重入分布式锁原理与分布式存储结合使用,实现了精准管理交易的缓冲以及处理状态,并随时可以支持客户端查询交易的当前进度。
(3)状态管理模块,其包括交易状态存储单元和交易报文存储单元,交易状态存储单元负责在收到交易请求和返回响应之间的时间段内记录临时交易受理状态,以及在收到查证请求但未找到相关交易数据时记录临时的虚拟交易受理状态,交易报文存储单元负责在网关成功获取租约或者等待时间超时后持久化保存交易请求和返回的响应报文内容。虚拟交易受理状态,在一定时间内使查证请求不会落空。
交易状态包括[请求缓冲中]、[已调用业务系统]和[缓冲失败]。一个交易的状态需要按照优先根据交易状态存储单元中的临时交易受理状态判断,如果查到记录,则代表交易目前已被缓冲,正在处理,对客户端展示为[请求缓冲中]。如果查无记录,进一步查看交易报文存储单元内是否有记录交易请求,若有,则对客户端展示为[已调用业务系统]。若无,则查看交易状态存储单元内是否留存了该交易的虚拟交易受理状态,如果没有虚拟受理状态,则立刻在交易状态存储单元中创建记录(包含创建时间),对客户端展示为[请求缓冲中]。如果查到虚拟交易受理状态,则检查创建时间是否距离当前时间已超过交易预设的时间限制,超过则对客户端展示[缓冲失败],未超过则展示[请求缓冲中]。
本发明基于服务降级策略,以消息处理模块为核心进行服务端模块化设计,可以在部分模块故障时依然可以让系统保持最小功能,维持核心的网关转发能力。具体如下所示:
当租约管理模块不可用时,所有交易请求均立即转发至业务服务系统,队列缓冲功能降级为不做缓冲,但后发先至的防范功能依然可用。当状态管理模块不可用时,所有交易请求和响应消息不做状态维护,相关查证请求均直接路由至业务服务系统,出现后发先至情况时会返回取值为[查无交易]的交易状态字段,对正在等待租约(队列缓冲)的交易请求做查证也会返回取值为[查无交易]的交易状态字段,系统整体降级为同步的请求应答模式,但缓冲功能依然可用。当租约管理模块和状态管理模块均不可用时,系统整体降级为最简单的同步转发网关模式,不做缓冲,也不能处理后发先至。
本发明通过可部分降级的多模块架构,实现了模块之间低耦合,确保系统最大限度的可用性。
下面以银行账户充值为例,根据主要场景对分布式网关系统的交易处理方法进行说明:
参见图2,为本发明实施例执行缓冲的交易请求的时序图。其包括如下步骤:
1.1,客户端发送交易请求至消息处理模块。该交易请求为充值请求。
1.2,消息处理模块响应交易请求,向状态管理模块查询交易状态。
1.3,状态管理模块返回交易状态为[请求缓冲中]。
1.4,消息处理模块向租约管理模块尝试获取租约,此时所有租约全部发放,进行队列缓冲。
1.5,消息处理模块将预设的取值为[处理中]的交易状态字段返回至客户端。
1.6,客户端接收状态字段后,向消息处理模块发起查证请求,查证请求包括对应交易的唯一标识。
1.7,消息处理模块响应查证请求,向状态管理模块查询交易状态,状态管理模块根据唯一标识查询到交易状态为[请求缓冲中]并返回。
1.8,消息处理模块根据响应信息模板向客户端返回预设的交易状态字段,此时,交易状态字段的取值为[处理中]。
1.9,消息处理模块在等待超时之前,有租约被释放并分配给了当前交易。
1.10,消息处理模块将交易请求转发至业务服务系统。
1.11,业务服务系统处理交易请求,并向消息处理模块返回交易响应消息。
1.12,消息处理模块将交易响应消息发送至客户端。
参见图3,为本发明实施例满负荷的交易处理的时序图。其包括如下步骤:
2.1,客户端发送交易请求至消息处理模块。
2.2,消息处理模块响应交易请求,向状态管理模块查询交易状态。
2.3,状态管理模块返回交易状态为[请求缓冲中]。
2.4,消息处理模块向租约管理模块尝试获取租约,此时缓冲队列的交易数量已经达到上限。
2.5,消息处理模块将预设的交易状态字段返回至客户端,该交易状态字段的取值为[处理失败]。
2.6,消息处理模块向状态管理模块告知交易请求缓冲失败,状态管理模块记录交易请求的唯一标识和对应的[缓冲失败]交易状态。
2.7,客户端接收状态字段后,向消息处理模块发起查证请求,查证请求包括对应交易的唯一标识。
2.8,消息处理模块响应查证请求,向状态管理模块查询交易状态,状态管理模块根据唯一标识查询到交易状态为[缓冲失败]并返回。
2.9,消息处理模块根据响应信息模板向客户端返回预设的交易状态字段,此时,该交易状态字段的取值为[处理失败]。
参见图4,为本发明实施例查证请求与交易请求后发先至的时序图。其包括如下步骤:
3.1,客户端发送交易请求至消息处理模块,且交易请求传输网络延迟。该交易请求为充值请求。
3.2,客户端在设定时间内未获得响应,则发起交易查证请求。
3.3,消息处理模块在网络恢复正常时接收到交易查证请求,并按照唯一标识向状态管理模块查询对应的充值交易状态。
3.4,状态管理模块未能查询到交易记录和查证记录,则创建与唯一标识对应的虚拟交易状态[请求缓冲中],并向消息处理模块返回状态。
3.5,消息处理模块将预设的取值为[处理中]的交易状态字段返回至客户端。
3.6,客户端接收交易状态字段后,在一段时间后再次发起交易查证请求。
3.7,消息处理模块响应查证请求,向状态管理模块查询交易状态。
3.8,状态管理模块根据唯一标识查询到交易状态为[缓冲失败]并返回至消息处理模块。
3.9,消息处理模块根据响应信息模板向客户端返回预设的交易状态字段,此时,交易状态字段取值为[处理失败]。
3.10,消息处理模块接收到交易请求,向状态管理模块查询交易状态。
3.11,状态管理模块返回交易状态为[缓冲失败]。
3.12,消息处理模块根据响应信息模板向客户端返回预设的交易状态字段,此时,交易状态字段取值为[处理失败]。
注:如果在上述步骤3.6时,最初的充值请求及时到达消息处理模块,充值请求的交易状态为[请求缓冲中],消息处理模块可以正常去获取租约并转发请求给业务服务系统,该充值交易正常被受理,状态顺利转为[已调用业务系统]。随后客户端发起的充值查证请求,均会路由给业务服务系统处理,并返回成功或者失败的响应。
参见图5,为本发明实施例正常进行转发的交易请求的时序图。其包括如下步骤:
4.1,客户端发送交易请求至消息处理模块。该交易请求为充值请求。
4.2,消息处理模块响应交易请求,向状态管理模块查询交易状态。
4.3,状态管理模块返回交易状态为[请求缓冲中]。
4.4,消息处理模块向租约管理模块获取到交易对应的租约。
4.5,消息处理模块将交易请求转发至业务服务系统。
4.6,消息处理模块向状态管理模块通知交易唯一标识和业务服务系统的状态,状态管理模块对交易唯一标识和业务服务系统的状态进行记录。
4.7,业务服务系统处理交易业务,并向消息处理模块返回交易响应消息。
4.8,消息处理模块将交易状态字段发送给客户端。
4.9,客户端接收状态字段后,向消息处理模块发起查证请求,查证请求包括对应交易的唯一标识。
4.10,消息处理模块响应查证请求,向状态管理模块查询交易状态,状态管理模块根据唯一标识查询到交易状态为[已调用业务系统]并返回。
4.11,消息处理模块向业务服务系统转发客户端的交易查证请求,业务服务系统通过唯一标识找到对应的实际交易数据,并向消息处理模块返回交易状态字段,交易状态字段为[成功]或[失败]状态。
4.12,消息处理模块向客户端返回从业务服务系统收到的查证响应消息。
注意:步骤4.8-4.12发生在步骤4.4和4.5之间也会是同样的响应。
参见图6,为本发明实施例模块异常时的交易处理的时序图。其包括如下步骤:
5.1,客户端发送交易请求至消息处理模块。该交易请求为充值请求。
5.2,租约管理模块故障不可用时,消息处理模块直接向状态管理模块通知登记交易请求状态,记录为[已调用业务系统]。
5.3,消息处理模块将交易请求转发至业务服务系统。
5.4,业务服务系统向消息处理模块返回交易响应消息,若此时系统过载,则响应中包含系统繁忙信息,若此时系统正常,则响应中包含充值成功或失败状态信息。
5.5,消息处理模块将交易响应消息发送至客户端。
5.6,新发起一笔交易请求至消息处理模块。
5.7,租约管理模块和状态管理模块均不可用,消息处理模块直接将交易请求转发至业务服务系统。
5.8,业务服务系统处理交易业务并返回交易业务响应。
5.9,消息处理模块向客户端转发交易状态字段。
5.10,客户端接收状态字段后,向消息处理模块发起查证请求,查证请求包括对应交易的唯一标识。
5.11,消息处理模块将查证请求转发至业务服务系统。
5.12,业务服务系统根据唯一标识查找交易记录并返回交易状态字段。
5.13,消息处理模块向客户端转发交易状态字段。
5.14,客户端新发起一笔交易请求至消息处理模块,因网络故障导致消息传输大幅度延迟。
5.15,客户端判断交易请求超时,随即发起交易查证请求。
5.16,交易状态管理模块不可用,消息处理模块直接将查证请求转发至业务服务系统。
5.17,业务服务系统无法查找到流水号对应的交易记录,则返回交易状态字段,该交易状态字段取值为[查无交易记录]。
5.18,消息处理模块将交易状态字段转发至客户端,客户端将该笔交易记录为失败状态。
5.19,当步骤5.13的充值请求到达消息处理模块,消息处理模块直接将交易请求转发至业务服务系统正常处理。
5.20,业务服务系统成功交易,返回交易状态字段。
5.21,消息处理模块将交易状态字段转发至客户端,由于客户端已超时,消息处理模块无法将交易状态字段传输至客户端,此时该笔交易在客户端和业务服务系统的状态不同,造成差错账,报告异常。
综上所述,本发明的有益效果包括:通过将公平的队列逻辑整合到交易请求的处理中,允许在一定的时效和总容量下让过量的请求缓冲,并按照网关后端的业务服务系统最大吞吐量进行平稳传输。同时,为了避免后发先至引起的通信双方数据失步,针对查证类型的交易会创建一段时间的虚拟处理中状态,这确保了在收到后至的交易请求之前不会直接对查证请求返回交易不存在,只要后至的交易请求在时间段内到达服务端,业务就可以正常进行。
本发明利用分布式存储的一致性和可靠性,按照交易维度读写租约信息和交易状态信息,并指令网关对接收到的交易请求做缓冲/发送至业务服务系统,以及对查证请求返回正确的交易状态。本发明保护了脆弱的业务服务系统,提升了整体的消息吞吐量,降低了脉涌发生时拒绝服务的概率,避免了网络抖动导致交易和查证后发先至而引起通信双方的交易状态失步,而且服务端模块化设计可以在部分模块故障时依然可以让系统保持最小功能,维持核心的网关转发能力。从整体上看,本发明能够降低业务服务系统的高峰期响应失败率,及网络抖动导致后发先至数据失步的概率,提升服务的可靠性。
应理解,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括 :U 盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明的技术范围不仅仅局限于上述说明中的内容,本领域技术人员可以在不脱离本发明技术思想的前提下,对上述实施例进行多种变形和修改,而这些变形和修改均应当属于本发明的保护范围内。
Claims (9)
1.一种分布式网关系统,交互设置于客户端和业务服务系统之间,其特征在于,包括:
消息处理模块,记录每种交易对应的查证交易关联关系,并按照业务服务系统的样式配置响应信息模板,所述响应信息模板中包含取值为[处理中]、[处理失败]和[查无交易]的交易状态字段;
租约管理模块,负责向所述消息处理模块提供租约,并对所述租约的发放数量、等待时间和持有时限进行管理;
状态管理模块,其包括交易状态存储单元和交易报文存储单元,所述交易状态存储单元负责在收到交易请求和返回响应之间的时间段内记录临时交易受理状态,以及在收到查证请求但未找到相关交易数据时记录临时的虚拟交易受理状态,所述交易报文存储单元负责在网关成功获取租约或者等待时间超时后持久化保存交易请求和返回的响应报文内容;
其中,所述交易状态包括[请求缓冲中]、[已调用业务系统]和[缓冲失败];优先根据所述交易状态存储单元中的临时交易受理状态判断,如果查到记录,则代表交易目前已被缓冲,正在处理,对所述客户端展示为[请求缓冲中];如果查无记录,进一步查看所述交易报文存储单元内是否有记录交易请求,若有,则对所述客户端展示为[已调用业务系统];若无,则查看所述交易状态存储单元内是否留存了该交易的虚拟交易受理状态,如果没有虚拟受理状态,则立刻在所述交易状态存储单元中创建记录,对所述客户端展示为[请求缓冲中];如果查到虚拟交易受理状态,则检查创建时间是否距离当前时间已超过交易预设的时间限制,超过则对所述客户端展示[缓冲失败],未超过则展示[请求缓冲中]。
2.根据权利要求1所述的分布式网关系统,其特征在于,所述对所述租约的发放数量、等待时间和持有时限进行管理,包括:
确保按照先来后到的公平顺序发放租约,且在同一时间发放的租约不超过预设数量,超量的请求会被直接拒绝;
控制每种交易租约的等待时间上限,超时后,所述消息处理模块会放弃等待并向客户端返回系统处理超时的响应消息;
每种交易类型的租约设置有最大持有时限,若所述消息处理模块持有租约超时还不归还,租约会在租约管理模块重新生成。
3.根据权利要求1所述的分布式网关系统,其特征在于,所述业务服务系统负责处理网关系统转发的交易请求,并按照业务逻辑生成响应消息回传至网关系统。
4.根据权利要求1所述的分布式网关系统,其特征在于,当所述租约管理模块不可用时,所有交易请求均立即转发至业务服务系统,队列缓冲功能降级为不做缓冲,但后发先至的防范功能依然可用;
当所述状态管理模块不可用时,所有交易请求和响应消息不做状态维护,相关查证请求均直接路由至业务服务系统,出现后发先至情况时,以及对正在队列缓冲的交易请求做查证时,会返回取值为[查无交易]的交易状态字段,系统整体降级为同步的请求应答模式,但缓冲功能依然可用;
当所述租约管理模块和状态管理模块均不可用时,系统整体降级为同步转发网关模式,不做缓冲,也不能处理后发先至。
5.一种如权利要求1至4任一项所述的分布式网关系统的交易处理方法,其特征在于,包括如下步骤:
所述客户端发送交易请求至消息处理模块;
所述消息处理模块响应交易请求,向所述状态管理模块查询交易状态;
所述状态管理模块返回交易状态为[请求缓冲中];
所述消息处理模块向租约管理模块尝试获取租约,此时所有租约全部发放,进行队列缓冲;
所述消息处理模块将预设的取值为[处理中]的交易状态字段返回至客户端;
所述客户端接收交易状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;
所述消息处理模块响应查证请求,向状态管理模块查询交易状态,所述状态管理模块根据唯一标识查询到交易状态为[请求缓冲中]并返回;
所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理中]的交易状态字段;
所述消息处理模块在等待超时之前,有租约被释放并分配给了当前交易;
所述消息处理模块将交易请求转发至业务服务系统;
所述业务服务系统处理交易请求,并向所述消息处理模块返回交易响应消息;
所述消息处理模块将交易响应消息发送至客户端。
6.一种如权利要求1至4任一项所述的分布式网关系统的交易处理方法,其特征在于,包括如下步骤:
所述客户端发送交易请求至消息处理模块;
所述消息处理模块响应交易请求,向所述状态管理模块查询交易状态;
所述状态管理模块返回交易状态为[请求缓冲中];
所述消息处理模块向租约管理模块尝试获取租约,此时缓冲队列的交易数量已经达到上限;
所述消息处理模块将预设的取值为[处理失败]的交易状态字段返回至客户端;
所述消息处理模块向状态管理模块告知交易请求缓冲失败,所述状态管理模块记录交易请求的唯一标识和对应的[缓冲失败]交易状态;
所述客户端接收交易状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;
所述消息处理模块响应查证请求,向状态管理模块查询交易状态,所述状态管理模块根据唯一标识查询到交易状态为[缓冲失败]并返回;
所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理失败]的交易状态字段。
7.一种如权利要求1至4任一项所述的分布式网关系统的交易处理方法,其特征在于,包括如下步骤:
所述客户端发送交易请求至消息处理模块,且所述交易请求传输网络延迟;
所述客户端在设定时间内未获得响应,则发起交易查证请求;
所述消息处理模块在网络恢复正常时接收到交易查证请求,并按照唯一标识向状态管理模块查询对应的交易状态;
所述状态管理模块未能查询到交易记录和查证记录,则创建与所述唯一标识对应的虚拟交易状态[请求缓冲中],并向消息处理模块返回状态;
所述消息处理模块将预设的取值为[处理中]的交易状态字段返回至客户端;
所述客户端接收交易状态字段后,在一段时间后再次发起交易查证请求;
所述消息处理模块响应查证请求,向状态管理模块查询交易状态;
所述状态管理模块根据唯一标识查询到交易状态为[缓冲失败]并返回至消息处理模块;
所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理失败]的交易状态字段;
所述消息处理模块接收到延迟的交易请求,向所述状态管理模块查询交易状态;
所述状态管理模块返回交易状态为[缓冲失败];
所述消息处理模块根据响应信息模板向客户端返回预设的取值为[处理失败]的交易状态字段。
8.一种如权利要求1至4任一项所述的分布式网关系统的交易处理方法,其特征在于,包括如下步骤:
所述客户端发送交易请求至消息处理模块;
所述消息处理模块响应交易请求,向所述状态管理模块查询交易状态;
所述状态管理模块返回交易状态为[请求缓冲中];
所述消息处理模块向租约管理模块获取到交易对应的租约;
所述消息处理模块将交易请求转发至业务服务系统;
所述消息处理模块向状态管理模块通知交易唯一标识和业务服务系统的状态,所述状态管理模块对交易唯一标识和业务服务系统的状态进行记录;
所述业务服务系统处理交易业务,并向所述消息处理模块返回交易响应消息;
所述消息处理模块将交易响应消息发送给客户端;
所述客户端接收交易响应消息后,向所述消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;
所述消息处理模块响应查证请求,向所述状态管理模块查询交易状态,所述状态管理模块根据唯一标识查询到交易状态为[已调用业务系统]并返回;
所述消息处理模块向业务服务系统转发客户端的查证请求,所述业务服务系统通过唯一标识找到对应的实际交易数据,并向所述消息处理模块返回交易查证响应消息,所述交易查证响应消息包括取值为成功或失败的交易状态字段;
所述消息处理模块向客户端返回从业务服务系统收到的交易查证响应消息。
9.一种如权利要求1至4任一项所述的分布式网关系统的交易处理方法,其特征在于,包括如下步骤:
所述客户端发送交易请求至消息处理模块;
所述租约管理模块故障不可用时,所述消息处理模块直接向状态管理模块通知登记交易请求状态,记录为[已调用业务系统];
所述消息处理模块将交易请求转发至业务服务系统;
所述业务服务系统向消息处理模块返回交易响应消息,若此时系统过载,则响应中包含系统繁忙信息,若此时系统正常,则响应中包含充值成功或失败状态信息;
所述消息处理模块将交易响应消息发送至客户端;
新发起一笔交易请求至消息处理模块;
所述租约管理模块和状态管理模块均不可用,所述消息处理模块直接将交易请求转发至业务服务系统;
所述业务服务系统处理交易业务并返回交易业务响应;
所述消息处理模块向客户端转发交易状态字段;
所述客户端接收状态字段后,向消息处理模块发起查证请求,所述查证请求包括对应交易的唯一标识;
所述消息处理模块将查证请求转发至业务服务系统;
所述业务服务系统根据唯一标识查找交易记录并返回交易状态字段;
所述消息处理模块向客户端转发交易状态字段;
所述客户端新发起一笔交易请求至消息处理模块,因网络故障导致消息传输大幅度延迟;
所述客户端判断交易请求超时,随即发起交易查证请求;
所述交易状态管理模块不可用,所述消息处理模块直接将查证请求转发至业务服务系统;
所述业务服务系统无法查找到流水号对应的交易记录,则返回交易状态字段为[查无交易记录];
所述消息处理模块将交易状态字段转发至客户端,所述客户端将该笔交易记录为失败状态;
当所述交易请求到达消息处理模块,所述消息处理模块直接将交易请求转发至业务服务系统正常处理;
所述业务服务系统成功交易,返回交易状态字段;
所述消息处理模块将交易状态字段转发至客户端,由于客户端已超时,所述消息处理模块无法将交易状态字段传输至客户端,此时该笔交易在客户端和业务服务系统的状态不同,报告异常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211672977.9A CN115665175B (zh) | 2022-12-26 | 2022-12-26 | 一种分布式网关系统及其交易处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211672977.9A CN115665175B (zh) | 2022-12-26 | 2022-12-26 | 一种分布式网关系统及其交易处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115665175A CN115665175A (zh) | 2023-01-31 |
CN115665175B true CN115665175B (zh) | 2023-03-31 |
Family
ID=85022709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211672977.9A Active CN115665175B (zh) | 2022-12-26 | 2022-12-26 | 一种分布式网关系统及其交易处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115665175B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114066476A (zh) * | 2021-11-30 | 2022-02-18 | 武汉众邦银行股份有限公司 | 一种解决分布式应用交易后发先至的方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112383486A (zh) * | 2020-11-05 | 2021-02-19 | 北京同有飞骥科技股份有限公司 | 基于租约的分布式对象存储服务质量保证方法及系统 |
CN114037535A (zh) * | 2021-11-16 | 2022-02-11 | 中国农业银行股份有限公司深圳市分行 | 一种金融交易异常处理的方法、系统及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9635135B1 (en) * | 2008-04-21 | 2017-04-25 | United Services Automobile Association (Usaa) | Systems and methods for handling replies to transaction requests |
CN111752970B (zh) * | 2020-06-26 | 2024-01-30 | 武汉众邦银行股份有限公司 | 一种基于缓存的分布式查询服务响应方法及存储介质 |
CN112905556B (zh) * | 2021-02-09 | 2022-11-15 | 山东英信计算机技术有限公司 | 分布式系统的目录租约管理方法、装置、设备及存储介质 |
CN114066476A (zh) * | 2021-11-30 | 2022-02-18 | 武汉众邦银行股份有限公司 | 一种解决分布式应用交易后发先至的方法、装置及存储介质 |
-
2022
- 2022-12-26 CN CN202211672977.9A patent/CN115665175B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112383486A (zh) * | 2020-11-05 | 2021-02-19 | 北京同有飞骥科技股份有限公司 | 基于租约的分布式对象存储服务质量保证方法及系统 |
CN114037535A (zh) * | 2021-11-16 | 2022-02-11 | 中国农业银行股份有限公司深圳市分行 | 一种金融交易异常处理的方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115665175A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10601754B2 (en) | Message delivery system using message metadata | |
AU2021200535B2 (en) | Exactly-once transaction semantics for fault tolerant FPGA based transaction systems | |
US6889244B1 (en) | Method and apparatus for passing messages using a fault tolerant storage system | |
KR100725066B1 (ko) | 다수의 클라이언트와의 데이터 통신을 위한 시스템 서버 및데이터 처리 방법 | |
RU2363040C2 (ru) | Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками | |
US6760861B2 (en) | System, method and apparatus for data processing and storage to provide continuous operations independent of device failure or disaster | |
US20040205770A1 (en) | Duplicate message elimination system for a message broker | |
US7734782B2 (en) | Method and system for controlling computer in system | |
CN115665175B (zh) | 一种分布式网关系统及其交易处理方法 | |
CN105338086A (zh) | 一种分布式的消息转发方法 | |
EP2335153B1 (en) | Queue manager and method of managing queues in an asynchronous messaging system | |
US7395314B2 (en) | Systems and methods for governing the performance of high volume electronic mail delivery | |
US20080263221A1 (en) | System and method for store-and-forward for highly available message production | |
US6094694A (en) | System for storing new messages in both full-length and abbreviated versions of message expiration data, and eliminating old, expired messages when a message is retrieved | |
EP1177670B1 (en) | File transfer system and method | |
US20060155894A1 (en) | Asynchronous messaging in storage area network | |
CN116633875B (zh) | 一种多业务耦合并发通信的时间保序调度方法 | |
US7924844B1 (en) | System and method for communicating messages among components in a computing environment | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
CN111339059A (zh) | 基于分布式存储系统Ceph的NAS存储系统 | |
CN114301783B (zh) | 用于微服务的优化方法以及装置、存储介质、电子装置 | |
CN113254226B (zh) | 用于非对称业务场景的非对称分布式锁系统及实现方法 | |
CN116402510B (zh) | 一种基于高并发网络服务的无感支付方法、介质以及设备 | |
CN117640557A (zh) | 消息传输方法和装置、存储介质及电子设备 | |
CN116483920A (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 |