首先,先說下服務治理的邊界,本質上任何能提升服務可用性,效能,讓服務更穩定等等,只要是能讓服務執行的更好,都屬於服務治理的範疇。服務治理比較常見的話題:服務發現,服務變更管理,服務監控,服務擴容縮容,服務自我保護,服務降級,服務授權防攻擊,服務上線驗證和灰度釋出,服務問題定位和跟蹤,服務負載,服務例項的排程等等。
微服務是最近幾年才興起的概念。簡單點講,就是把複雜的大應用,解耦拆分成幾個小的應用。這樣做的好處有很多。比如,這樣有利於團隊組織架構的拆分,畢竟團隊越大協作的難度越大;再比如,每個應用都可以獨立運維,獨立擴容,獨立上線,各個應用之間互不影響。不用像原來那樣,一個小功能上線,整個大應用都要重新發布。
不過,有利就有弊。大應用拆分成微服務之後,服務之間的呼叫關係變得更復雜,平臺的整體複雜熵升高,出錯的概率、debug 問題的難度都高了好幾個數量級。所以,為了解決這些問題,服務治理便成了微服務的一個技術重點。
所謂服務治理,簡單點講,就是管理微服務,保證平臺整體正常、平穩地執行。服務治理涉及的內容比較多,比如鑑權、限流、降級、熔斷、監控告警等等。這些服務治理功能的實現,底層依賴大量的資料結構和演算法。
關於微服務框架,目前國內常見的是SpringCloud技術棧和Dubbo技術棧,前者多為rest服務(http),後者多為RPC服務,一般來說REST 服務呼叫效能會比 RPC 低一些,注意本質上來講rest也可以認為是一種RPC。技術棧支援上來說,SpringCloud由於引入了很多依賴元件,特別是netflix的那一套元件,上手簡單,但是隨著最近幾年阿里對於Dubbo社群的投入增加,Dubbo相關元件也慢慢活躍起來,比如nacos、sentinel、rocketmq、seata這些,最近兩年也搞了一個Spring Cloud Alibaba,其中就整合了上述所說的幾個元件。
Spring Cloud Alibaba 是阿里巴巴提供的微服務開發一站式解決方案,是阿里巴巴開源中介軟體與 Spring Cloud 體系的融合。
關於限流熔斷降級,目前開源框架有hystrix和sentinel。比如Sentinel 是面向分散式服務架構的流量控制元件,主要以流量為切入點,從流量控制、熔斷降級、系統自適應保護等多個維度來幫助您保障微服務的穩定性。關於下流,一般會根據不同場景進行不同的限流操作,常見的有令牌桶和漏斗限流演算法。
關於Sentinel可以參考如下文章:
關於配置中心,目前常見的有Apollo、Disconf、Nacos,其中Apollo是目前國內使用較多的,Nacos目前也是阿里主推的,其發展潛力也不容小覷。關於註冊中心,大都是基於AP或者CP來實現,比如常見的Eureka、Nacos、Etcd等等。
對於分散式事務來說,目前比較火的是阿里開源的Seata-其致力於提供高效能和簡單易用的分散式事務服務。Seata 將為使用者提供了 AT、TCC、SAGA 和 XA 事務模式,為使用者打造一站式的分散式解決方案,github地址:https://github.com/seata/seata。關於seata這塊,可以參考以下文章:
服務治理內容涉及較多,在這裡就不一一展開贅述了,感興趣的小夥伴可以根據文章開頭的內容自行google即可。
推薦閱讀