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

Consul vs. Serf

Consul vs. Serf

Serf是一個節點發現和編排工具,是迄今為止討論的唯一工具,它建立在最終一致的gossip模型上,沒有集中式伺服器。它提供了許多功能,包括組成員身份,故障檢測,事件廣播和查詢機制。但是,Serf不提供任何高階功能,例如服務發現,執行狀況檢查或鍵/值儲存。 Consul是一個提供所有這些功能的完整系統。

Consul中使用的內部gossip協議實際上由Serf庫提供支援:Consul利用成員資格和故障檢測功能,並在它們的基礎上新增服務發現。相比之下,Serf的發現功能處於節點級別,而Consul提供服務和節點級抽象。

Serf提供的健康檢查水平非常低,僅表明代理人是否還活著。 Consul對此進行了擴充套件,以提供豐富的執行狀況檢查系統,除了任意主機和服務級別檢查外,還可以處理活動。執行狀況檢查與中央目錄整合,運營商可以輕鬆查詢以深入瞭解叢集。

Serf提供的成員資格屬於節點級別,而Consul則側重於服務級別抽象,將單個節點對映到多個服務。這可以使用標籤在Serf中進行模擬,但它更加有限,並且不提供有用的查詢介面。 Consul還使用強一致的目錄,而Serf使用的是最終一致。

除了服務級別抽象和改進的執行狀況檢查之外,Consul還為多個數據中心提供鍵/值儲存和支援。 Serf可以在WAN上執行但效能下降。 Consul使用多個gossip池,因此可以保留LAN上的Serf效能,同時仍然可以使用Serf通過WAN來連線多個數據中心。

Consul在其用法方面具有主張,而Serf是一種更靈活和通用的工具。在CAP術語中,Consul使用CP體系結構,有利於可用性的一致性。 Serf是一個AP系統,犧牲了可用性的一致性。

這意味著如果中央伺服器無法形成法定人數,則Consul無法執行,而Serf將在幾乎所有情況下繼續執行。