您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Dubbo怎么配置注冊(cè)中心”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Dubbo怎么配置注冊(cè)中心”吧!
注冊(cè)中心可以更高效的管理系統(tǒng)的服務(wù):比如服務(wù)接口的發(fā)布、自動(dòng)剔除無(wú)效的服務(wù)、自動(dòng)恢復(fù)服務(wù)等。
Dubbo 支持五種注冊(cè)中心:Multicast、Nacos(推薦)、ZooKeeper(推薦) 、Redis、Simple。
Multicast 注冊(cè)中心不需要啟動(dòng)任何中心節(jié)點(diǎn),只要廣播地址一樣,就可以互相發(fā)現(xiàn)。
提供方啟動(dòng)時(shí)廣播自己的地址
消費(fèi)方啟動(dòng)時(shí)廣播訂閱請(qǐng)求
提供方收到訂閱請(qǐng)求時(shí),單播自己的地址給訂閱者,如果設(shè)置了 unicast=false
,則廣播給訂閱者
消費(fèi)方收到提供方地址時(shí),連接該地址進(jìn)行 RPC 調(diào)用。
組播受網(wǎng)絡(luò)結(jié)構(gòu)限制,只適合小規(guī)模應(yīng)用或開(kāi)發(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.register.address=multicast://224.5.6.7:1234
為了減少?gòu)V播量,Dubbo 缺省使用單播發(fā)送提供者地址信息給消費(fèi)者,如果一個(gè)機(jī)器上同時(shí)啟了多個(gè)消費(fèi)者進(jìn)程,消費(fèi)者需聲明 unicast=false
,否則只會(huì)有一個(gè)消費(fèi)者能收到消息。
當(dāng)服務(wù)者和消費(fèi)者運(yùn)行在同一臺(tái)機(jī)器上,消費(fèi)者同樣需要聲明unicast=false
,否則消費(fèi)者無(wú)法收到消息,導(dǎo)致 No provider available for the service 異常。
<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>
Apache ZooKeeper 是一個(gè)開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)組件,是 Hadoop 和 Hbase 的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。適合作為 Dubbo 服務(wù)的注冊(cè)中心,工業(yè)強(qiáng)度較高,可用于生產(chǎn)環(huán)境,推薦使用。
在微服務(wù)項(xiàng)目開(kāi)發(fā)中 ZooKeeper 主要的角色是當(dāng)做服務(wù)注冊(cè)中心存在,我們將編寫(xiě)好的服務(wù)注冊(cè)至 ZooKeeper 即可。
流程說(shuō)明:
服務(wù)提供者啟動(dòng)時(shí): 向 /dubbo/com.foo.BarService/providers
目錄下寫(xiě)入自己的 URL 地址。
服務(wù)消費(fèi)者啟動(dòng)時(shí): 訂閱 /dubbo/com.foo.BarService/providers
目錄下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers
目錄下寫(xiě)入自己的 URL 地址。
監(jiān)控中心啟動(dòng)時(shí): 訂閱 /dubbo/com.foo.BarService
目錄下的所有提供者和消費(fèi)者 URL 地址。
支持以下功能:
當(dāng)提供者出現(xiàn)斷電等異常停機(jī)時(shí),注冊(cè)中心能自動(dòng)刪除提供者信息;
當(dāng)注冊(cè)中心重啟時(shí),能自動(dòng)恢復(fù)注冊(cè)數(shù)據(jù),以及訂閱請(qǐng)求;
當(dāng)會(huì)話過(guò)期時(shí),能自動(dòng)恢復(fù)注冊(cè)數(shù)據(jù),以及訂閱請(qǐng)求;
當(dāng)設(shè)置 <dubbo:registry check="false" />
時(shí),記錄失敗注冊(cè)和訂閱請(qǐng)求,后臺(tái)定時(shí)重試;
可通過(guò) <dubbo:registry username="admin" password="1234" />
設(shè)置 zookeeper 登錄信息;
可通過(guò) <dubbo:registry group="dubbo" />
設(shè)置 zookeeper 的根節(jié)點(diǎn),不配置將使用默認(rèn)的根節(jié)點(diǎn);
支持 *
號(hào)通配符 <dubbo:reference group="*" version="*" />
,可訂閱服務(wù)的所有分組和所有版本的提供者。
當(dāng)您將 ZooKeeper 整合到您的 Dubbo 工程之前,請(qǐng)確保后臺(tái)已經(jīng)啟動(dòng) ZooKeeper 服務(wù)。
Dubbo 融合 ZooKeeper 成為注冊(cè)中心的操作步驟非常簡(jiǎn)單,大致步驟可分為“增加 Maven 依賴”和“配置注冊(cè)中心“。
在 provider 和 consumer 中增加 zookeeper 客戶端 jar 包依賴:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.1</version> </dependency>
Dubbo 支持 zkclient 和 curator 兩種 Zookeeper 客戶端實(shí)現(xiàn):
注意:在 2.7.x 的版本中已經(jīng)移除了 zkclient 的實(shí)現(xiàn),如果要使用 zkclient 客戶端,需要自行拓展。
所以,我們還需要在 provider 和 consumer 中增加 curator 客戶端 jar 包依賴:
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>5.1.0</version> </dependency>
注意:?jiǎn)为?dú)添加 zookeeper 和 curator 依賴需要注意版本之間是否有沖突,較為麻煩。
所以,一勞永逸的辦法就是添加 Apache Dubbo 給定的一個(gè)已關(guān)聯(lián)好的依賴:
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>2.7.4.1</version> <type>pom</type> </dependency>
ZooKeeper 單機(jī)配置:
<dubbo:registry address="zookeeper://191.168.10.101:2181" />
或:
<dubbo:registry protocol="zookeeper" address="191.168.10.101:2181" />
或:
dubbo.register.address=zookeeper://192.168.10.101:2181
或:
dubbo.register.protocol=zookeeper dubbo.register.address=192.168.10.101:2181
ZooKeeper 集群配置:
<dubbo:registry address="zookeeper://191.168.10.101:2181?backup=191.168.10.102:2181,191.168.10.103:2181" />
或:
<dubbo:registry protocol="zookeeper" address="191.168.10.101:2181,191.168.10.102:2181,191.168.10.103:2181" />
或:
dubbo.register.address=zookeeper://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181
或:
dubbo.register.protocol=zookeeper dubbo.register.address=192.168.10.101:2181,192.168.10.102:2181,192.168.10.103:2181
Nacos 是 Alibaba 公司推出的開(kāi)源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置管理。Nacos 是 Dubbo 生態(tài)系統(tǒng)中重要的注冊(cè)中心實(shí)現(xiàn),其中 dubbo-registry-nacos 則是 Dubbo 融合 Nacos 注冊(cè)中心的實(shí)現(xiàn),推薦使用。
Nacos 官網(wǎng):https://nacos.io/zh-cn/
Github:https://github.com/alibaba/nacos
當(dāng)您將 Nacos 整合到您的 Dubbo 工程之前,請(qǐng)確保后臺(tái)已經(jīng)啟動(dòng) Nacos 服務(wù)。
Dubbo 融合 Nacos 成為注冊(cè)中心的操作步驟非常簡(jiǎn)單,大致步驟可分為“增加 Maven 依賴”和“配置注冊(cè)中心“。
核心依賴主要是 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.4.1</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.3.1</version> </dependency>
服務(wù)提供者和服務(wù)消費(fèi)者只需要調(diào)整 address
屬性配置即可。
單機(jī)配置:
<!-- 使用 Nacos 注冊(cè)中心,單機(jī)版 --> <dubbo:registry address="nacos://127.0.0.1:8848"/> <!-- 或 --> <dubbo:registry protocol="nacos" address="127.0.0.1:2181"/>
或:
dubbo.register.address=nacos://192.168.10.101:8848
或:
dubbo.register.protocol=nacos dubbo.register.address=192.168.10.101:8848
集群配置:
<!-- 使用 Nacos 注冊(cè)中心,集群版 --> <dubbo:registry address="nacos://192.168.10.101:8848?backup=192.168.10.102:8848,192.168.10.103:8848"/> <!-- 或 --> <dubbo:registry protocol="nacos" address="192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848"/>
或:
dubbo.register.address=nacos://192.168.10.101:8848
或:
dubbo.register.protocol=nacos dubbo.register.address=192.168.10.101:8848,192.168.10.102:8848,192.168.10.103:8848
隨后,重啟您的 Dubbo 應(yīng)用,Dubbo 的服務(wù)提供和消費(fèi)信息在 Nacos 控制臺(tái)中即可顯示。
如圖所示,服務(wù)名前綴為 providers:
的信息為服務(wù)提供者的元信息,consumers:
則代表服務(wù)消費(fèi)者的元信息。點(diǎn)擊“詳情”可查看服務(wù)狀態(tài)詳情:
在集群負(fù)載均衡時(shí),Dubbo 提供了多種均衡策略,缺省為 random
隨機(jī)調(diào)用,也可以自行擴(kuò)展負(fù)載均衡策略。
隨機(jī),按權(quán)重設(shè)置隨機(jī)概率。
在一個(gè)截面上碰撞的概率高,但調(diào)用量越大分布越均勻,而且按概率使用權(quán)重后也比較均勻,有利于動(dòng)態(tài)調(diào)整提供者權(quán)重。
輪詢,按公約后的權(quán)重設(shè)置輪詢比率。
存在慢的提供者累積請(qǐng)求的問(wèn)題,比如:第二臺(tái)機(jī)器很慢,但沒(méi)掛,當(dāng)請(qǐng)求調(diào)到第二臺(tái)時(shí)就卡在那,久而久之,所有請(qǐng)求都卡在調(diào)到第二臺(tái)上。
最少活躍調(diào)用數(shù),ping 值(延遲低)的調(diào)用,相同延遲的情況下隨機(jī)。
使慢的提供者收到更少請(qǐng)求,因?yàn)樵铰奶峁┱叩恼{(diào)用前后計(jì)數(shù)差會(huì)越大。
一致性 Hash,相同參數(shù)的請(qǐng)求總是發(fā)到同一提供者。
當(dāng)某一臺(tái)提供者掛時(shí),原本發(fā)往該提供者的請(qǐng)求,基于虛擬節(jié)點(diǎn),平攤到其它提供者,不會(huì)引起劇烈變動(dòng)。
算法參見(jiàn):http://en.wikipedia.org/wiki/Consistent_hashing
缺省只對(duì)第一個(gè)參數(shù) Hash,如果要修改,請(qǐng)配置 <dubbo:parameter key="hash.arguments" value="0,1" />
缺省用 160 份虛擬節(jié)點(diǎn),如果要修改,請(qǐng)配置 <dubbo:parameter key="hash.nodes" value="320" />
一般在項(xiàng)目中不會(huì)在代碼層面指定權(quán)重,而是通過(guò)監(jiān)控中心(dubbo-admin)對(duì)服務(wù)動(dòng)態(tài)的指定權(quán)重,官方文檔:http://dubbo.apache.org/zh-cn/docs/admin/introduction.html
服務(wù)端服務(wù)級(jí)別
<dubbo:service interface="..." loadbalance="roundrobin" weight="100" />
客戶端服務(wù)級(jí)別
<dubbo:reference interface="..." loadbalance="roundrobin" />
服務(wù)端方法級(jí)別
<dubbo:service interface="..." weight="100"> <dubbo:method name="..." loadbalance="roundrobin"/> </dubbo:service>
客戶端方法級(jí)別
<dubbo:reference interface="..."> <dubbo:method name="..." loadbalance="roundrobin"/> </dubbo:reference>
dubbo: provider: loadbalance: roundrobin weight: 100 consumer: loadbalance: roundrobin
@Service(loadbalance = "roundrobin", weight = 100) @Reference(loadbalance = "roundrobin")
Dubbo 2.6 版本以及以前我們是通過(guò)一個(gè)war
包,將其部署在tomcat
下,啟動(dòng)服務(wù)器訪問(wèn)war
包項(xiàng)目即可,界面效果如下。
Dubbo 2.7 版本以后管理控制臺(tái)結(jié)構(gòu)上采取了前后端分離的方式,前端使用 Vue 和 Vuetify 分別作為 Javascript 框架和 UI 框架,后端采用 Spring Boot 框架。既可以按照標(biāo)準(zhǔn)的 Maven 方式進(jìn)行打包,部署,也可以采用前后端分離的部署方式,方便開(kāi)發(fā),功能上,目前具備了服務(wù)查詢,服務(wù)治理(包括Dubbo2.7中新增的治理規(guī)則)以及服務(wù)測(cè)試三部分內(nèi)容,最終效果如下:
使用 git 將項(xiàng)目克隆至本地,打包啟動(dòng)訪問(wèn)或者導(dǎo)入 IDE 啟動(dòng)訪問(wèn)
git clone https://github.com/apache/dubbo-admin.git cd dubbo-admin mvn clean package -Dmaven.test.skip=true cd dubbo-admin-distribution/target java -jar dubbo-admin-0.2.0-SNAPSHOT.jar
項(xiàng)目訪問(wèn)地址:http://localhost:8080
訪問(wèn):https://github.com/apache/dubbo-admin 將項(xiàng)目下載至本地,打包啟動(dòng)訪問(wèn)或者導(dǎo)入 IDE 啟動(dòng)訪問(wèn)。
cd dubbo-admin-ui npm install npm run dev
cd dubbo-admin-server mvn clean package -Dmaven.test.skip=true cd target java -jar dubbo-admin-server-0.2.0-SNAPSHOT.jar
運(yùn)行dubbo admin server
dubbo admin server
是一個(gè)標(biāo)準(zhǔn)的 Spring Boot 項(xiàng)目,可以在任何 Java IDE 中運(yùn)行它
運(yùn)行dubbo admin ui
dubbo admin ui
由 npm 管理和構(gòu)建,在開(kāi)發(fā)環(huán)境中,可以單獨(dú)運(yùn)行:npm run dev
頁(yè)面訪問(wèn):訪問(wèn) http://localhost:8082,由于前后端分開(kāi)部署,前端支持熱加載,任何頁(yè)面的修改都可以實(shí)時(shí)反饋,不需要重啟應(yīng)用。
跨域問(wèn)題:為了方便開(kāi)發(fā),項(xiàng)目使用前后端分離的部署模式,主要的好處是支持前端熱部署,在這種模式下,前端會(huì)通過(guò) 8080 端口訪問(wèn)后端的 restful api 接口,獲取數(shù)據(jù),這將導(dǎo)致跨域訪問(wèn)的問(wèn)題。因此我們?cè)?code>dubbo-admin-ui/config/index.js 添加了支持跨域訪問(wèn)的配置,當(dāng)前端通過(guò) npm run dev
單獨(dú)啟動(dòng)時(shí),這些配置將被激活,允許跨域訪問(wèn)。
dubbo-admin-server/src/main/resources/application.properties
主要配置有(如需修改,請(qǐng)?zhí)鎿Q為自己 ZooKeeper 的服務(wù)器地址):
# centers in dubbo2.7 admin.registry.address=zookeeper://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181 admin.config-center=zookeeper://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181 admin.metadata-report.address=zookeeper://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181 admin.root.user.name=root admin.root.user.password=root
三個(gè)配置項(xiàng)分別指定了注冊(cè)中心,配置中心和元數(shù)據(jù)中心的地址。
部署完成后,可以訪問(wèn):http://localhost:8080/swagger-ui.html 來(lái)查看所有的 RESTful API。
本文使用前后端分離方式部署,訪問(wèn):http://localhost:8082/,結(jié)果如下:
第一次訪問(wèn)時(shí)需要輸入用戶名與密碼,均為 root
。
登錄成功以后主界面如下,可以通過(guò)左側(cè)菜單實(shí)現(xiàn)對(duì)服務(wù)的查詢、治理、測(cè)試、Mock、統(tǒng)計(jì)等。
點(diǎn)擊上圖中右側(cè)查詢結(jié)果的 詳情
按鈕可以進(jìn)入以下頁(yè)面查看基礎(chǔ)信息、服務(wù)信息和元數(shù)據(jù)信息。如果元數(shù)據(jù)信息無(wú)法獲取如下圖,需要繼續(xù)修改配置。
官方已經(jīng)給出了完整說(shuō)明 Dubbo-Admin配置說(shuō)明,按照說(shuō)明配置即可。
使用 ZooKeeper 圖形化的客戶端工具 ZooInspector
連接 ZooKeeper 修改 Dubbo 配置信息。
在 dubbo 目錄下依次添加節(jié)點(diǎn) config
→ dubbo
,然后再添加 dubbo.properties
,右側(cè)填寫(xiě)配置信息。
admin.registry.address=zookeeper://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181 admin.metadata-report.address=zookeeper://192.168.10.101:2181?backup=192.168.10.102:2181,192.168.10.103:2181
完成以上操作后,重新打包編譯啟動(dòng),再次查看詳情即可看到元數(shù)據(jù)信息。
到此,相信大家對(duì)“Dubbo怎么配置注冊(cè)中心”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。