服務網格service mesh 之 Linkerd

ciscopuke發表於2021-09-09

圖片描述

微服務的兩面性

最近兩三年來微服務方興未艾, 可以看到越來越多的公司和開發人員陸陸續續投身到微服務架構, 讓一個一個的微服務專案落地。

但是,在這一片叫好的喧鬧中, 我們還是發覺一些普遍存在的問題:雖然微服務對開發進行了簡化,透過將複雜系統切分為若干個微服務來分解和降低複雜度,使得這些微服務易於被小型的開發團隊所理解和維護。但是,複雜度並非從此消失。微服務拆分之後,單個微服務的複雜度大幅降低,但是由於系統被從一個單體拆分為幾十甚至更多的微服務, 就帶來了另外一個複雜度:微服務的連線、管理和監控。

試想, 對於一個大型系統, 需要對多達上百個甚至上千個微服務的管理、部署、版本控制、安全、故障轉移、策略執行、遙測和監控等,談何容易。更不要說更復雜的運維需求,例如A/B測試,金絲雀釋出,限流,訪問控制和端到端認證。

開發人員和運維人員在單體應用程式向分散式微服務架構的轉型中, 不得不面臨上述挑戰。

針對上述問題,Service Mesh服務網格,應運而生。

什麼是Service Mesh(服務網格)?

  • Service Mesh是專用的基礎設施層

  • 輕量級高效能網路代理

  • 提供安全的、快速的、可靠地服務間通訊

  • 與實際應用部署一起,但對應用透明

今天主要介紹其中一種:Linkerd

Linkerd

Resilient service mesh for cloud native apps

What is Linkerd?

Linkerd is an open source network proxy designed to be deployed as a service mesh: a dedicated layer for managing, controlling, and monitoring service-to- service communication within an application


圖片描述

  • 服務之間的通訊,中間經過Linkerd。在之前的SpringCloud中,類似負載均衡、服務容錯保護、健康機制等等都是直接內嵌在每個服務中,現在把SpringCloud這一套抽離出來,交由Linkerd服務來代理。業務服務不需要關係這些,只需要基於Linkerd啟動,就擁有這些服務治理特性。

  • 基於服務註冊中心和配置中心,業務服務也不需要關注,交由Linkerd去處理。

  • 服務在啟動時,只需要告訴Likerd 服務ip、埠等資訊即可。

What does Linkerd do?

Linkerd adds visibility, control, and reliability to your application with a wide array of powerful techniques: circuit-breaking, latency-aware load balancing, eventually consistent (“advisory”) service discovery, deadline propagation, and tracing and instrumentation.


圖片描述


Linkerd在埠9990提供一個控制管理皮膚,用於監控服務行為,包括服務請求量、成功率、連線資訊、所配路由的延遲指標等。所有資訊實時更新,你可以很清楚的知道服務的健康情況。


圖片描述

Linkerd主要特性

  • 負載均衡:linkerd提供了多種負載均衡演算法,它們使用實時效能指標來分配負載並減少整個應用程式的尾部延遲。

  • 熔斷:linkerd包含自動熔斷,將停止將流量傳送到被認為不健康的例項,從而使他們有機會恢復並避免連鎖反應故障。

  • 服務發現:linkerd 與各種服務發現後端整合,透過刪除特定的(ad-hoc)服務發現實現來幫助您降低程式碼的複雜性。

  • 動態請求路由:linkerd 啟用動態請求路由和重新路由,允許您使用最少量的配置來設定分段服務(staging service),金絲雀(canaries),藍綠部署(blue-green deploy),跨DC故障切換和黑暗流量(dark traffic)。

  • 重試機制:linkerd可以在某些故障時自動重試請求,並且可以在指定的時間段之後讓請求超時。

  • TLS:linkerd 可以配置為使用 TLS 傳送和接收請求,您可以使用它來加密跨主機邊界的通訊,而不用修改現有的應用程式程式碼。

  • HTTP 代理:linkerd 可以作為 HTTP 代理,幾乎所有現代 HTTP 客戶端都廣泛支援,使其易於整合到現有應用程式中。

  • 透明代理:您可以在主機上使用 iptables 規則,設定透過 linkerd 的透明代理。

  • gRPC:linkerd 支援 HTTP/2 和 TLS,允許它路由 gRPC 請求,支援高階 RPC 機制,如雙向流,流程控制和結構化資料負載。

  • 分散式追蹤:linkerd 支援分散式跟蹤和度量儀器,可以提供跨越所有服務的統一的可觀察性。

  • 儀表化:linkerd 提供了通訊延遲和有效載荷大小的詳細直方圖以及成功率和負載均衡統計資訊,以人類可讀和機器可解析的格式



作者:angeChen
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2820413/,如需轉載,請註明出處,否則將追究法律責任。

相關文章