前提
- 前端業務(主服務)可以以同步或異步調用TCC框架,或者TCC框架本身就是同步異步兼備的.
- 假定TCC框架擁有斷電后的自動恢復能力.同時,在下游業務出現無限失敗的情況下,也會進行無限的重試,以達到最終一致
正式開始
正常流程
一切安好.
可以觀察到,confirm操作完全交由TCC調用.在同步狀態下,無論最終成功與失敗,可能出現前端等待時間過長的問題.
個人認為,try階段,也可以直接注冊到TCC中,並完全交由TCC框架調用,客戶端只訪問其保留的接口.
預留失敗
因下游業務或網絡問題導致了預留失敗.
與正常流程相同,不過此時調用了TCC的cancel操作
總結
- 實施TCC方案時,最好在立項伊始就要做好相應的數據庫設計與接口定義方案.能在數據庫中保存"預留"數據,同時相關代碼提供"預留","確認","取消"方法的接口定義以用作實現.
- 整體來說,業務級人員減小了業務開發難度(雖然工作量變大了).同時將重心轉移到了"TCC框架"的實現.它需要保證高可用,數據安全,冪等,甚至需要能處理代碼迭代引起的版本差異的問題
- 因為設計到事物管理問題,其框架開發難度也變大了,可以使用開源框架如: