日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、ZooKeeper注冊中心

Zookeeper 是 Apache Hadoop 的子項目,是一個樹型的目錄服務,支持變更推送,適合作為 Dubbo 服務的注冊中心,工業強度較高,可用于生產環境,推薦使用。

流程說明:

  • 服務提供者啟動時: 向 /dubbo/com.foo.BarService/providers 目錄下寫入自己的 URL 地址。
  • 服務消費者啟動時: 訂閱 /dubbo/com.foo.BarService/providers 目錄下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目錄下寫入自己的 URL 地址。
  • 監控中心啟動時: 訂閱 /dubbo/com.foo.BarService 目錄下的所有提供者和消費者 URL 地址。

支持以下功能:

  • 當提供者出現斷電等異常停機時,注冊中心能自動刪除提供者信息;
  • 當注冊中心重啟時,能自動恢復注冊數據,以及訂閱請求;
  • 當會話過期時,能自動恢復注冊數據,以及訂閱請求;
  • 當設置 <dubbo:registry check="false" /> 時,記錄失敗注冊和訂閱請求,后臺定時重試;
  • 可通過 <dubbo:registry group="dubbo" /> 設置 zookeeper 登錄信息;
  • 可通過 `` 設置 zookeeper 的根節點,不配置將使用默認的根節點;
  • 支持 * 號通配符 <dubbo:reference group="*" version="*" />,可訂閱服務的所有分組和所有版本的提供者。

作為 Dubbo 的老牌黃金搭檔 ZooKeeper,我們在單獨講解 Dubbo 時已經給大家分享過如何使用了,本文系 Spring Cloud Alibaba 系列文章,重點對象是 Nacos,所以 ZooKeeper 這里就不過多贅述了。

二、Nacos 注冊中心

Nacos 是 Alibaba 公司推出的開源工具,用于實現分布式系統的服務發現與配置管理。Nacos 是 Dubbo 生態系統中重要的注冊中心實現。

Nacos 官網:https://nacos.io/zh-cn/

Github:https://github.com/alibaba/nacos

預備工作

當您將 Nacos 整合到您的 Dubbo 工程之前,請確保后臺已經啟動 Nacos 服務。

快速上手

Dubbo 融合 Nacos 成為注冊中心的操作步驟非常簡單,大致步驟可分為“增加 Maven 依賴”和“配置注冊中心“。

依賴

核心依賴主要是 dubbo-registry-nacos 和 nacos-client。

<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-registry-nacos --> <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>2.7.7</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client --> <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>1.3.0</version> </dependency>

配置注冊中心

服務提供者和服務消費者只需要調整 address 屬性配置即可。

單機配置:

<!-- 使用 Nacos 注冊中心,單機版 --> <dubbo:registry address="nacos://127.0.0.1:8848"/> <!-- 或 --> <dubbo:registry protocol="nacos" address="127.0.0.1:2181"/>

集群配置:

使用 Nacos 注冊中心,集群版 --> <dubbo:registry address="nacos://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181"/> <!-- 或 --> <dubbo:registry protocol="nacos" address="192.168.10.101:2181,192.168.10.102:2181,192.168.10.103:2181"/>

隨后,重啟您的 Dubbo 應用,Dubbo 的服務提供和消費信息在 Nacos 控制臺中即可顯示。

Nacos和Zookeeper對比

主要平時用的較多是配置中心和服務注冊中心,所以也是結合這兩點功能做出對應的對比,主要比對集群模式。

以下僅僅整理了個人理解后的觀點,如有疑問歡迎咨詢討論。

1.Zookeeper

其實明白一點Zookeeper的功能主要是它的樹形節點來實現的。當有數據變化的時候或者節點過期的時候,會通過事件觸發通知對應的客戶端數據變化了,然后客戶端再請求zk獲取最新數據,采用push-pull來做數據更新。

ZK最重要的就是它的ZAB(消息廣播和崩潰恢復)協議了。
消息廣播: 集群中zk在數據更新的時候,通過leader節點將將消息廣播給其他follower節點,采用簡單的兩階段提交模式,先request->ack->commit,當超過一半的follower節點響應可以提交就更新代碼。

崩潰恢復: 當leader掛了,或者超半數follower投票得出leader不可用,那么會重新選舉,這段期間zk服務是不可用的。通過最新的 xid來選舉出新的leader,選舉出來后需要將新的leader中的數據更新給超過半數的follower節點才能對外提供服務。

2.Nacos

Nacos的配置中心和注冊中心實現的是兩套代碼,和Zk不同,

1.配置中心
Nacos和Zookeeper都可以作為配置中心,做一些可以實時變化的配置數據存儲,然后實時更新線上數據。

1.1 存儲和數據更新
Nacos:依賴Mysql數據庫做數據存儲,當有數據更新的時候,直接更新數據庫的數據,然后將數據更新的信息異步廣播給Nacos集群中所有服務節點數據變更,在由Nacos服務節點更新本地緩存,然后將通知客戶端節點數據變化。

Zookeeper:利用zk的樹型結構做數據存儲,當有數據更新的時候使用過半機制保證各個節點的數據一致性;然后通過zk的事件機制通知客戶端。

這里可以明顯發現差異:

服務器存儲位置不同,分別采用mysql和zk本身存儲
消息發送,一個有采用過半機制保持一致性,另外一個異步廣播,通過后臺線程重試保證。

2.注冊中心

Nacos:nacos支持兩種方式的注冊中心,持久化和非持久化存儲服務信息。

非持久直接存儲在nacos服務節點的內存中,并且服務節點間采用去中心化的思想,服務節點采用hash分片存儲注冊信息
持久化使用Raft協議選舉master節點,同樣采用過半機制將數據存儲在leader節點上
Zookeeper:利用zk的樹型結構做數據存儲,服務注冊和消費信息直接存儲在zk樹形節點上,集群下同樣采用過半機制保證服務節點間一致性

這里的差異:

nacos支持持久化和非持久化存儲即有點 AP和CP 分布式一致性的概念,nacos的CP-持久化更像貼合zk的模式(過半機制),默認非持久化采用內存存儲速度更快,而且分片存儲,不利點就是某個服務節點掛掉,可能出現部分時間調用失敗。因為服務調用本身就是實時的,持久化存儲起來應該意義不大,及時變化才是真理。

總結

以上是生活随笔為你收集整理的微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。