由于互联网行业对数据的绝对一致性(二阶段提交等方式)要求并不是那么高,而是对快速响应要求较高,基于cap理论所以一般采用柔性事务进行解决。
一、最终一致性解决方案(eBay模式)
一般实现方式是消息中间件异步通知:
可靠消息等一般由消息中间件进行保证,至少重复消息发送的情况可以有消息集群进行保证,
但一般由服务端的幂等进行保证,解决方案一般有:
1)、幂等校验 (在数据库中创建一张数据表,消息的id等全局唯一标识进行判断)
2)、通过日志表或状态锁进行判断
二、模式
1)、查询模式
提供一个接口,通过全局唯一标识查询执行的状态(并且该接口为衰弱查询方式)
2)、补偿模式
自动恢复:自动重试机制
通知运营:人工补偿或人工冲正
技术通知:监控、预警(修复数据)
3)tcc (trying confirming canceling)事务模型(业务模型的封装)
trying:事务操作一执行(并提供操作成功提交确认的接口和操作失败回退的接口)
confirming:事务操作二执行
canceling:若发生异常通知回退
一般开源的tcc框架有 rcc-transaction 、bytetcc。
三、最大努力通知型
如支付宝、微信的支付回调接口方式,同步或异步的形式。