概述
一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。
分布式事务用于在分布式系统中保证不同节点之间的数据一致性。
和本地事务的本质区别:本地同一个事务使用同一个connection,而分布式事务使用多个connection。
解决方案
因为业务场景不同,没有开箱即用的解决方案。
- 基于XA或JTA协议的方式(atomikos)
- 异步校对:对比两个系统中的数据是否一致(根据交易流水号等对比,可以通过定时或主动请求进行数据校对);
- 基于可靠消息(MQ);(通用性强,扩展性高)
- TCC编程式;
无论是哪种解决方案,都要遵守CAP原则
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。但由于在分布式系统中,分区容错性必然存在,所以只能在一致性和可用性妥协。
- 基于MQ的解决方案
- 生产者
- 将要发送到MQ的消息先在数据表内记录一份,状态为“未发送”;
- 接收到MQ回执的消息将状态变更为“已发送”;
- 定时任务处理“未发送”的数据;
- 消费者
- 注意从MQ取到的数据进行去重;
- 消费者消费成功后通知MQ删除数据;
- 生产者