交易结算金额一致性保证

这篇博客探讨了交易结算金额一致性的重要性,包括避免多发起、少发起和误发起结算。介绍了通过UK和状态机、金额校验与告警、实时对账、全量+增量对账以及审计系统来保障结算数据一致性的方法。总结了解决方案的实践经验和实施成果。
摘要由CSDN通过智能技术生成

目录

一、背景

技术和业务的发展是分不开的。业务驱动技术的发展,技术反辅业务的提升。

1.1 结算交易产品介绍

1.2 为什么要做结算金额的保证

1、结算涉及到金钱,一旦金额不一致,则会导致大问题。

2、结算涉及的系统链路较长,涉及系统交互如下:

以下情况均会引起结算出错:

  1. 逻辑错误,如交易在错误的时机发起了结算、结算构造结算信息计算金额错误等

  2. 流程中断,如结算在RPC取得订单信息时超时等

  3. 消息重复,如发送多次消息到结算,但是消息产生了多条。会导致一次订单发起多次结算

  4. 消息丢失,如交易发送MQ到结算,但是消息丢失

  5. 消息乱序,如一个订单发起了一次正向结算,一次逆向结算,但是逆向结算消息先到,正向结算后到。

二、目标

针对以上问题,数据一致性的目标为以下三个:

  • 不多发起结算

  • 不少发起结算

  • 不误发起结算

三、解决方法

对目标和问题进行组合,通过问题找到解决方法,得到目标、问题、方法的关系如下:

目标

遇到的问题

解决方法

不多发起结算

消息重复

UK、状态机、乐观锁

消息乱序

状态机、乐观锁

逻辑错误

对账、补偿

不少发起结算

流程中断

分布式事务、重试、实时对账

逻辑错误

对账、补偿

消息丢失

对账

不误发起结算

逻辑错误

计算逻辑剥离+告警

对账

那如何选择方法来解决实际问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值