上一章咱們通過本地事物的介紹,發現了本地事物的侷限性,最後咱們引起對分佈式事物的思考,咱們給出一個「事物管理器」的概念來管理事物,進而實現分佈式事物的問題。那麼這個想發到底能不能行呢?答案是確定的,傳統的分佈式事物方案就是依賴於「事物管理器」。只是有必定的侷限性而已,基本的需求方案是能夠實現的。架構
全局事物(DTP模型)介紹,如圖:分佈式
上圖可知,事物管理器來管理事物,賦予事物跨服務跨資源的功能,從而解決分佈式事物的問題。微服務
那麼既然有一套傳統的方案能解決分佈式事物的問題,爲何咱們還要去深刻研究呢?spa
由於這套方案也有很大的侷限性的.net
全局事物的優勢:blog
1:嚴格的ACID原則接口
2:基於本地事物思想,代碼實現簡單。資源
全局事物的缺點:效率
1:效率很是低,不適用微服務架構。全局事物方式下,全局事物管理器(TM)經過XA接口使用二階段提交協議(2PC)與資源層進行交互.使用全局事物,數據被lock的時間跨度整個事物,直到全局事物結束程序
2:2PC是反可伸縮模式,在事物處理過程當中,參與者須要一直持有資源直到結束,當業務規模變大,2PC的侷限性會愈來愈明顯,系統可伸縮性會變的不好
3:與本地事物相比,XA協議的系統開銷至關大。
因此,他的缺點遠大於優勢,這套傳統的分佈式事物解決方案,對於個人支付系統,確定是知足不了需求的。下面會帶你們一塊兒探討三種柔性分佈式事物的解決方案
最大努力通知型
最終消息一致性型
TCC型
/** * ————————若是以爲本博文還行,別忘了推薦一下哦,謝謝! * 做者:寫程序的奧特曼 * 歡迎轉載,請保留此段聲明。 * 出處:https://my.oschina.net/u/2286631/blog/1504666 */