您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關 zookeeper注冊中心的對比是什么樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
最近在學zookeeper 注冊中? 找到一份比較詳細的注冊中心對比
簡單記一下:
Java開發的一個服務管理應用. 是Hadoop項目的子項目. 動物園管理員. 是一個其他應用的管理應用, 負責協調,調度,管理,配置等功能.
支持斷點恢復, 會話恢復, 配置服務項, 配置消費項, 通配信息配置等.
ZooKeeper是一個Java開發的應用. 運行環境只需要JDK和JVM.
廣播式注冊中心. 只要Provider和Consumer在同一個網段中即可實現服務的發布和訂閱.
局限性 : 只適合小型架構或開發測試使用. 因為可能造成廣播風暴. 網段內超過5臺物理機同時發布服務, 可能造成數據通訊問題, 無法實現快速的服務訂閱和應用.
KV服務器注冊中心. KV服務器, 高速緩存服務器. 內存型數據庫. NOSQL數據庫. 后期有課程詳細講解.
類似ZooKeeper注冊中心. Provider發布服務到Redis, Consumer從Redis中訂閱服務.
優勢: 高效.
缺陷: 數據描述相對簡單, 使用頻率相對較少. 沒有經過大量測試, 穩定性不確定.
就是Dubbo自定義的一個注冊中心. 減少三方依賴. 讓代碼依賴性降低, 耦合性降低.
只適合小型應用和開發測試.
以下引用詳細解釋
Multicast 注冊中?
Multicast 注冊中?不需要啟動任何中?節點,只要?播地址?樣,就可以互相發現。
1. 提供?啟動時?播??的地址
2. 消費?啟動時?播訂閱請求
3. 提供?收到訂閱請求時,單播??的地址給訂閱者,如果設置了 unicast=false ,則?播給訂閱者
4. 消費?收到提供?地址時,連接該地址進? RPC 調?。
組播受?絡結構限制,只適合?規模應?或開發階段使?。組播地址段: 224.0.0.0 - 239.255.255.255
配置
<dubbo:registry address="multicast://224.5.6.7:1234" />
或
<dubbo:registry protocol="multicast" address="224.5.6.7:1234" />
為了減少?播量,Dubbo 缺省使?單播發送提供者地址信息給消費者,如果?個機器上同時啟了多個消費者進程,消費
者需聲明 unicast=false ,否則只會有?個消費者能收到消息:
<dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" />
或
<dubbo:registry protocol="multicast" address="224.5.6.7:1234">
<dubbo:parameter key="unicast" value="false" />
</dubbo:registry>
zookeeper 注冊中?
Zookeeper 是 Apacahe 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 username="admin" password="1234" /> 設置 zookeeper 登錄信息
可通過 <dubbo:registry group="dubbo" /> 設置 zookeeper 的根節點,不設置將使??根樹
?持 * 號通配符 <dubbo:reference group="*" version="*" /> ,可訂閱服務的所有分組和所有版本的提供者
使?
在 provider 和 consumer 中增加 zookeeper 客戶端 jar 包依賴:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>
或直接下載。
Dubbo ?持 zkclient 和 curator 兩種 Zookeeper 客戶端實現:
使? zkclient 客戶端
從 2.2.0 版本開始缺省為 zkclient 實現,以提升 zookeeper 客戶端的健狀性。zkclient 是 Datameer 開源的?個
Zookeeper 客戶端實現。
缺省配置:
<dubbo:registry ... client="zkclient" />
或:
dubbo.registry.client=zkclient
或:
zookeeper://10.20.153.10:2181?client=zkclient
需依賴或直接下載:
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
使? curator 客戶端
從 2.3.0 版本開始?持可選 curator 實現。Curator 是 Netflix 開源的?個 Zookeeper 客戶端實現。
如果需要改為 curator 實現,請配置:
<dubbo:registry ... client="curator" />
或:
dubbo.registry.client=curator
或:
zookeeper://10.20.153.10:2181?client=curator
需依賴或直接下載:
<dependency>
<groupId>com.netflix.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>1.1.10</version>
</dependency>
Zookeeper 單機配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
或:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
Zookeeper 集群配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
或:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
同? Zookeeper,分成多組注冊中?:
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />
zookeeper 安裝
安裝?式參?: Zookeeper安裝?冊,只需搭?個原?的 Zookeeper 服務器,并將 Quick Start 中 Provider 和
Consumer ?的 conf/dubbo.properties 中的 dubbo.registry.addrss 的值改為 zookeeper://127.0.0.1:2181 即可使
?。
可靠性聲明
阿?內部并沒有采? Zookeeper 做為注冊中?,?是使???實現的基于數據庫的注冊中?,即:Zookeeper 注冊中
?并沒有在阿?內部?時間運?的可靠性保障,此 Zookeeper 橋接實現只為開源版本提供,其可靠性依賴于
Zookeeper 本身的可靠性。
兼容性聲明
因 2.0.8 最初設計的 zookeeper 存儲結構不能擴充不同類型的數據, 2.0.9 版本做了調整,所以不兼容,需全部改
? 2.0.9 版本才?,以后的版本會保持兼容 2.0.9 。 2.2.0 版本改為基于 zkclient 實現,需增加 zkclient 的依賴
包, 2.3.0 版本增加了基于 curator 的實現,作為可選實現策略。
. 建議使? 2.3.3 以上版本的 zookeeper 注冊中?客戶端 ?
Redis 注冊中?
基于 Redis 實現的注冊中? 。
使? Redis 的 Key/Map 結構存儲數據結構:
主 Key 為服務名和類型
Map 中的 Key 為 URL 地址
Map 中的 Value 為過期時間,?于判斷臟數據,臟數據由監控中?刪除
使? Redis 的 Publish/Subscribe 事件通知數據變更:
通過事件的值區分事件類型: register , unregister , subscribe , unsubscribe
普通消費者直接訂閱指定服務提供者的 Key,只會收到指定服務的 register , unregister 事件
監控中?通過 psubscribe 功能訂閱 /dubbo/* ,會收到所有服務的所有變更事件
調?過程:
1. 服務提供?啟動時,向 Key:/dubbo/com.foo.BarService/providers 下,添加當前提供者的地址
2. 并向 Channel:/dubbo/com.foo.BarService/providers 發送 register 事件
3. 服務消費?啟動時,從 Channel:/dubbo/com.foo.BarService/providers 訂閱 register 和 unregister 事件
4. 并向 Key:/dubbo/com.foo.BarService/providers 下,添加當前消費者的地址
5. 服務消費?收到 register 和 unregister 事件后,從 Key:/dubbo/com.foo.BarService/providers 下獲取提供者地
址列表
6. 服務監控中?啟動時,從 Channel:/dubbo/* 訂閱 register 和 unregister ,以及 subscribe 和 unsubsribe 事件
7. 服務監控中?收到 register 和 unregister 事件后,從 Key:/dubbo/com.foo.BarService/providers 下獲取提供者
地址列表
8. 服務監控中?收到 subscribe 和 unsubsribe 事件后,從 Key:/dubbo/com.foo.BarService/consumers 下獲取消費
者地址列表
配置
<dubbo:registry address="redis://10.20.153.10:6379" />
或
<dubbo:registry address="redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12:6379" />
或
<dubbo:registry protocol="redis" address="10.20.153.10:6379" />
或
<dubbo:registry protocol="redis" address="10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379" />
選項
可通過 <dubbo:registry group="dubbo" /> 設置 redis 中 key 的前綴,缺省為 dubbo 。
可通過 <dubbo:registry cluster="replicate" /> 設置 redis 集群策略,缺省為 failover :
failover : 只寫?和讀取任意?臺,失敗時重試另?臺,需要服務器端??配置數據同步
replicate : 在客戶端同時寫?所有服務器,只讀取單臺,服務器端不需要同步,注冊中?集群增?,性能壓
?也會更?
可靠性聲明
阿?內部并沒有采? Redis 做為注冊中?,?是使???實現的基于數據庫的注冊中?,即:Redis 注冊中?并沒有在
阿?內部?時間運?的可靠性保障,此 Redis 橋接實現只為開源版本提供,其可靠性依賴于 Redis 本身的可靠性。
安裝
安裝?式參?: Redis安裝?冊,只需搭?個原?的 Redis 服務器,并將 Quick Start 中 Provider 和 Consumer ?的
conf/dubbo.properties 中的 dubbo.registry.addrss 的值改為 redis://127.0.0.1:6379 即可使?。
. Redis 是?個?效的 KV 存儲服務器 ?
. 從 2.1.0 版本開始?持 ?
. Redis 過期數據通過?跳的?式檢測臟數據,服務器時間必須同步,并且對服務器有?定壓?,否則過期檢測
會不準確 ?
Simple 注冊中?
Simple 注冊中?本身就是?個普通的 Dubbo 服務,可以減少第三?依賴,使整體通訊?式?致。
配置
將 Simple 注冊中?暴露成 Dubbo 服務:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans
/spring-beans-2.5.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xs
d">
<!-- 當前應?信息配置 -->
<dubbo:application name="simple-registry" />
<!-- 暴露服務協議配置 -->
<dubbo:protocol port="9090" />
<!-- 暴露服務配置 -->
<dubbo:service interface="com.alibaba.dubbo.registry.RegistryService" ref="registryService" registry="N/A"
ondisconnect="disconnect" callbacks="1000">
<dubbo:method name="subscribe"><dubbo:argument index="1" callback="true" /></dubbo:method>
<dubbo:method name="unsubscribe"><dubbo:argument index="1" callback="false" /></dubbo:method>
</dubbo:service>
<!-- 簡單注冊中?實現,可??擴展實現集群和狀態同步 -->
<bean id="registryService" class="com.alibaba.dubbo.registry.simple.SimpleRegistryService" />
</beans>
引? Simple Registry 服務:
<dubbo:registry address="127.0.0.1:9090" />
或者:
<dubbo:service interface="com.alibaba.dubbo.registry.RegistryService" group="simple" version="1.0.0" ... >
或者:
<dubbo:registry address="127.0.0.1:9090" group="simple" version="1.0.0" />
適?性說明
此 SimpleRegistryService 只是簡單實現,不?持集群,可作為?定義注冊中?的參考,但不適合直接?于?產環境。
Telnet 命令參考?冊
從 2.0.5 版本開始,dubbo 開始?持通過 telnet 命令來鏡像服務治理。
使?
telnet localhost 20880
或者:
echo status | nc -i 1 localhost 20880
status命令所檢查的資源也可以擴展,參?:擴展參考?冊。
命令
以下展示了 dubbo 內建的 telnet 命令的說明和?法,此外,telnet 命令還?持?戶??擴展,參?:Telnet 命令擴展。
ls
1. ls : 顯示服務列表
2. ls -l : 顯示服務詳細信息列表
3. ls XxxService : 顯示服務的?法列表
4. ls -l XxxService : 顯示服務的?法詳細信息列表
ps
1. ps : 顯示服務端?列表
2. ps -l : 顯示服務地址列表
3. ps 20880 : 顯示端?上的連接信息
4. ps -l 20880 : 顯示端?上的連接詳細信息
cd
1. cd XxxService : 改變缺省服務,當設置了缺省服務,凡是需要輸?服務名作為參數的命令,都可以省略服務參數
2. cd / : 取消缺省服務
pwd
pwd : 顯示當前缺省服務
trace
1. trace XxxService : 跟蹤 1 次服務任意?法的調?情況
2. trace XxxService 10 : 跟蹤 10 次服務任意?法的調?情況
3. trace XxxService xxxMethod : 跟蹤 1 次服務?法的調?情況
4. trace XxxService xxxMethod 10 : 跟蹤 10 次服務?法的調?情況
11 telnet 命令參考?冊
145
count
1. count XxxService : 統計 1 次服務任意?法的調?情況
2. count XxxService 10 : 統計 10 次服務任意?法的調?情況
3. count XxxService xxxMethod : 統計 1 次服務?法的調?情況
4. count XxxService xxxMethod 10 : 統計 10 次服務?法的調?情況
invoke
1. invoke XxxService.xxxMethod({"prop": "value"}) : 調?服務的?法
2. invoke xxxMethod({"prop": "value"}) : 調?服務的?法(?動查找包含此?法的服務)
status
1. status : 顯示匯總狀態,該狀態將匯總所有資源的狀態,當全部 OK 時則顯示 OK,只要有?個 ERROR 則顯示
ERROR,只要有?個 WARN 則顯示 WARN
2. status -l : 顯示狀態列表
log
1. log debug : 修改 dubbo logger 的?志級別
2. log 100 : 查看 file logger 的最后 100 字符的?志
help
1. help : 顯示 telnet 命幫助信息
2. help xxx : 顯示xxx命令的詳細幫助信息
clear
1. clear : 清除屏幕上的內容
2. clear 100 : 清除屏幕上的指定?數的內容
exit
exit : 退出當前 telnet 命令?
. 2.0.6 以上版本?持 ?
關于 zookeeper注冊中心的對比是什么樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。