seata 後續:
1.tcc模式,t-try prepare c-confirm c-cancel,
2.除了tm 上面的@gloadtansational,註解外,各個的rm的介面上面要有@twophasebusinessaction(name=,commitmethod=,
rollbackmethod=)
3.如果t,出現問題,則回滾執行rollback方法,如果c,出現問題了,就不回滾
4.t-papare-嘗試去做,不真正的操作業務sql,或者業務字段,第一階段的try,只是對目標欄位的嘗試,不會真正的操作
目標字段。
c-commit一定是要成功的,**能走到第二階段的提交,那麼第一階段的try是成功的,必然第二階段的commit會成功的
。死迴圈去呼叫,是tc去呼叫的
c-rollback-一旦try邏輯失敗,就會呼叫rollback吃,需要回滾的就是第一階段try預留的值。
5.tcc模式常見的問題,
1.空回滾問題,呼叫第一階段try的時候,由於網路擁堵導致呼叫超時,呼叫失敗,tm接收不到rm的第一階段的回滾,
就認為呼叫失敗了,呼叫第二階段的rollback,rm的第乙個階段的try並沒有執行,空回滾了
2.懸掛問題,就是在空回滾問題的基礎上,rollback執行完了,執行業務的try又活了起來,不會在執行rollback第二次了
3.冪等性問題,在commit的時候,成功了,但是因為網路異常,tc認為失敗了,頻繁的執行commit。
6.效率的問題,at.模式有乙個全域性的鎖,效能不高。
分布式事務中Tcc模式常見問題解決
在分布式系統中,隨時隨地都需要面對網路超時,網路重發和伺服器宕機等問題。所以分布式事務框架作為搭載在分布式系統之上的乙個框架型應用也繞不開這些問題。具體而言,有以下常見問題 冪等處理 空回滾資源懸掛 這些異常的應對需要tcc框架的支援和解決方案。因為網路抖動等原因,分布式事務框架可能會重複呼叫同乙個...
分析工廠模式中的問題並改造
工廠模式基本與簡單工廠模式差不多,上面也說了,每次新增乙個產品子類都必須在工廠類中新增乙個判斷分支,這樣違背了開放 封閉原則,因此,工廠模式就是為了解決這個問題而產生的。既然每次都要判斷,那就把這些判斷都生成乙個工廠子類,這樣,每次新增產品子類的時候,只需再新增乙個工廠子類就可以了。這樣就完美的遵循...
裝飾者模式的分析
先從裝飾者模式的由來來講起 如果我們要做乙個遊戲中的角色,要新增 鞋子,衣服等等,最簡單的設計方法 方案1 class hero class hero public component void equipdecorator euip 下面為子類 class shirt public equipde...