1. 程式人生 > >Consul vs. Envoy and Other Proxies

Consul vs. Envoy and Other Proxies

Consul vs. Envoy and Other Proxies

現代服務代理為微服務和雲環境提供高階服務路由,身份驗證,遙測等。Envoy是一個受歡迎且功能豐富的代理。

代理需要豐富的配置才能執行,因為必須配置後端地址,前端偵聽器,路由,過濾器,遙測傳輸等。此外,現代基礎設施包含許多代理,通常每個服務一個代理,因為代理部署在服務旁邊的“邊車”模型中。因此,代理的主要挑戰是配置蔓延和編排。

代理形成所謂的“資料平面”:資料為網路連線傳播的路徑。在此之上是“控制平面”,它提供資料平面的規則和配置。代理通常與外部解決方案整合以提供控制平面。例如,Envoy與Consul整合以動態填充服務後端地址。

Consul是一種控制平面解決方案。服務目錄充當服務及其地址的登錄檔,可用於為代理路由流量。 Consul的Connect功能提供TLS證書和服務訪問圖,但仍需要在資料路徑中存在代理。作為控制平面,Consul集成了許多資料平面解決方案,包括Envoy,HAProxy,Nginx等。

Consul提供了一個用Go編寫的內建代理。這為易用性提供了效能:通過內置於Consul,Consul的使用者可以開始使用Connect等解決方案而無需安裝其他軟體。但內建代理並不意味著與Envoy等專用代理解決方案在功能或效能上展開競爭。 Consul使第三方代理能夠與Connect整合,並提供資料平面,Consul作為控制平面執行。

Consul的Connect功能通過授權TLS連線成功或失敗來在第4層執行。代理為第7層問題提供了出色的解決方案,例如基於路徑的路由,跟蹤和遙測等。 Consul鼓勵使用提供使用者所需功能集的任何代理。

此外,通過支援可插拔資料平面模型,可以根據需要部署正確的代理。對於非效能關鍵應用程式,可以使用內建代理。對於效能關鍵型應用程式,可以使用Envoy。對於可能需要硬體的一些應用程式,可以部署諸如F5裝置的硬體負載均衡器。 Consul提供了一個API,可以整合所有這些解決方案。