总体思路幂等前置幂等表(确定分库分表位)业务幂等表(同库幂等)业务流程幂等但报文摘要不一致并发锁业务锁——基于数据库的业务锁乐观锁——基于版本号的乐观锁一致性守护(异步命令) 总体思路悲观锁 + 短事务 如何实现短事务 业务流程处理中不开事务,将需要完成的DB操作存到一个ThreadLocal中当前节点处理完成时,开启事务把DB操作提交掉 幂等并发支付,支付单落数据库时,唯一键冲突 前置幂等表(确定分库分表位)解决分布式场景下,一笔请求的分库分表位的一致性问题(跨库幂等) 请求落库的分库分表位 依据请求唯一键来决定(外部单号+机构号) 业务分库分表位 业务单的中的唯一键 业务幂等表(同库幂等)关键幂等字段 外部请求号+交易类型 有些机构支付和退款会用同一个请求单号 业务流程数据库唯一键冲突异常捕获流程: 幂等处理流程: 幂等但报文摘要不一致 并发锁 业务锁——基于数据库的业务锁 Save支付操作时上订单锁——操作锁订单 落支付单订单锁操作同时落守护异步命令 支付操作执行完成后释放锁 // 事务 乐观锁——基于版本号的乐观锁 一致性守护(异步命令)