構建現代應用程序的 8 個最佳服務網格管理器

已發表: 2022-05-31

在使用微服務時,您的應用程序由許多不同的小型服務組成,這些服務必須進行通信才能作為一個系統一起運行。

在許多情況下,微服務直接在各個服務之間相互通信,這使得它們效率低下並且容易出現故障,但這正是服務網格可以提供幫助的地方。

什麼是服務網格?

術語服務網格最初描述了一種控制應用程序不同微服務之間數據交換的方法。 具體來說,它是關於使用支持微服務之間通信的軟件:

  • 應用識別
  • 負載均衡
  • 驗證
  • 加密

互連微服務的網狀網絡由通過其代理運行的並行連接創建。 為此,將聯網的微服務網絡集成到更高級別的數據中心網絡管理系統中。 這樣就更容易優化通信,而不會在應用程序的發展過程中受到停機時間的影響。 在現實中,每個應用服務都需要其他服務來滿足用戶的需求。

例如,對於在線銷售應用程序,用戶在進行任何購買之前,都會發現相關商品是否確實有貨。 為此,必須在與數據庫相關的服務和產品網頁之間建立通信。 然後,後者必須與用戶的在線購物車通信。

此外,經銷商可以在應用程序上設置產品建議服務,以更好地引導用戶。 在這種情況下,這項新服務不僅必須與產品標籤數據庫進行交換以發布提案,而且還必須與庫存數據庫進行交換,後者應事先與產品頁面進行通信。 它實際上是一套可重複使用的產品。

現代應用程序通常像這樣設置為服務網絡,其目的是執行特定的業務功能。

服務網格是如何工作的,它的優勢是什麼?

需要注意的是,Service Mesh 不會在應用程序的工作環境中創建其他功能。 在應用程序中創建的服務網格採用一組網絡代理的形式,這在企業計算領域仍然是一個熟悉的概念。

每次使用工作計算機訪問網頁時,您可能都會使用代理。 基於微服務基礎設施層的代理有助於在它們之間路由請求。 因此,“sidecar”一詞表示服務網格中包含的代理,這是因為它們的執行是在服務旁邊而不是在服務內部完成的。 各種服務的“sidecar”代理建立了一個網狀網絡。

此外,在沒有服務網格的情況下,開發人員發現自己必鬚根據服務之間的通信策略對每個微服務進行編碼。 由於部門之間的溝通邏輯隱藏在每個部門中,開發人員難以實現公司目標。

此外,他們在溝通問題的診斷過程中也會遇到困難。 最後,服務網格可以找到一些與服務之間的通信管理相關的問題的解決方案。

使用服務網格,您可以自動化這種通信,因為在網格網絡的外包基礎設施中可以輕鬆訪問所需的數據和見解。 它使定位和消除任何問題和故障變得更加容易。 此外,它還可以讓公司的 IT 部門得到解脫,專注於其他增值任務。

由於通信抽象,失敗的服務也可以自動繞過,並且不會影響功能應用程序部分的數據交換。 服務網格系統易於訪問的數據也可以輕鬆分析,從而能夠改進應用程序的操作和性能。

我們已經了解了服務網格的工作原理; 現在,讓我們看看一些最好的服務網格管理器:

網狀

Meshery 是一個網格服務管理器,它允許您運行不同的服務網格解決方案。 它可以部署在 Kubernetes 和 Docker 上。 Mastery 提供了一個 UI 和 CLI 來為所有主要的網格服務解決方案設置基準,包括 Linkerd 和 Istio。 Meshery 可以直接部署在集群上,也可以部署在本地。

亞馬遜應用網格

AWS App Mesh 是 Amazon Kubernetes 平台 (EKS) 的網絡網格服務。 它通過 envoy sidecar 代理為入口和出口流量提供應用程序級管理,並使用熔斷器使用 AWS X-Ray 提供可觀察性指標。 AWS 應用網格也可以與其他服務一起使用,例如 Amazon EC2 和 AWS Fargate。

鏈接器

Linkerd 是一個開源網絡網格管理器,它使用基於 Rust 的定制代理來管理微服務。 它預裝了 Grafana 以提供可觀察性指標。 Linkerd 與其他開源網格管理器不同,它提供 GUI,不僅支持 Prometheus,還支持 Traefik、Kong 和 Gloo 等入口控制器。 Linkerd 還支持跨集群的自動部署升級。

Istio

Istio 是一個使用 Envoy 代理來管理微服務的開源服務網格。 Istio 提供了多種功能,例如負載均衡、策略創建、流量路由、超時、斷路、流量轉移和重試。 ‌Istio 還提供跨容器或機器的分佈式跟踪功能,無需安裝額外的軟件。

隈研吾

Kuma 是由 Kong 創建的服務網格,用於通過 Envoy 代理擴展現有服務的工作。 Kuma 支持不同的微服務,並為網絡提供增強的安全性和監控。 它帶有許多用於路由、mTLS、流量控制和各種安全功能的預捆綁策略。 使用 Kuma,您可以通過單個控制和數據平面輕鬆控制不同的隔離網格。

Nginx 網格

Nginx 是 Kubernetes 的服務網格,它使用由 Nginx Plus 提供支持的數據平面來加密容器之間的流量。 Nginx 使用速率限制和斷路器來管理服務之間的流量,並附帶一個 Grafana 儀表板用於觀察服務網格的指標。

領事

HashiCorp 的 Consul 是一個服務網格,它提供了一個內置的代理層,還支持 Envoy sidecar 代理。 它提供基於路徑的路由、流量轉移和負載平衡。 Consul 與 HashiCorp Vault 集成,它還支持 mTLS。 它可以與 Prometheus 和 Grafana 集成以查看可觀察性指標。

格魯網

Gloo Mesh 是一個建立在 Istio 網格之上的服務網格,它使用 Envoy 代理來實現零信任安全模型。 Gloo 支持多租戶 Kubernetes、VM 和其他微服務。 它對 CI/CD 和 GitOps 都很友好,這使得部署更加容易。

最後的話

Service Mesh 解決了不同微服務之間的通信問題,提供了各種安全優勢; 但是,由於市場上有數百種不同的網格解決方案,因此選擇最適合您的要求且易於管理的網格服務變得至關重要。