注册中心—常见注册中心组件对比分析
原文作者:知了V笑
原文地址:微服務技術棧:常見注冊中心組件,對比分析
關于注冊中心原理,請先閱讀微服務注冊中心原理
目錄
一、Zookeeper組件
二、Eureka組件
三、Consul組件
四、Nacos組件
五、組件選擇
一、Zookeeper組件
1、基礎描述
ZooKeeper是非常經典的服務注冊中心中間件,在國內環境下,由于受到Dubbo框架的影響,大部分情況下認為Zookeeper是RPC服務框架下注冊中心最好選擇,隨著Dubbo框架的不斷開發優化,和各種注冊中心組件的誕生,即使是RPC框架,現在的注冊中心也逐步放棄了ZooKeeper。在常用的開發集群環境中,ZooKeeper依然起到十分重要的作用,Java體系中,大部分的集群環境都是依賴ZooKeeper管理服務的各個節點。
?
2、組件特點
?
從Zookeeper的數據結構特點看,并不是基于服務注冊而設計的,ZooKeeper提供的命名空間與文件系統的名稱空間非常相似,在數據結構上高度抽象為K-V格式,十分通用,說到這里不得不提一下Redis,也可以作為注冊中心使用,只是用的不多。ZooKeeper組件支持節點短暫存在,只要創建znode的會話處于活動狀態,這些znode就會存在,會話結束時,將刪除znode。Dubbo框架正是基于這個特點,服務啟動往Zookeeper注冊的就是臨時節點,需要定時發心跳到Zookeeper來續約節點,并允許服務下線時,將Zookeeper上相應的節點刪除,同時Zookeeper使用ZAB協議雖然保證了數據的強一致性。
二、Eureka組件
1、基礎描述
?
SpringCloud框架生態中最原生的深度結合組件,Eureka是Netflix開發的服務發現框架,基于REST的服務,主要用于服務注冊、管理、負載均衡和服務故障轉移。但是官方聲明在Eureka2.0版本停止維護,不建議使用。
2、組件特點
Eureka包含兩個組件:EurekaServer和EurekaClient。EurekaServer提供服務注冊服務,各個節點啟動后,會在EurekaServer中進行注冊,這樣EurekaServer中的服務注冊表中將會存儲所有可用服務節點的信息,服務節點的信息可以在界面中直觀的看到。Eureka允許在注冊服務的時候,自定義實現檢查自身狀態的是否健康的方法,這在服務實例能夠保持心跳上報的場景下,是一種比較好的體驗。EurekaClient是一個java客戶端,用于簡化與EurekaServer的交互,客戶端同時也就是一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。
三、Consul組件
1、基礎描述
?
Consul是用于服務發現和配置的工具。Consul是分布式的,高度可用的,并且具有極高的可伸縮性,而且開發使用都很簡便。它提供了一個功能齊全的控制面板,主要特點是:服務發現、健康檢查、鍵值存儲、安全服務通信、多數據中心、ServiceMesh。Consul在設計上把很多分布式服務治理上要用到的功能都包含在內了。
2、組件特點
Consul提供多個數據中心的支持,基于Fabio做負載均衡,每個數據中心內,都有客戶端和服務端的混合構成。預計有三到五臺服務端。可以在失敗和性能的可用性之間取得良好的平衡。數據中心中的所有節點都參與八卦協議。這意味著有一個八卦池,其中包含給定數據中心的所有節點。這有幾個目的:首先,不需要為客戶端配置服務器的地址;發現是自動完成的。其次,檢測節點故障的工作不是放在服務器上,而是分布式的。這使得故障檢測比天真的心跳方案更具可擴展性。第三,它被用作消息傳遞層,用于在諸如領導者選舉等重要事件發生時進行通知。
四、Nacos組件
1、基礎描述
Nacos致力于發現、配置和管理微服務。Nacos提供了一組簡單易用的特性集,幫助您實現動態服務發現、服務配置管理、服務及流量管理。Nacos更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構(例如微服務范式、云原生范式)的服務基礎設施。Nacos支持作為RPC注冊中心,例如:支持Dubbo框架;也具備微服務注冊中心的能力,例如:SpringCloud框架。
?
2、組件特點
?
Nacos在經過多年生產經驗后提煉出的數據模型,則是一種服務-集群-實例的三層模型。如上文所說,這樣基本可以滿足服務在所有場景下的數據存儲和管理,數據模型雖然相對復雜,但是并不強制使用數據結構的風格,大多數應用場景下,和Eureka數據模型是類似的。Nacos提供數據邏輯隔離模型,用戶賬號可以新建多個命名空間,每個命名空間對應一個客戶端實例,這個命名空間對應的注冊中心物理集群是可以根據規則進行路由的,這樣可以讓注冊中心內部的升級和遷移對用戶是無感知的。
五、組件選擇
如下注冊中心對比圖。
?
綜合上述幾種注冊中心對比,再從現在SpringCloud框架流行趨勢看,個人推薦后續微服務架構體系選擇Nacos組件,大致原因如下,社區活躍,經過大規模業務驗證,不但可以作為微服務注冊中心,也支持作RPC框架Dubbo的注冊中心,且有完善的中文文檔,總結下來就兩點:
- 通用中間件,省時;
- 文檔詳細,省心。
總結
以上是生活随笔為你收集整理的注册中心—常见注册中心组件对比分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 注册中心—注册中心原理
- 下一篇: 注册中心—组件—Eureka