
分布式系统中实现ACID特性比单机系统更复杂,主要原因在于多个节点间的协调和数据一致性问题。单机系统可以通过锁、时间序列等机制保证操作的顺序执行,而分布式系统需要处理网络分区、节点故障等额外挑战。
二阶段提交协议通过两个阶段确保事务的原子性。第一阶段为投票阶段,协调者询问参与者是否可以提交事务。第二阶段为提交阶段,根据投票结果决定提交或回滚事务。
问题:
TCC通过业务层面的补偿机制实现分布式事务,分为预留、确认或撤销三个阶段。
优点:
缺点:
在二阶段提交中,若参与者在第一阶段确认提交后崩溃,协调者需记录事务状态并恢复后重试。参与者需持久化事务日志,确保恢复后能继续执行提交或回滚操作。
优点:
缺点:
在大多数场景下,优先考虑最终一致性而非强一致性,以提升系统可用性和性能。仅在必要时使用分布式事务,如金融交易等对一致性要求极高的场景。