當我們在說微服務治理的時候究竟在說什麼

2021-09-14 01:30:39 字數 2221 閱讀 7869

自從微服務架構開始變得火熱以後,越來越多的系統被拆解成了很多個細胞一樣的微服務。設想一下,如果你的系統有100個微服務構成,要對這100個微服務進行管理,這絕對是乙個不小的挑戰。所以緊接著又出現了一堆讓人頭暈眼花的概念:服務註冊發現,請求鏈路追蹤,服務熔斷,服務限流,服務管控配置,服務預警。還有就是一抓一大把的開源工具:eurake,zuul,ribbon,hystrix,zipkin,dubbo,sleuth,elastic search,grafna,promethues。

這樣,當我們在說服務治理時,是不是把這些概念和工具都用上了就能夠很好的治理這100多個微服務了?稍微用google或者baidu搜尋一下「服務治理」這個關鍵字,就很容易發現其實整個社群對服務治理都沒有形成乙個共識,有人理解的服務治理是基於dubbo的服務註冊和服務發現,有人理解的服務治理是一整套從請求閘道器,服務配置中心到日誌中心架構體系。

所以這篇文章我想從現在的現象出發,分析這些概念和這些工具究竟是在解決什麼問題,然後再嘗試做乙個簡單的歸納和抽象,看看乙個服務治理體系究竟應該解決哪些問題,而為了解決這些問題應該具備哪些能力。

如果我們把服務治理模擬成是在給乙個人治病,那麼上面提到的那些概念和工具,很明顯就是治病的藥了。既然有了這麼多藥了,那麼不妨讓我們先從這些藥下手,看看這些流行的藥都能是為了解決什麼問題的,然後再看看這些問題之間存在什麼關聯。

除了spring cloud和netfix提供的這些工具以外,還有下面這些工具也經常在服務監控治理中被使用:

雖然這兩個長長的列表已經羅列了超過20個各種工具了,但是這20多個也僅僅是整個微服務治理生態工具鏈中的一小部分,你肯定還知道一些我沒有列出來的工具。由於這裡我們的目的並不是找出所有的藥,而是想分析一下這些流行的藥都有什麼特點,都是治什麼病的。所以就先基於這些藥,看看他們的共性是什麼。

如果把功能相同的進行一下歸類,會發現有這樣幾個主要功能:

這樣面對這些紛繁複雜的工具我們有了乙個基本的劃分,當然即便是這8個分類還是有點多,而且相互之間的關係也不明確,為什麼會有這8個分類的原因也不清楚。下面就一起深入一下,看看這些工具之間的內在關係究竟是什麼。

讓我們先放下微服務,像《微服務設計》那本書中說的一樣,把自己想象成乙個城市規劃師,我們的目標不是治理微服務,而是要治理乙個城市的交通,那麼我們會怎麼思考?

在進行城市交通規劃之前首先要做的第乙個事情是收集資訊,要能夠知道這個城市發生了什麼,所以在各個路口需要安裝採集探頭,記錄車來車往的資訊。有了資訊以後就需要對資訊進行分析了,那麼就需要視覺化的圖形介面,能夠一眼就看出什麼地方出了問題,通往哪個工廠的路壞了。發現了問題就要解決問題了,限制一下擁堵路段的流量,把去往乙個公園的車輛導向到另外乙個類似的公園。最後,如果把城市作為乙個國家來考慮,那麼每個進入這個城市的車輛都需要進行檢查,看看有沒有攜帶違禁品,最後給這些不熟悉道路的外地車規劃路線。通過上面這個思考的過程,我們發現要對乙個城市進行治理的時候,第一要採集資訊,然後要能夠對採集的資訊進行監控和分析,最後根據分析的結果採取對應的治理策略。另外從整體安全的角度考慮還需要乙個守門人。

因此我們也用同樣的思路來思考服務治理,閘道器就是整個整體的守門人,日誌採集,追蹤工具,服務註冊發現都是用來採集資訊的,然後需要監控平台來展現這些採集的資訊,並進行監控和分析。最後根據分析的結果採取治理策略,有的服務快撐不住了要限流,有的服務壞了要熔斷,並且還能夠及時的調整這些服務的配置。

下面的腦圖就從這四個方面構建了乙個簡易的服務治理體系:

請求閘道器,資訊採集,資訊分析,治理策略

微服務監控治理

作為對當前服務治理領域各種紛繁複雜工具的一次簡單梳理,這個體系不一定是完全準確的。但是總不能每次說到服務治理的時候我們都把幾十個工具拿出來看看能用哪個工具吧。我希望達到的目的是,當大家需要對微服務進行治理和監控的時候,能夠用這個簡易的體系做個參考,明確的知道在請求閘道器,資訊採集,資訊分析,治理策略這四個方面還缺少了什麼東西。

當然,如果你發現除了這四個方面以外還缺少了什麼東西,也非常歡迎提出來進行**,希望能夠通過討論得到乙個更好的服務治理體系。

當我們在說事件驅動的時候,我們在說什麼

martin fowler是物件導向分析設計 重構等領域的頂級專家,也是敏捷開發的創始人之一,也是企業應用架構方面的頂級專家。事件通知 這一模式就是乙個系統傳送一些事件訊息到另一些系統,以通知他們說我這個系統裡面的領域物件發生了改變。這個通知的乙個關鍵點是,我的源系統並不關心對方系統收到這些通知以後...

當我們在說事件驅動的時候,我們在說什麼

翻譯自martin fowler2017年初的文章what do you mean by event driven 雖然這篇文章網上已經有一些翻譯,但是基本都是直譯,甚至有的翻譯比較晦澀。再加上最近工作中遇到不少事件驅動架構設計的問題,所以把這個再翻一下,並不是直譯,主要是加上一些自己的理解。mar...

當我們說資料探勘的時候我們在說什麼

開頭下定語 統計學習 現在市面上談論到的資料探勘基本上都是基於統計學習的監督學習或非監督學習問題。尤其以監督學習應用面更廣。統計學習的應用 分類問題 客戶分類模型 異常鑑別 影象識別等 標註問題 資訊抽取 自然語言處理等 統計學習的一般流程 步驟一 得到乙個有限的資料集合 涉及到以下多個流程 1.資...