Service Mesh 與探針

Service Mesh 與探針

博客地址https://luckmaosh.github.io/

skywalking探針

skywalking是apache發佈的分佈式追蹤服務,通過安裝skywalking探針的方式採集數據。

部署方式

1.拷貝skywalking-agent目錄到所需位置,探針包含整個目錄,請不要改變目錄結構
2.增加JVM啓動參數,-javaagent:/path/to/skywalking-agent/skywalking-agent.jar。參數值爲skywalking-agent.jar的絕對路徑。

service mesh 探針

做什麼

收集服務網格內的數據

工作原理

Service Mesh探針從每個請求中收集遙測數據,因此它知道源,目的地,端點,延遲和狀態。通過這些,後端可以通過將這些調用組合爲行,並通過它們的傳入請求將每個節點的度量組合起來,從而告訴整個拓撲圖。後端從解析跟蹤數據中請求相同的指標數據。因此,正確的表達是: 服務網格度量是精確的度量,即跟蹤解析器生成的度量。他們是一樣的。

Istio

Istio 作爲 Service Mesh 領域的集大成者, 提供了流控, 安全, 遙測等模型, 其功能複雜, 模塊衆多, 有較高的學習和使用門檻。

Kubernetes(k8s)的主要概念包括:node、pod(一個pod裏面有多個container)、container、service、process,更多時候它的名字會和docker聯繫在一起。也就是微服務部署,容器管理,進程管理,資源調度的功能。如果遇到資源不夠的時候,k8s可以提供便利的伸縮擴容服務。

k8s也有service機制,像spring cloud的服務一樣,可以做到服務發現,服務註冊,負載均衡,通過服務名訪問到服務實例。

K8s和微服務的關係,首先k8s不是微服務,微服務是一種架構,k8s是一個容器管理工具。其次,k8s支持微服務架構。

Kubernetes的Service基於每個節點的Kube-proxy從Kube-apiserver上獲取Service和Endpoint的信息,並將對Service的請求經過負載均衡轉發到對應的 Endpoint 上。但Kubernetes只提供了4層負載均衡能力,無法基於應用層的信息進行負載均衡,更不會提供應用層的流量管理,在服務運行管理上也只提供了基本的探針機制,並不提供服務訪問指標和調用鏈追蹤這種應用的服務運行診斷能力。

Istio和k8s一樣,都是作爲微服務的服務管理。Kubernetes本身是支持微服務的架構,在Pod中部署微服務很合適,也已經解決了微服務的互訪互通問題。但是對服務間訪問的管理如服務的熔斷、限流、動態路由、調用鏈追蹤等都不在k8s的範圍內,這就需要Istio來實現。

所以目前,最完美的答案就是在Kubernetes上疊加Istio這個好幫手。K8s主外,Istio主內

istio系統組件細化到進程級別

Istio 基於K8s

統一服務發現

基於k8s的域名訪問機制構建而成,自己不需要搭建Eureka了

k8s探針

Istio利用k8s的探針對service進行流量健康檢查,有兩種探針可供選擇,分別是liveness和readiness:

liveness探針用來偵測什麼時候需要重啓容器。比如說當liveness探針捕獲到程序運行時出現的一個死鎖,這種情況下重啓容器可以讓程序更容易可用。

readiness探針用來使容器準備好接收流量。當所有容器都ready時被視爲pod此時ready。比如說用這種信號來控制一個後端服務,當pod沒有到ready狀態時,服務會從負載均衡被移除。

service mesh 服務網格

處理服務間的通信

微服務的架構,業務服務需要部署到非常多的服務節點,形成網格。Service Mesh會接管整個網絡,在服務之間轉發所有的請求,業務服務只關心業務邏輯,而不需要關心服務間的通信。服務間通訊的環節就從服務裏面剝離出來,呈現出一個抽象的基礎設施層。對應的服務間通訊相關的治理功能,如流量路由(根據權重或參數分流、負載均衡、黑白名單)、流量治理(熔斷、限流、容錯)、請求認證鑑權、調用拓撲等均在下沉的Service Mesh層實現,微服務研發者專注於業務研發本身即可。

Service Mesh核心價值

對於通常的業務微服務而言, Service Mesh所帶來的核心價值可以總結爲:

微服務基礎設施下沉 —— 微服務架構支撐、網絡通信、治理等相關能力下沉到基礎設施層,業務部門無需投入專人開發與維護,可以有效降低微服務架構下研發與維護成本;
降低升級成本 —— Sidecar支持熱升級,降低中間件和技術框架客戶端、SDK升級成本;
語言無關 —— 提供多語言服務治理能力;
降低複雜測試、演練成本 —— 降低全鏈路壓測、故障演練成本和業務侵入性。

從功能上講,以Google、IBM主推的Istio框架爲例,其對Service Mesh核心功能表述如下所示:

參考

sidecar

輕量級網絡代理(Sidecar)

文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章