1. 程式人生 > >Consul vs. Istio

Consul vs. Istio

Consul vs. Istio

Istio是一個連線,管理和保護微服務的開放平臺。

要啟用Istio的全部功能,必須部署多個服務。對於控制平面:必須部署Pilot,Mixer和Citadel,併為資料平面部署Envoy邊車。此外,Istio還需要來自Kubernetes,Consul,Eureka或其他公司的第三方服務目錄。最後,Istio需要一個外部系統來儲存狀態,通常是etcd。至少,必須配置三個Istio專用服務以及至少一個獨立的分散式系統(除了Istio)以使用Istio的全部功能。

Istio為基於路徑的路由,流量整形,負載平衡和遙測提供第7層功能。可以針對第7層和第4層屬性配置訪問控制策略,以根據服務標識控制訪問,路由等。

Consul是一個提供伺服器和客戶端功能的單一二進位制檔案,包括服務目錄,配置,TLS證書,授權等所有功能。雖然Consul可選擇支援諸如Vault之類的外部系統來增強行為,但不需要安裝其他系統來使用Consul。這種架構使Consul可以輕鬆安裝在任何平臺上,包括直接安裝在機器上。

Consul使用基於代理的模型,其中叢集中的每個節點都執行Consul客戶端。此客戶端維護從伺服器有效更新的本地快取。因此,所有安全服務通訊API都以微秒為單位進行響應,不需要任何外部通訊。這允許我們在邊緣進行連線實施,而無需與中央伺服器通訊。 Istio將請求流向中央Mixer服務,並且必須通過Pilot推送更新。這大大降低了Istio的可擴充套件性,而Consul能夠有效地分發更新並在邊緣執行所有工作。

Consul的資料平面是可插拔的。它包括一個內建代理,具有更大的效能折衷,易於使用。但您也可以使用第三方代理,如Envoy。對作業使用正確代理的能力允許靈活的異構部署,其中不同的代理對於他們代理的應用程式可能更正確。

除了第三方代理支援,應用程式還可以本地與Connect協議整合。因此,引入Connect的效能開銷可以忽略不計。這些“Connect-native”應用程式可以與任何其他支援Connect的服務進行互動,無論它們是使用代理還是Connect-native。

Consul僅對第4層強制執行授權和身份 - 可以建立TLS連線,也可以不建立。我們認為服務標識應該與第4層繫結,而第7層應該用於路由,遙測等。我們鼓勵使用者使用可插拔資料平面層來使用支援叢集所需的第7層功能的代理。 Consul將在未來新增更多第7層功能。

Consul實現自動TLS證書管理,並提供輪換支援。葉子和根證書都可以在大型Consul叢集中自動輪換,而不會中斷連線。證書管理系統可通過Consul中的程式碼更改進行外掛,並將很快作為外部外掛系統公開。這使得Consul可以使用任何PKI解決方案。

由於Consul的服務連線功能“Connect”是內建的,因此它繼承了Consul的操作穩定性。 Consul自2014年以來一直在為大型公司生產,並且已知在單個叢集中部署多達50,000個節點。

這種比較基於我們對Istio的有限使用以及與Istio使用者交談。如果您覺得此比較中有不準確的陳述,請點選此頁面頁尾中的“編輯此頁面”並提出修改建議。我們力求技術準確性,並將儘快審查和更新此帖子的不準確之處。