溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

zookeeper注冊中心的對比是什么樣的

發(fā)布時間:2021-10-20 10:13:35 來源:億速云 閱讀:126 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān) zookeeper注冊中心的對比是什么樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

最近在學(xué)zookeeper 注冊中?   找到一份比較詳細(xì)的注冊中心對比 

簡單記一下:

1        ZooKeeper

Java開發(fā)的一個服務(wù)管理應(yīng)用. 是Hadoop項目的子項目. 動物園管理員. 是一個其他應(yīng)用的管理應(yīng)用, 負(fù)責(zé)協(xié)調(diào),調(diào)度,管理,配置等功能.

支持?jǐn)帱c恢復(fù), 會話恢復(fù), 配置服務(wù)項, 配置消費項, 通配信息配置等.

ZooKeeper是一個Java開發(fā)的應(yīng)用. 運行環(huán)境只需要JDK和JVM.

2        Multicast

廣播式注冊中心. 只要Provider和Consumer在同一個網(wǎng)段中即可實現(xiàn)服務(wù)的發(fā)布和訂閱.

局限性 : 只適合小型架構(gòu)或開發(fā)測試使用. 因為可能造成廣播風(fēng)暴. 網(wǎng)段內(nèi)超過5臺物理機(jī)同時發(fā)布服務(wù), 可能造成數(shù)據(jù)通訊問題, 無法實現(xiàn)快速的服務(wù)訂閱和應(yīng)用.

3        Redis

KV服務(wù)器注冊中心. KV服務(wù)器, 高速緩存服務(wù)器. 內(nèi)存型數(shù)據(jù)庫. NOSQL數(shù)據(jù)庫. 后期有課程詳細(xì)講解.

類似ZooKeeper注冊中心. Provider發(fā)布服務(wù)到Redis, Consumer從Redis中訂閱服務(wù).

優(yōu)勢: 高效.

缺陷: 數(shù)據(jù)描述相對簡單, 使用頻率相對較少. 沒有經(jīng)過大量測試, 穩(wěn)定性不確定.

4        Simple

就是Dubbo自定義的一個注冊中心. 減少三方依賴. 讓代碼依賴性降低, 耦合性降低.

只適合小型應(yīng)用和開發(fā)測試.

以下引用詳細(xì)解釋

Multicast 注冊中?
Multicast 注冊中?不需要啟動任何中?節(jié)點,只要?播地址?樣,就可以互相發(fā)現(xiàn)。
1. 提供?啟動時?播??的地址
2. 消費?啟動時?播訂閱請求
3. 提供?收到訂閱請求時,單播??的地址給訂閱者,如果設(shè)置了  unicast=false  ,則?播給訂閱者
4. 消費?收到提供?地址時,連接該地址進(jìn)? RPC 調(diào)?。
組播受?絡(luò)結(jié)構(gòu)限制,只適合?規(guī)模應(yīng)?或開發(fā)階段使?。組播地址段: 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 缺省使?單播發(fā)送提供者地址信息給消費者,如果?個機(jī)器上同時啟了多個消費者進(jìn)程,消費
者需聲明  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 的?項?,是?個樹型的?錄服務(wù),?持變更推送,適合作為 Dubbo 服務(wù)的注冊中
?,?業(yè)強度較?,可?于?產(chǎn)環(huán)境,并推薦使? 。
流程說明:
服務(wù)提供者啟動時: 向  /dubbo/com.foo.BarService/providers  ?錄下寫???的 URL 地址
服務(wù)消費者啟動時: 訂閱  /dubbo/com.foo.BarService/providers  ?錄下的提供者 URL 地址。并向
/dubbo/com.foo.BarService/consumers  ?錄下寫???的 URL 地址
監(jiān)控中?啟動時: 訂閱  /dubbo/com.foo.BarService  ?錄下的所有提供者和消費者 URL 地址。
?持以下功能:
當(dāng)提供者出現(xiàn)斷電等異常停機(jī)時,注冊中?能?動刪除提供者信息
當(dāng)注冊中?重啟時,能?動恢復(fù)注冊數(shù)據(jù),以及訂閱請求
當(dāng)會話過期時,能?動恢復(fù)注冊數(shù)據(jù),以及訂閱請求
當(dāng)設(shè)置  <dubbo:registry check="false" />  時,記錄失敗注冊和訂閱請求,后臺定時重試
可通過  <dubbo:registry username="admin" password="1234" />  設(shè)置 zookeeper 登錄信息
可通過  <dubbo:registry group="dubbo" />  設(shè)置 zookeeper 的根節(jié)點,不設(shè)置將使??根樹
?持  *  號通配符  <dubbo:reference group="*" version="*" />  ,可訂閱服務(wù)的所有分組和所有版本的提供者
使?
在 provider 和 consumer 中增加 zookeeper 客戶端 jar 包依賴:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>
或直接下載。
Dubbo ?持 zkclient 和 curator 兩種 Zookeeper 客戶端實現(xiàn):
 
使? zkclient 客戶端
從  2.2.0  版本開始缺省為 zkclient 實現(xiàn),以提升 zookeeper 客戶端的健狀性。zkclient 是 Datameer 開源的?個
Zookeeper 客戶端實現(xiàn)。
缺省配置:
<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 實現(xiàn)。Curator 是 Netflix 開源的?個 Zookeeper 客戶端實現(xiàn)。
如果需要改為 curator 實現(xiàn),請配置:
<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 單機(jī)配置:
<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 服務(wù)器,并將 Quick Start 中 Provider 和
Consumer ?的  conf/dubbo.properties  中的  dubbo.registry.addrss  的值改為  zookeeper://127.0.0.1:2181  即可使
?。
可靠性聲明
阿?內(nèi)部并沒有采? Zookeeper 做為注冊中?,?是使???實現(xiàn)的基于數(shù)據(jù)庫的注冊中?,即:Zookeeper 注冊中
?并沒有在阿?內(nèi)部?時間運?的可靠性保障,此 Zookeeper 橋接實現(xiàn)只為開源版本提供,其可靠性依賴于
Zookeeper 本身的可靠性。
兼容性聲明
因  2.0.8  最初設(shè)計的 zookeeper 存儲結(jié)構(gòu)不能擴(kuò)充不同類型的數(shù)據(jù), 2.0.9  版本做了調(diào)整,所以不兼容,需全部改
?  2.0.9  版本才?,以后的版本會保持兼容  2.0.9  。 2.2.0  版本改為基于 zkclient 實現(xiàn),需增加 zkclient 的依賴
包, 2.3.0  版本增加了基于 curator 的實現(xiàn),作為可選實現(xiàn)策略。
. 建議使?  2.3.3  以上版本的 zookeeper 注冊中?客戶端 ?

Redis 注冊中?
基于 Redis 實現(xiàn)的注冊中? 。
使? Redis 的 Key/Map 結(jié)構(gòu)存儲數(shù)據(jù)結(jié)構(gòu):
主 Key 為服務(wù)名和類型
Map 中的 Key 為 URL 地址
Map 中的 Value 為過期時間,?于判斷臟數(shù)據(jù),臟數(shù)據(jù)由監(jiān)控中?刪除
使? Redis 的 Publish/Subscribe 事件通知數(shù)據(jù)變更:
通過事件的值區(qū)分事件類型: register  ,  unregister  ,  subscribe  ,  unsubscribe
普通消費者直接訂閱指定服務(wù)提供者的 Key,只會收到指定服務(wù)的  register  ,  unregister  事件
監(jiān)控中?通過  psubscribe  功能訂閱  /dubbo/*  ,會收到所有服務(wù)的所有變更事件
調(diào)?過程:
1. 服務(wù)提供?啟動時,向  Key:/dubbo/com.foo.BarService/providers  下,添加當(dāng)前提供者的地址
2. 并向  Channel:/dubbo/com.foo.BarService/providers  發(fā)送  register  事件
3. 服務(wù)消費?啟動時,從  Channel:/dubbo/com.foo.BarService/providers  訂閱  register  和  unregister  事件
4. 并向  Key:/dubbo/com.foo.BarService/providers  下,添加當(dāng)前消費者的地址
5. 服務(wù)消費?收到  register  和  unregister  事件后,從  Key:/dubbo/com.foo.BarService/providers  下獲取提供者地
址列表
6. 服務(wù)監(jiān)控中?啟動時,從  Channel:/dubbo/*  訂閱  register  和  unregister  ,以及  subscribe  和 unsubsribe  事件
7. 服務(wù)監(jiān)控中?收到  register  和  unregister  事件后,從  Key:/dubbo/com.foo.BarService/providers  下獲取提供者
地址列表
8. 服務(wù)監(jiān)控中?收到  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" />  設(shè)置 redis 中 key 的前綴,缺省為  dubbo  。
可通過  <dubbo:registry cluster="replicate" />  設(shè)置 redis 集群策略,缺省為  failover  :
failover  : 只寫?和讀取任意?臺,失敗時重試另?臺,需要服務(wù)器端??配置數(shù)據(jù)同步
replicate  : 在客戶端同時寫?所有服務(wù)器,只讀取單臺,服務(wù)器端不需要同步,注冊中?集群增?,性能壓
?也會更?
可靠性聲明
阿?內(nèi)部并沒有采? Redis 做為注冊中?,?是使???實現(xiàn)的基于數(shù)據(jù)庫的注冊中?,即:Redis 注冊中?并沒有在
阿?內(nèi)部?時間運?的可靠性保障,此 Redis 橋接實現(xiàn)只為開源版本提供,其可靠性依賴于 Redis 本身的可靠性。
安裝
安裝?式參?: Redis安裝?冊,只需搭?個原?的 Redis 服務(wù)器,并將 Quick Start 中 Provider 和 Consumer ?的
conf/dubbo.properties  中的  dubbo.registry.addrss  的值改為  redis://127.0.0.1:6379  即可使?。
. Redis 是?個?效的 KV 存儲服務(wù)器 ?
. 從  2.1.0  版本開始?持 ?
. Redis 過期數(shù)據(jù)通過?跳的?式檢測臟數(shù)據(jù),服務(wù)器時間必須同步,并且對服務(wù)器有?定壓?,否則過期檢測
會不準(zhǔn)確 ?


Simple 注冊中?
Simple 注冊中?本身就是?個普通的 Dubbo 服務(wù),可以減少第三?依賴,使整體通訊?式?致。
配置
將 Simple 注冊中?暴露成 Dubbo 服務(wù):
<?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">
<!-- 當(dāng)前應(yīng)?信息配置 -->
<dubbo:application name="simple-registry" />
<!-- 暴露服務(wù)協(xié)議配置 -->
<dubbo:protocol port="9090" />
<!-- 暴露服務(wù)配置 -->
<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>
<!-- 簡單注冊中?實現(xiàn),可??擴(kuò)展實現(xiàn)集群和狀態(tài)同步 -->
<bean id="registryService" class="com.alibaba.dubbo.registry.simple.SimpleRegistryService" />
</beans>
引? Simple Registry 服務(wù):
<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  只是簡單實現(xiàn),不?持集群,可作為?定義注冊中?的參考,但不適合直接?于?產(chǎn)環(huán)境。
 

Telnet 命令參考?冊
從  2.0.5  版本開始,dubbo 開始?持通過 telnet 命令來鏡像服務(wù)治理。
使?
telnet localhost 20880
或者:
echo status | nc -i 1 localhost 20880
status命令所檢查的資源也可以擴(kuò)展,參?:擴(kuò)展參考?冊。
命令
以下展示了 dubbo 內(nèi)建的 telnet 命令的說明和?法,此外,telnet 命令還?持?戶??擴(kuò)展,參?:Telnet 命令擴(kuò)展。
ls
1.  ls  : 顯示服務(wù)列表
2.  ls -l  : 顯示服務(wù)詳細(xì)信息列表
3.  ls XxxService  : 顯示服務(wù)的?法列表
4.  ls -l XxxService  : 顯示服務(wù)的?法詳細(xì)信息列表
ps
1.  ps  : 顯示服務(wù)端?列表
2.  ps -l  : 顯示服務(wù)地址列表
3.  ps 20880  : 顯示端?上的連接信息
4.  ps -l 20880  : 顯示端?上的連接詳細(xì)信息
cd
1.  cd XxxService  : 改變?nèi)笔》?wù),當(dāng)設(shè)置了缺省服務(wù),凡是需要輸?服務(wù)名作為參數(shù)的命令,都可以省略服務(wù)參數(shù)
2.  cd /  : 取消缺省服務(wù)
pwd
pwd  : 顯示當(dāng)前缺省服務(wù)
trace
1.  trace XxxService  : 跟蹤 1 次服務(wù)任意?法的調(diào)?情況
2.  trace XxxService 10  : 跟蹤 10 次服務(wù)任意?法的調(diào)?情況
3.  trace XxxService xxxMethod  : 跟蹤 1 次服務(wù)?法的調(diào)?情況
4.  trace XxxService xxxMethod 10  : 跟蹤 10 次服務(wù)?法的調(diào)?情況
11 telnet 命令參考?冊
145
count
1.  count XxxService  : 統(tǒng)計 1 次服務(wù)任意?法的調(diào)?情況
2.  count XxxService 10  : 統(tǒng)計 10 次服務(wù)任意?法的調(diào)?情況
3.  count XxxService xxxMethod  : 統(tǒng)計 1 次服務(wù)?法的調(diào)?情況
4.  count XxxService xxxMethod 10  : 統(tǒng)計 10 次服務(wù)?法的調(diào)?情況
invoke
1.  invoke XxxService.xxxMethod({"prop": "value"})  : 調(diào)?服務(wù)的?法
2.  invoke xxxMethod({"prop": "value"})  : 調(diào)?服務(wù)的?法(?動查找包含此?法的服務(wù))
status
1.  status  : 顯示匯總狀態(tài),該狀態(tài)將匯總所有資源的狀態(tài),當(dāng)全部 OK 時則顯示 OK,只要有?個 ERROR 則顯示
ERROR,只要有?個 WARN 則顯示 WARN
2.  status -l  : 顯示狀態(tài)列表
log
1.  log debug  : 修改 dubbo logger 的?志級別
2.  log 100  : 查看 file logger 的最后 100 字符的?志
help
1.  help  : 顯示 telnet 命幫助信息
2.  help xxx  : 顯示xxx命令的詳細(xì)幫助信息
clear
1.  clear  : 清除屏幕上的內(nèi)容
2.  clear 100  : 清除屏幕上的指定?數(shù)的內(nèi)容
exit
exit  : 退出當(dāng)前 telnet 命令?
.  2.0.6  以上版本?持 ?

關(guān)于 zookeeper注冊中心的對比是什么樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI