分布式系统开发实战:消息篇( 二 )


更多的时候 , 分布式事务只需要保证原子性 , 这个原子性也保证了应用层面上的一致性 , 而由本地事务来保证隔离性、持久性 。 原子性这个东西 , 即使不是分布式 , 仅仅是单进程单线程也是需要考虑的 , 比如Java中的try…finally语句的用法 。 当涉及跨进程、异步通信的时候 , 就很难通过语言层面的机制保证原子性了 。
分布式系统开发实战:消息篇】在分布式领域 , 由于网络或者机器故障 , 经常需要重试 , 因此幂等性非常重要 。
很多场景 , 比如电商、网络购票 , 首先要保证的是高可用 , 不大可能采用强一致性 。 当我们下单后经常会看到“订单正在处理中……”这种中间状态 , 后台很可能是在异步处理 , 这也是从下单成功到最后出票需要间隔比较长的时间的原因 。
最后需要说明的是 , 目前还不存在100%完美的分布式事务解决方案 , 因此 , 根据业务对于一致性要求的高低程度 , 可以选择性地设置周期性对账补账逻辑 , 来作为“兜底” 。
本章介绍了本地事务及分布式事务 。 针对分布式事务所面临的挑战 , 本章也介绍了分布式事务的解决方案 , 包括二阶提交协议、三阶提交协议、Paxos算法、Raft算法、消息等