TCC 的过程是:
通过他这个通过精心设计的流程,你就能看得出他的设计尽可能确保数据的一致性。
在理想情况下,如果所有参与组件都能正确执行其Try、Confirm和Cancel逻辑,并且系统之间的通信是可靠的,那么TCC是可以提供强一致性的。
但是,如果你想让TCC需要所有参与的服务或组件必须能够正确处理Try、Confirm和Cancel各阶段的逻辑。在分布式系统中,因为网络延迟、服务中断或其他外部因素登的影响,这几乎是不可能的。
所以,因为在调用 confirm 或 cancel 的时候也可能因为某种原因(比如网络延迟)导致调用失败,就需要通过重试等方式来解决,这个过程就会出现短暂的不一致。最终再通过重试、人工介入等手段来保证他能达到最终一致性。
所以,TCC模式的设计初衷是提供强一致性的。然而,在实际操作中,因为存在着各种各样的实际问题,如网络延迟等,这就使得它不得不降级为最终一致性。**因此,虽然TCC旨在实现强一致性,但在某些实际应用场景中,它可能表现为介于强一致性和最终一致性之间。