TM集羣特點
1) 所有節點對等,爲P2P結構,不存在主從節點。
2) 節點之間無數據通信,也就是講,節點之各節點相互獨立。(TM有無交換信息待確認?)
TM集羣示例圖
TC端
TC端會保存所有TM的實例清單
TM端
TM端會提供一些接口,反應當前的狀態信息,比如最近一段時間內的併發量,請求成功率等。以方便TC選擇合適的TM端進行請求
事務發起方使用TM時序圖
- 本地服務A(TC1)在啓動時讀取本地TM集羣配置。
- 使用客戶端負載均衡,由負載均衡策略,決定使用哪一個TM節點
- 當前選擇節點2,將當前事務組所處TM節點保存到TransactionInfo
- 服務A調用服務B,在RPC調用的過程,也會攜帶TM節點信息
- 服務B在加入事務後,加入到調用發起方所在事務組
- 繼續執行後續內容
這樣,tc調用的TM節點會使用當前的負載均衡策略選擇節點,相對於單TM節點,TM集羣分攤了整個應用的調用壓力,可以很好的提高併發量。
總結來說,該機制主要有以下特點
- 使用客戶端負載均衡 ,由事務發起方TC決定使用哪個TM
- 服務A和服務B在進行RPC調用時,需攜帶事務發起方所在TM節點
常用負載均衡策略
-
輪詢策略(RoundRobinRule)
輪詢策略就是拿到所有的服務節點的列表,對所有節點進行固定排序,挨個請求
當請求到最後一個節點的情況下,下次請求從第一個節點開始 -
隨機策略(RandomRule)
拿到所有的服務節點的列表後,對現有可訪問節點,隨機抽取一個進行訪問 -
併發量最小可用策略
TC定時主動去拉去TM的狀態信息,TM會返回最近一段時間的併發量統計數據,選擇一個併發量最小的並且可用的TM去訪問。
其他可用策略待添加
客戶端負載均衡技術選型方案
一、 自己實現
維護TM列表
tc本地配置文件會配置所有TM集羣的節點
txlcn:
tm:
server: 192.168.100.1:8070,192.168.100.2:8070,192.168.100.3:8070
TC會定時檢查列表中的TM狀態。維護可用TM列表
負載均衡
自己去實現所有負載均衡策略
優缺點
優點: 適用性強,適合所有體系結構比如Dubbo,spring cloud
缺點:需要自己開發,剛出來肯定不完善
二、使用現成爲微服務體系內組件
以Spring Cloud爲例
維護TM列表
所有TM都註冊到nacos中,由Nacos維護TM列表
負載均衡
由Ribbon實現負載均衡,Ribbon有比較完善的負載均衡策略
優缺點
優點: 複雜實現都存在,調用即可
缺點:適用性差,不同體系結構使用組件不一樣,比如註冊中心有eureka,nacos,zookeeper,consul等,各不相同,需要做兼容處理