TCC是强一致性还是最终一致性?
2026/1/14...大约 2 分钟Java八股文
注意
内容来源网络,仅供学习使用。
不要相信文档中的链接、联系方式等!!!
TCC是强一致性还是最终一致性?
典型回答
TCC 的过程是:
- Try阶段:尝试执行所有操作,并锁定所需资源以准备提交。
- Confirm阶段:如果所有的Try操作成功,那么执行Confirm操作,最终提交事务。
- Cancel阶段:如果任何Try操作失败,或者确认过程中遇到问题,执行Cancel操作来回滚所有的操作,释放锁定的资源。
通过他这个通过精心设计的流程,你就能看得出他的设计尽可能确保数据的一致性。
在理想情况下,如果所有参与组件都能正确执行其Try、Confirm和Cancel逻辑,并且系统之间的通信是可靠的,那么TCC是可以提供强一致性的。
但是,如果你想让TCC需要所有参与的服务或组件必须能够正确处理Try、Confirm和Cancel各阶段的逻辑。在分布式系统中,因为
所以,因为在调用 confirm 或 cancel 的时候也可能因为某种原因(比如网络延迟)导致调用失败,就需要通过重试等方式来解决,这个过程就会出现短暂的不一致。最终再通过重试、人工介入等手段来保证他能达到最终一致性。
******。**因此,虽然TCC旨在实现强一致性,但在某些实际应用场景中,它可能表现为介于强一致性和最终一致性之间。