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

Consul vs. SmartStack

Consul vs. SmartStack

SmartStack是一種解決服務發現問題的工具。它有一個相當獨特的架構,有4個主要元件:ZooKeeper,HAProxy,Synapse和Nerve。 ZooKeeper伺服器負責以一致且容錯的方式儲存叢集狀態。然後,SmartStack叢集中的每個節點都執行Nerves和Synapses。 Nerve負責對服務執行執行狀況檢查並向ZooKeeper伺服器註冊。 Synapse為服務提供商查詢ZooKeeper並動態配置HAProxy。最後,客戶與HAProxy交談,HAProxy在服務提供商之間進行健康檢查和負載均衡。

Consul是一個更簡單,更包含的系統,因為它不依賴於任何外部元件。 Consul使用整合的gossip協議來跟蹤所有節點並執行伺服器發現。這意味著與SmartStack不同,伺服器地址不需要在更改時進行硬編碼和更新。

Consul和Nerves的服務註冊都可以使用配置檔案完成,但Consul還支援API來動態更改正在使用的服務和檢查。

對於發現,SmartStack客戶端必須使用HAProxy,要求Synapse預先配置所有所需的端點。相反,Consul客戶端使用DNS或HTTP API,而無需事先進行任何配置。 Consul還提供“tag”抽象,允許服務提供可用於過濾的版本,主要/次要名稱或不透明標籤等元資料。然後,客戶端只能請求具有匹配標記的服務提供者。

系統在管理健康檢查方面也有所不同。神經以類似於Consul代理的方式執行本地健康檢查。但是,Consul維護著單獨的目錄和健康系統。這種劃分允許操作員檢視每個服務池中的哪些節點,並提供對失敗檢查的深入瞭解。Nerve只是在失敗的檢查中取消註冊節點,提供有限的操作洞察力。 Synapse還配置HAProxy以執行其他執行狀況檢查。這會導致所有潛在的服務客戶端檢查是否活躍。對於大型艦隊,這種N-to-N風格的健康檢查可能非常昂貴。

Consul通常提供更豐富的健康檢查系統。 Consul支援Nagios風格的外掛,可以使用大量的檢查目錄。 Consul允許進行服務級和主機級檢查。甚至還有一個“死人的開關”檢查,允許應用程式輕鬆整合自定義健康檢查。最後,所有這些都整合到健康和目錄系統中,通過API使操作員能夠深入瞭解更廣泛的系統。

除了服務發現和執行狀況檢查之外,Consul還提供了一個整合的鍵/值儲存,用於配置和多資料中心支援。雖然可以為多個數據中心配置SmartStack,但中央ZooKeeper叢集將嚴重阻礙容錯部署。