天天看點

雲原生服務網格Envoy介紹

作者:SuperOps
雲原生服務網格Envoy介紹

envoy

Envoy是什麼?

Envoy 是一款開源的雲原生代理(proxy)和通信總線(communication bus),由 Lyft 公司開發并維護。它旨在提供一個高性能、可擴充、可靠的服務代理,用于支援現代的微服務和雲原生應用架構。

Envoy 的設計目标是實作以下特性:

  • 高性能和低延遲:Envoy 實作了多路複用和異步 I/O 等技術,可以處理大量并發請求,并提供低延遲的服務代理能力。
  • 可擴充性和靈活性:Envoy 提供了豐富的配置選項和插件機制,可以根據不同的應用場景和需求進行靈活的定制化配置。
  • 可觀察性和可管理性:Envoy 提供了豐富的監控和管理功能,支援統計資訊和日志的收集、可視化和分析。
  • 安全性和可靠性:Envoy 支援 SSL/TLS 加密、身份驗證和通路控制等安全特性,可以提供可靠和安全的服務代理能力。

Envoy 的架構采用了插件式的設計,包括多個不同的元件,如網絡層、過濾器、路由器等,這些元件可以根據需要進行配置和擴充。此外,Envoy 還支援多種不同的協定和資料格式,包括 HTTP、gRPC、MongoDB、MySQL 等。

Envoy 已經被廣泛應用于生産環境中,包括 Lyft、Google、Salesforce、Apple 等知名企業。它也是 Istio、Knative、Consul 等多個開源項目的核心技術之一,為雲原生應用架構提供了強大的服務代理和通信總線能力。

Envoy的架構

雲原生服務網格Envoy介紹

envoy 架構

Envoy 的架構采用了高度可擴充和靈活的插件式設計,包括多個不同的元件,如網絡層、過濾器、路由器等。下面是 Envoy 的主要元件和架構設計:

1. 網絡層(Network Layer):Envoy 的網絡層負責處理網絡連接配接和資料傳輸,包括 TCP/IP 和 HTTP/2 等協定。Envoy 的網絡層實作了多路複用和異步 I/O 等技術,可以實作高性能和低延遲的服務代理能力。

2. 過濾器(Filter):Envoy 的過濾器是其最核心的元件之一,用于實作各種不同的功能和特性,如路由、負載均衡、故障轉移、認證、授權、限流等。Envoy 的過濾器可以實作不同的功能組合,形成完整的服務代理和通信總線能力。

3. 路由器(Router):Envoy 的路由器用于将傳入的請求路由到不同的後端服務或負載均衡組,實作了靈活的流量控制和管理功能。

4. 配置管理器(Configuration Manager):Envoy 的配置管理器是一個動态的配置系統,可以實時更新和修改 Envoy 的配置,包括路由規則、過濾器等。這使得 Envoy 可以根據實際情況進行動态的調整和優化。

5. 監控和管理(Observability and Management):Envoy 提供了豐富的監控和管理功能,包括統計資訊和日志的收集、可視化和分析,以及灰階釋出、流量控制和故障轉移等功能。

Envoy 的架構設計非常靈活和可擴充,可以通過插件和配置進行定制化,實作不同的服務代理和通信總線能力,為雲原生應用架構提供了強大的支援。

Envoy的應用場景

Envoy 作為一個高性能、可擴充、可靠的服務代理和通信總線,可以适用于各種不同的應用場景。以下是 Envoy 的一些常見應用場景:

1. 微服務架構:Envoy 可以作為微服務架構中的核心元件,用于實作服務發現、負載均衡、流量控制、故障轉移等功能,同時提供了可觀察性和管理性能力,支援多種不同的協定和資料格式。

2. 雲原生應用:Envoy 作為雲原生應用的代理和通信總線,可以實作微服務之間的通信和協作,并提供了可觀察性和管理性能力,支援多種不同的雲原生技術和平台,如 Istio、Kubernetes、Docker 等。

3. API 網關:Envoy 可以作為 API 網關的代理和通信總線,用于實作 API 的路由、認證、授權、限流等功能,同時提供了可觀察性和管理性能力,支援多種不同的協定和資料格式。

4. 資料中心網絡:Envoy 可以作為資料中心網絡的代理和通信總線,用于實作資料中心内部的服務代理和通信,支援多種不同的協定和資料格式,同時提供了可觀察性和管理性能力。

5. 邊緣計算:Envoy 可以作為邊緣計算的代理和通信總線,用于實作邊緣裝置和雲端服務之間的通信,同時提供了可觀察性和管理性能力,支援多種不同的協定和資料格式。

Envoy 的應用場景非常廣泛,可以适用于各種不同的服務代理和通信總線需求,為現代化的應用架構提供了強大的支援。

Envoy與微服務治理的關系

Envoy 在微服務治理中扮演了重要的角色,主要有以下幾個方面的作用:

1. 服務發現和負載均衡:Envoy 可以與服務注冊中心內建,實作服務的自動發現和注冊,并根據負載均衡算法将請求路由到不同的服務執行個體。這樣可以消除單點故障,提高系統的可用性和可擴充性。

2. 流量控制和故障轉移:Envoy 可以對服務之間的流量進行控制和管理,支援限流、熔斷、重試等功能,同時可以自動檢測和恢複故障的服務執行個體,保證服務的可靠性和穩定性。

3. 安全認證和授權:Envoy 支援多種安全特性,如 SSL/TLS 加密、身份認證、通路控制等,可以保護微服務之間的通信安全,同時提供了靈活的認證和授權機制,可以根據不同的業務需求進行定制化配置。

4. 監控和可觀察性:Envoy 提供了豐富的監控和可觀察性能力,包括統計資訊和日志的收集、可視化和分析,可以幫助運維人員快速發現和解決問題,同時也可以提供給開發人員有價值的回報資訊,用于優化和調整微服務的性能和品質。

總結

Envoy 在微服務治理中可以實作服務之間的自動化管理和控制,提高系統的可用性、可擴充性和安全性,同時也可以提供豐富的監控和可觀察性能力,幫助運維人員和開發人員更好地管理和優化微服務架構。我在後續《微服務治理指南》裡面也會介紹Envoy對于微服務治理的應用場景和解決的核心問題及其痛點。

繼續閱讀