摘抄並學習html
1. 微服務的發展spring
微服務倡導將複雜的單體應用拆分紅若干個功能簡單、鬆耦合的服務,這樣能夠下降開發難度、加強擴展性。便於敏捷開發。當前微服務的開發框架很是多,比較著名的有 Dubbo、SpringCloud、thrift、grpc 等。數據庫
2. 微服務落地存在的問題服務器
雖然如今微服務如火如荼,但對其實踐仍處於探索階段。不少中小型互聯網公司鑑於經驗技術實力等問題,微服務落地比較困難。主要有如下幾個方面:restful
1)單體應用拆分爲分佈式系統後,進程間的通信機制和故障處理措施變得更加複雜。網絡
2)系統微服務化後,一個看似簡單的功能,內部可能須要調用多個服務並操做多個數據庫實現,服務調用的分佈式事務問題很是突出。框架
3)微服務數量衆多,其測試、部署、監控等都變得更加困難分佈式
隨着 RPC(遠程過程調用 Remote Procedure Call) 框架的成熟,第一個問題已經逐漸獲得解決。例如 dubbo 能夠支持多種通信協議,springcloud 能夠很是好的支持 restful 調用。對於第二個問題,如今尚未通用方案很好的解決微服務產生的事務問題。分佈式事務已經成爲微服務落地最大的阻礙,也是最具挑戰性的一個技術難題。微服務
如下介紹分佈式事務的各類解決方案,重點解讀阿里巴巴提出的分佈式事務解決方案 —— GTS。性能
3. SOA分佈式事務解決方案
3.1 基於 XA 協議的兩階段提交方案
交易中間件與數據庫經過 XA 接口規範,使用兩階段提交來完成一個全局事務,XA 規範的基礎是兩階段提交協議。
第一階段是表決階段,全部參與者都將本事務可否成功的信息返回給協調者;第二階段是執行階段,協調者根據全部參與者的反饋,通知全部參與者,步調一致地在全部分支上提價或者回滾。
兩階段提交方案應用很是普遍,幾乎全部商業 OLTP 數據庫都支持 XA 協議。可是兩階段提交方案鎖定資源時間長,對性能影響很大,基本不適合解決微服務事務問題。
3.2 TCC 方案
TCC 方案在電商、金融領域落地較多,TCC 方案實際上是兩階段提交的一種改進。其將整個業務邏輯的每一個分支顯式的分紅了 Try、Confirm、Cancel 三個操做。Try 部分完成業務的準備工做,cinfirm 部分完成業務的提交,cancel 部分完成事務的回滾。基本原理以下
事務開始時,業務應用會向事務協調器註冊啓動事務。以後業務應用會調用全部服務的 Try 接口,完成一階段準備,以後事務協調器會根據 Try 接口返回狀況,決定調用 confirm 接口或者 cancel 接口。若是接口調用失敗會進行重試。
TCC 方案讓應用本身定義數據庫操做的粒度,使得下降鎖衝突、提升吞吐量稱爲可能,固然 TCC 方案也有不足之處,集中表如今如下兩個方面:
上述緣由致使 TCC 方案大多被研發實力較強,有迫切需求的大公司所採用。微服務倡導服務的輕量化、易部署,而 TCC 方案中不少事物的處理邏輯須要應用本身的編碼實現,複雜且開發了大。
3.3 基於消息的最終一致性方案
消息一致性方案是經過消息中間件保證上、下游應用數據操做的一致性。基本思路是將本地操做和發送消息放在一個事務中,保證本地操做和消息發送要麼二者都成功或者都失敗。下游應用向消息系統訂閱該消息,收到消息後執行相應操做。
消息方案從本質上是將分佈式事務轉換成兩個本地事務,而後依靠下游業務的重試機制達到最終一致性。基於消息的最終一致性方案對應用侵入性也很高,應用須要進行大量業務改造,成本較高。
4 GTS -- 分佈式事務解決方案
4.1 GTS的核心優點
4.2 GTS 與微服務的集成
GTS 包括客戶端(GTS Client),資源管理器(GTS RM)和事務協調器(GTS Server)三個部分。GTS Client 主要用來界定事務邊界,完成事務的發起與結束。GTS RM 完成事務分支的建立、提交、回滾等操做。GTS Server 主要負責分佈式事務的總體推動,事務生命週期的管理。GTS 和微服務集成的結構圖以下所示,GTS Client 須要和業務應用集成部署,RM 與微服務集成部署。
4.3 GTS的輸出
GTS 目前有三種輸出形式:公有云輸出、公網輸出、專有云輸出
4.3.1 公有云輸出
這種輸出形式面向阿里雲用戶。若是用戶的業務系統已經部署到阿里雲上,能夠申請開通公有云 GTS。開通後業務應用便可以經過 GTS 保證服務調用的一致性。這種使用場景下,業務系統和 GTS 間的網絡環境比較理想,達到很好的性能。
4.3.2 公網輸出
這種輸出形式面向於非阿里雲用戶,使用更加方便、靈活,業務系統只要能鏈接互聯網便可享受 GTS 提供的雲服務(與公有云輸出的差異在於客戶端部署在用戶本地,而不在雲上)
4.3.3 專有云輸出
這種形式主要面向於已建設了本身專有云平臺的大用戶,GTS 能夠直接部署到用戶的專有云上,爲專有云提供分佈式事務服務。目前已經有10多個特大型企業的專有云使用 GTS 解決分佈式事務難題,性能與穩定性通過了用戶的嚴格檢測。
摘抄自:https://www.cnblogs.com/jiangyu666/p/8522547.html