公开/公告号CN112612807B
专利类型发明专利
公开/公告日2022-07-05
原文格式PDF
申请/专利权人 浙江融象数科控股有限公司;
申请/专利号CN202011628921.4
申请日2020-12-31
分类号G06F16/23(2019.01);G06F16/27(2019.01);G06Q20/38(2012.01);G06Q30/02(2012.01);G06Q40/04(2012.01);
代理机构杭州天昊专利代理事务所(特殊普通合伙) 33283;
代理人何碧珩
地址 310000 浙江省杭州市西湖区留和路129号1535室
入库时间 2022-08-23 13:58:18
法律状态公告日
法律状态信息
法律状态
2023-02-17
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F16/23 专利号:ZL2020116289214 变更事项:专利权人 变更前:浙江融象数科控股有限公司 变更后:浙江融象数字科技有限公司 变更事项:地址 变更前:310000 浙江省杭州市西湖区留和路129号1535室 变更后:315500 浙江省宁波市奉化区锦屏街道南山路182号玮泽大楼1楼(自主申报)
专利权人的姓名或者名称、地址的变更
2022-07-05
授权
发明专利权授予
技术领域
本发明涉及数据处理技术领域,特别是一种基于分布式事务的支付交易数据一致性系统设计方法。
背景技术
随着支付行业极大地推升了各行各业的效率,在支付过程中往往会使用积分、优惠券和抵扣券,经常出现支付时会出现数据不一致的问题,支付失败了,优惠券、积分使用掉了,业务执行成功或支付成功优惠券或积分服务调用却失败了,解决分布式事务数据一致性是本领域技术人员需要解决的技术问题,按业务功能拆分成多个服务进行分布式协同处理是个不错的选择,即分布式微服务架构成为了趋势,如何保证多服务之间数据的一致性和完整性成为不容忽视的一个问题;中国专利文献CN110955670A公开了一种基于分布式事务的支付交易数据一致性控制方法及系统,通过获取通道同步应答时的退款、出款、快捷等实时应答数据,根据实时获取的通道应答数据更改支付订单信息以及对应的业务逻辑处理,并将支付处理结果返回给客户端,同时生成对应的交易原始凭证信息,发送至会计系统进行会计处理通过实时获取支付交易数据,对获取的实时数据进行同步处理,用自动超时机制和事务补偿算法作为辅助来保证数据处理的及时性和一致性,有效实现数据传输的高并发性、高一致性,同时保证数据的完整性;本发明为了解决上述问题采用独立消息服务和定时器轮询的方法确保支付交易数据一致性。
发明内容
本发明的目的是提供一种分布式事务数据一致性的系统设计方法,通过独立消息服务和定时器轮询待发送的消息实现分布式事务数据一致性。
为了实现上述目的,办发明提供以下技术方案:
本发明提供一种分布式事务数据一致性系统设计,包括支付模块、数据处理模块和定时器轮询模块,支付模块包括支付服务、优惠券服务、卡券服务、积分服务和订单服务,所述数据处理模块包括消息服务和消息中间件,所述定时器轮询模块启动对整个系统的定时轮询,用户点击支付按钮时,所述支付模块中的支付请求触发的消息发送到所述数据处理模块,所述数据处理模块调用所述消息服务将消息状态更改为“待发送”状态,所述支付服务创建订单同时调用第三方支付接口,所述数据处理模块调用所述消息服务将消息状态更改为“已发送”状态,所述数据处理模块投递消息给所述消息中间件,所述消息中间件监听消费消息,所述优惠券服务、卡券服务、积分服务或订单服务对相应的优惠券、卡券或积分进行扣减及更新订单状态,所述优惠券服务、卡券服务、积分服务或订单服务通知所述消息服务,所述消息服务将消息状态更改为“已完成”状态;
当轮询发现所述“待发送”状态的消息已过期,所述消息服务向支付服务发起状态查询,并且所述支付服务返回消息中间件继续执行创建订单和调用第三方支付接口操作,如果执行创建订单和调用第三方支付接口操作成功,消息中间件发送MQ消息给所述消息服务并将消息状态更新为“已发送”状态,否则删除此条消息;
当轮询发现所述“已发送”状态的消息已过期,所述消息服务将过期的“已发送”状态的消息发送到消息中间件MQ中,所述优惠券服务、卡券服务、积分服务监听到消息后,在保证幂等性的情况下返回所述消息中间件继续执行优惠券、卡券或积分扣减操作,同时所述消息中间件监听消费并通知消息服务,所述消息服务将该消息更新为“已完成”状态或直接删除。
进一步地,所述支付请求包括装载订单信息请求、优惠券信息请求、卡券信息请求和积分信息请求中的至少一种。
进一步地,所述消息服务用于更新所述支付模块发送消息的状态和消息保存,所述消息的状态包括“待发送”状态消息,“已发送”状态消息和“已完成”状态消息;所述消息保存将数据订单和消息的状态信息保存到数据库中。
进一步地,所述投递消息时根据所述消息中间件的topic进行发送。
进一步地,所述监听消费消息是用于增加用户积分、扣减用户的优惠券或卡券和增加用户使用优惠券的记录。
进一步地,所述轮询是一种查询补偿。
进一步地,所述轮询是执行定时任务,对比支付请求触发的消息创建的时间在定时任务执行时,是否已过期;如果支付请求触发的消息创建的时间与轮询任务执行时的时间差小于业务执行设定的时间,则进行下个消息的轮询,则判定消息是未过期状态;如果支付请求触发的消息创建的时间与轮询任务执行时间只差大于业务执行设定的时间,则判定消息是过期状态;
在一些优选方案中,业务执行设定的时间可以设置为2min。
进一步的,所述定时器定时的时间根据业务规则自行设置时间的期限,可以设置为30秒,1分钟,2分钟,所述定时器对整个分布式事务数据一致性的系统定时轮询。
进一步地,分布式事务数据一致性设计方法用于设计上述的系统,在定时器轮询正常情况下包括以下步骤:
(1)用户点击支付按钮;
(2)支付请求触发消息;
(3)调用所述消息服务将消息状态更改为“待发送”状态;
(4)创建订单并调用第三方支付接口;
(5)调用所述消息服务将消息状态更改为“已发送”状态;
(6)消息中间件监听消费消息;
(7)优惠券、卡券或积分扣减;
(8)消息服务将消息状态更改为“已发送”状态。
进一步的,所述定时器轮询是对系统中的每条消息进行轮询,在支付过程中步骤(3)和步骤(5)是造成支付数据是否一致性的关键,所以当定时器轮询步骤(3)中“待发送”状态的消息和步骤(5)“已发送”状态的消息发现异常时及时重复操作,保证了支付与优惠券、卡券和积分之间的数据一致性。
本发明有以下有益效果:(1)本发明通过定时器对消息状态的轮询,保证支付与优惠券、卡券和积分之间的数据一致性;(2)本发明基于消息服务的分布式数据一致性保证了数据的一致性。
附图说明
图1是本发明系统模块示意图。
图2是本发明在定时器轮询到“待发送”消息的流程图。
图3是本发明在定时器轮询到“已发送”消息的流程图。
图4是本发明在定时器轮询正常情况的方法流程图。
具体实施方式
以下结合附图对本发明的具体实施方式做详细描述,应当指出的是,实施例只是对本发明的具体阐述,不应视为对本发明的限定,实施例的目的是为了让本领域技术人员更好地理解和再现本发明的技术方案,本发明的保护范围仍应当以权利要求书所限定的范围为准。
下面结合附图与具体实施方式对本发明做进一步的描述:
如图1所示,本发明提供一种分布式事务数据一致性系统设计,包括支付模块1、数据处理模块2和定时器轮询模块3,支付模块1包括支付服务11、优惠券服务12、卡券服务13、积分服务14和订单服务15,所述数据处理模块2包括消息服务21和消息中间件22,所述定时器轮询模块3启动对整个系统的定时轮询,用户点击支付按钮时,所述支付模块1中的支付请求触发的消息发送到所述数据处理模块2,所述数据处理模块2调用所述消息服务将消息状态更改为“待发送”状态,所述支付服务11创建订单同时调用第三方支付接口,所述数据处理模块2调用所述消息服务21将消息状态更改为“已发送”状态,所述数据处理模块2投递消息给所述消息中间件22,所述消息中间件22监听消费消息,所述优惠券服务12、卡券服务13、积分服务14或订单服务15对相应的优惠券、卡券或积分进行扣减及更新订单状态,所述优惠券服务12、卡券服务13、积分服务14或订单服务15通知所述消息服务21,所述消息服务21将消息状态更改为“已完成”状态;
如图2所示,当轮询所述“待发送”状态的消息,所述消息服务21向支付服务发起状态查询,并且所述支付服务11返回消息中间件22继续执行创建订单和调用第三方支付接口操作,如果执行创建订单和调用第三方支付接口操作成功,消息中间件22发送MQ消息给所述消息服务21并将消息状态更新为“已发送”状态,否则删除此条消息;
如图3所示,当轮询发现所述“已发送”状态的消息,所述消息服务21将过期的“已发送”状态的消息发送到消息中间件MQ中,所述优惠券服务12、卡券服务13、积分服务14监听到消息后,在保证幂等性的情况下返回所述消息中间件22继续执行优惠券、卡券或积分扣减操作,同时所述消息中间件监听消费并通知消息服务21,所述消息服务21将该消息更新为“已完成”状态或直接删除。
进一步地,所述支付请求包括装载订单信息请求、优惠券信息请求、卡券信息请求和积分信息请求中的至少一种。
进一步地,所述消息服务21用于更新所述支付模块1发送消息的状态和消息保存,所述消息的状态包括“待发送”状态消息,“已发送”状态消息和“已完成”状态消息;所述消息保存将数据订单和消息的状态信息保存到数据库中。
进一步地,所述投递消息时根据所述消息中间件的topic进行发送。
进一步地,所述监听消费消息是用于增加用户积分、扣减用户的优惠券或卡券和增加用户使用优惠券的记录。
进一步地,所述轮询是一种查询补偿。
进一步地,所述轮询是执行定时任务,对比支付请求触发的消息创建的时间在定时任务执行时,是否已过期;如果支付请求触发的消息创建的时间与轮询任务执行时的时间差小于业务执行设定的时间,则进行下个消息的轮询,则判定消息是未过期状态;如果支付请求触发的消息创建的时间与轮询任务执行时间只差大于业务执行设定的时间,则判定消息是过期状态;
在一些优选方案中,业务执行设定的时间可以设置为2min。
进一步的,所述定时器定时的时间根据业务规则自行设置时间的期限,可以设置为30秒,1分钟,2分钟。
如图4所示,分布式事务数据一致性设计方法用于设计上述的系统,在定时器轮询正常情况下包括以下步骤:
S1,用户点击支付按钮;
S2,支付请求触发消息;
S3,调用所述消息服务将消息状态更改为“待发送”状态;
S4,创建订单并调用第三方支付接口;
S5,调用所述消息服务将消息状态更改为“已发送”状态;
S6,消息中间件监听消费消息;
S7,优惠券、卡券或积分扣减;
S8,消息服务将消息状态更改为“已发送”状态。
进一步的,所述定时器轮询是对系统中的每条消息进行轮询,在支付过程中步骤(3)和步骤(5)是造成支付数据是否一致性的关键,所以当定时器轮询步骤(3)中“待发送”状态的消息和步骤(5)“已发送”状态的消息及时发现异常时及时重复操作,保证了支付与优惠券、卡券和积分之间的数据一致性。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
机译: 热电转换材料的制造方法,热电转换元件的制造方法以及热电转换材料的改性方法
机译: 热塑性弹性体组合物的制造方法,轮胎用透气膜的制造方法以及充气轮胎的制造方法。