Sam*_*Sam 6 java 2phase-commit distributed-system distributed-transactions microservices
我读了一篇文章说:
我们无法在分布式环境中实现传统的交易系统,如微服务中的两阶段提交。
我完全同意这一点。
但是,如果有人可以解释此问题的确切原因,那就太好了。如果我要通过微服务实现两阶段提交,将会遇到什么问题?
提前致谢
Sap*_*asu 10
避免两阶段提交的主要原因是,事务协调器是一种独裁者,因为它告诉所有其他节点要做什么。通常事务协调器嵌入在应用服务器中。问题发生在第一阶段或准备阶段之后事务协调器或应用程序服务器出现故障时。现在,参与节点不知道该怎么做。他们无法提交,因为他们不知道其他人是否对协调员回答了“否”,并且他们无法回滚,因为其他人可能对协调员说“是”。因此,直到协调器在 15 分钟(例如)后返回并完成第二阶段之前,参与的数据存储将保持锁定状态。这抑制了可扩展性和性能. 当协调器的事务日志在第一阶段后损坏时,会发生更糟糕的事情。在这种情况下,数据存储将永远保持锁定状态。即使重新启动进程也无济于事。唯一的解决方案是手动检查数据以确保一致性,然后解除锁定。这些事情通常发生在高压情况下,因此绝对是一个巨大的运营开销。因此,传统的两阶段提交不是一个好的解决方案。
但是,这里应该注意,一些现代系统(如 Kafka)也实现了两阶段提交。但这与传统解决方案的不同之处在于,这里每个broker都可以是一个协调器,因此Kafka的leader选举算法和复制模型缓解了传统模型中提到的问题。
需要注意的一些事项并提供一些背景信息:
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |