【技术实现步骤摘要】
一种保持数据一致性的方法和装置
本专利技术涉及计算机
,尤其涉及一种保持数据一致性的方法和装置。
技术介绍
对于组合多个系统服务的业务流程,由于整个业务流程中出现了多个服务的相互调用,涉及多个系统的事务处理,必须保证事务的一致性,必须确保全部成功或者全部失败,而不允许出现部分成功部分失败的情况。当组合服务不一致场景发生后,需要第一时间通过系统自动的方法纠正不一致信息,保证组合服务前后一致。可能导致组合服务不一致性的情况包括:网络故障导致后端服务系统超时,前端系统无法收到响应信息;后端系统故障,导致前端系统无法收到响应信息;以及后端系统报错等等。现有的针对分布式组合服务的一致性处理,主要是采用两阶段或三阶段提交等处理方式,但是这些处理方式存在一定局限性,并不适合目前日趋复杂的组合服务的处理,特别是各种微服务架构的分布式处理。
技术实现思路
有鉴于此,本专利技术实施例提供一种保持数据一致性的方法和装置,能够满足日趋复杂的组合服务的一致性处理,使用上不存在现有技术的局限性,以及性能稳定且处 ...
【技术保护点】
1.一种保持数据一致性的方法,其特征在于,包括:/n拦截业务请求,并查询所述业务请求调用的服务组合;其中,所述服务组合包括按调用顺序排列的用于处理所述业务请求的原子服务;/n在调用所述原子服务时,将所述业务请求对应的原子服务按调用顺序记录于服务流水表;/n当任一所述原子服务调用异常或调用失败时,基于所述服务流水表生成并按所述反向调用顺序发送冲正报文,以对所述原子服务进行冲正。/n
【技术特征摘要】
1.一种保持数据一致性的方法,其特征在于,包括:
拦截业务请求,并查询所述业务请求调用的服务组合;其中,所述服务组合包括按调用顺序排列的用于处理所述业务请求的原子服务;
在调用所述原子服务时,将所述业务请求对应的原子服务按调用顺序记录于服务流水表;
当任一所述原子服务调用异常或调用失败时,基于所述服务流水表生成并按所述反向调用顺序发送冲正报文,以对所述原子服务进行冲正。
2.根据权利要求1所述的方法,其特征在于,在调用所述原子服务时,将所述业务请求对应的原子服务和冲正信息按调用顺序记录于服务流水表,包括:
拦截所述原子服务;
对所述原子服务进行服务流水处理,得到所述原子服务的服务请求数据;其中,所述服务请求数据包括所述业务请求及其对应的用户、服务时间、交易金额、业务流水号和服务状态;
若所述原子服务为预设服务,则将所述服务请求数据记录于服务流水表;其中,所述服务流水表记录有所述原子服务及其对应的服务码和所述服务请求数据。
3.根据权利要求2所述的方法,其特征在于,当任一所述原子服务调用异常或调用失败时,基于所述服务流水表生成并按所述反向调用顺序发送冲正报文,以对所述原子服务进行冲正,包括:
在所述服务流水表中查询所述业务请求调用的所有原子服务,以及基于所述服务状态确定各个原子服务的服务状态;
当任一所述原子服务的服务状态为调用异常或调用失败时,判断所述业务请求是否要求业务一致性;
当要求业务一致性时,基于所述服务流水表生成并按反向调用顺序发送冲正报文,以对所述原子服务进行冲正。
4.根据权利要求3所述的方法,其特征在于,基于所述服务流水表生成并按所述反向调用顺序发送冲正报文,以对所述原子服务进行冲正,包括:
从所述组合服务处理内存对象中获取原子服务的业务流水号;
根据所述业务流水号从所述服务流水表获取所述原子服务的服务码和服务请求数据;
根据所述服务码从服务映射配置文件中得到所述原子服务对应的冲正服务;
基于所述原子服务对应的冲正服务和服务请求数据生成所述原子服务的冲正报文;
按反向调用顺序向服务系统发送所述冲正报文,以对所述原子服务进行冲正;
若冲正成功,则在所述服务流水表中记录所述原子服务的冲正状态为冲正成功;
若冲正失败,则在所述服务流水表中记录所述原子服务的冲正状态为冲正失败。
5.根据权利要求4所述的方法,其特征在于,对所述原子服务进行冲正,以及更新所述冲正流水表中的冲正信息,之后还包括:
将冲正失败的原子服务记录于冲正流水表;其中,所述冲正流水表记录有业务流水号、服务请求数据、冲正状态和冲正次数;
定时查询所述冲正流水表,对冲正状态为冲正失败的原子服务发起重复冲正;
在重复冲正成功时将冲正状态修改为冲正成功,或在重复冲正失败时将冲正次数加1;以及
查询所述服务流水表中所有原子服务的冲正状态;
若不存在冲正失败的原子服务,则更新所述服务流水表中业务请求的服务状态为冲正成功;
若存在冲正失败的原子服务,且冲正次数达到预设次数,则停止发起重复冲正,对冲正失败的原子服务执行日终对账处理。
6.一种保持数据一致性的装置,其特征在于,包括:
拦...
【专利技术属性】
技术研发人员:曹经彪,
申请(专利权)人:中国建设银行股份有限公司,建信金融科技有限责任公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。