本篇內(nèi)容主要講解“Dubbo怎么配置注冊中心”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Dubbo怎么配置注冊中心”吧!
十余年的江干網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整江干建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“江干網(wǎng)站設(shè)計”,“江干網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
注冊中心可以更高效的管理系統(tǒng)的服務(wù):比如服務(wù)接口的發(fā)布、自動剔除無效的服務(wù)、自動恢復(fù)服務(wù)等。
Dubbo 支持五種注冊中心:Multicast、Nacos(推薦)、ZooKeeper(推薦) 、redis、Simple。
Multicast 注冊中心不需要啟動任何中心節(jié)點,只要廣播地址一樣,就可以互相發(fā)現(xiàn)。
提供方啟動時廣播自己的地址
消費方啟動時廣播訂閱請求
提供方收到訂閱請求時,單播自己的地址給訂閱者,如果設(shè)置了 unicast=false
,則廣播給訂閱者
消費方收到提供方地址時,連接該地址進行 RPC 調(diào)用。
組播受網(wǎng)絡(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.register.address=multicast://224.5.6.7:1234
為了減少廣播量,Dubbo 缺省使用單播發(fā)送提供者地址信息給消費者,如果一個機器上同時啟了多個消費者進程,消費者需聲明 unicast=false
,否則只會有一個消費者能收到消息。
當(dāng)服務(wù)者和消費者運行在同一臺機器上,消費者同樣需要聲明unicast=false
,否則消費者無法收到消息,導(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 是一個開放源碼的分布式應(yīng)用程序協(xié)調(diào)組件,是 Hadoop 和 Hbase 的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等。適合作為 Dubbo 服務(wù)的注冊中心,工業(yè)強度較高,可用于生產(chǎn)環(huán)境,推薦使用。
在微服務(wù)項目開發(fā)中 ZooKeeper 主要的角色是當(dāng)做服務(wù)注冊中心存在,我們將編寫好的服務(wù)注冊至 ZooKeeper 即可。
流程說明:
服務(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)斷電等異常停機時,注冊中心能自動刪除提供者信息;
當(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é)點,不配置將使用默認的根節(jié)點;
支持 *
號通配符 <dubbo:reference group="*" version="*" />
,可訂閱服務(wù)的所有分組和所有版本的提供者。
當(dāng)您將 ZooKeeper 整合到您的 Dubbo 工程之前,請確保后臺已經(jīng)啟動 ZooKeeper 服務(wù)。
Dubbo 融合 ZooKeeper 成為注冊中心的操作步驟非常簡單,大致步驟可分為“增加 Maven 依賴”和“配置注冊中心“。
在 provider 和 consumer 中增加 zookeeper 客戶端 jar 包依賴:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.1</version> </dependency>
Dubbo 支持 zkclient 和 curator 兩種 Zookeeper 客戶端實現(xiàn):
注意:在 2.7.x 的版本中已經(jīng)移除了 zkclient 的實現(xiàn),如果要使用 zkclient 客戶端,需要自行拓展。
所以,我們還需要在 provider 和 consumer 中增加 curator 客戶端 jar 包依賴:
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>5.1.0</version> </dependency>
注意:單獨添加 zookeeper 和 curator 依賴需要注意版本之間是否有沖突,較為麻煩。
所以,一勞永逸的辦法就是添加 Apache Dubbo 給定的一個已關(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 單機配置:
<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 公司推出的開源工具,用于實現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置管理。Nacos 是 Dubbo 生態(tài)系統(tǒng)中重要的注冊中心實現(xiàn),其中 dubbo-registry-nacos 則是 Dubbo 融合 Nacos 注冊中心的實現(xiàn),推薦使用。
Nacos 官網(wǎng):https://nacos.io/zh-cn/
Github:https://github.com/alibaba/nacos
當(dāng)您將 Nacos 整合到您的 Dubbo 工程之前,請確保后臺已經(jīng)啟動 Nacos 服務(wù)。
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.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ù)消費者只需要調(diào)整 address
屬性配置即可。
單機配置:
<!-- 使用 Nacos 注冊中心,單機版 --> <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 注冊中心,集群版 --> <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ù)提供和消費信息在 Nacos 控制臺中即可顯示。
如圖所示,服務(wù)名前綴為 providers:
的信息為服務(wù)提供者的元信息,consumers:
則代表服務(wù)消費者的元信息。點擊“詳情”可查看服務(wù)狀態(tài)詳情:
在集群負載均衡時,Dubbo 提供了多種均衡策略,缺省為 random
隨機調(diào)用,也可以自行擴展負載均衡策略。
隨機,按權(quán)重設(shè)置隨機概率。
在一個截面上碰撞的概率高,但調(diào)用量越大分布越均勻,而且按概率使用權(quán)重后也比較均勻,有利于動態(tài)調(diào)整提供者權(quán)重。
輪詢,按公約后的權(quán)重設(shè)置輪詢比率。
存在慢的提供者累積請求的問題,比如:第二臺機器很慢,但沒掛,當(dāng)請求調(diào)到第二臺時就卡在那,久而久之,所有請求都卡在調(diào)到第二臺上。
最少活躍調(diào)用數(shù),ping 值(延遲低)的調(diào)用,相同延遲的情況下隨機。
使慢的提供者收到更少請求,因為越慢的提供者的調(diào)用前后計數(shù)差會越大。
一致性 Hash,相同參數(shù)的請求總是發(fā)到同一提供者。
當(dāng)某一臺提供者掛時,原本發(fā)往該提供者的請求,基于虛擬節(jié)點,平攤到其它提供者,不會引起劇烈變動。
算法參見:http://en.wikipedia.org/wiki/Consistent_hashing
缺省只對第一個參數(shù) Hash,如果要修改,請配置 <dubbo:parameter key="hash.arguments" value="0,1" />
缺省用 160 份虛擬節(jié)點,如果要修改,請配置 <dubbo:parameter key="hash.nodes" value="320" />
一般在項目中不會在代碼層面指定權(quán)重,而是通過監(jiān)控中心(dubbo-admin)對服務(wù)動態(tài)的指定權(quán)重,官方文檔:http://dubbo.apache.org/zh-cn/docs/admin/introduction.html
服務(wù)端服務(wù)級別
<dubbo:service interface="..." loadbalance="roundrobin" weight="100" />
客戶端服務(wù)級別
<dubbo:reference interface="..." loadbalance="roundrobin" />
服務(wù)端方法級別
<dubbo:service interface="..." weight="100"> <dubbo:method name="..." loadbalance="roundrobin"/> </dubbo:service>
客戶端方法級別
<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 版本以及以前我們是通過一個war
包,將其部署在tomcat
下,啟動服務(wù)器訪問war
包項目即可,界面效果如下。
Dubbo 2.7 版本以后管理控制臺結(jié)構(gòu)上采取了前后端分離的方式,前端使用 Vue 和 Vuetify 分別作為 Javascript 框架和 UI 框架,后端采用 Spring Boot 框架。既可以按照標(biāo)準的 Maven 方式進行打包,部署,也可以采用前后端分離的部署方式,方便開發(fā),功能上,目前具備了服務(wù)查詢,服務(wù)治理(包括Dubbo2.7中新增的治理規(guī)則)以及服務(wù)測試三部分內(nèi)容,最終效果如下:
使用 git 將項目克隆至本地,打包啟動訪問或者導(dǎo)入 IDE 啟動訪問
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
項目訪問地址:http://localhost:8080
訪問:https://github.com/apache/dubbo-admin 將項目下載至本地,打包啟動訪問或者導(dǎo)入 IDE 啟動訪問。
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
運行dubbo admin server
dubbo admin server
是一個標(biāo)準的 Spring Boot 項目,可以在任何 Java IDE 中運行它
運行dubbo admin ui
dubbo admin ui
由 npm 管理和構(gòu)建,在開發(fā)環(huán)境中,可以單獨運行:npm run dev
頁面訪問:訪問 http://localhost:8082,由于前后端分開部署,前端支持熱加載,任何頁面的修改都可以實時反饋,不需要重啟應(yīng)用。
跨域問題:為了方便開發(fā),項目使用前后端分離的部署模式,主要的好處是支持前端熱部署,在這種模式下,前端會通過 8080 端口訪問后端的 restful api 接口,獲取數(shù)據(jù),這將導(dǎo)致跨域訪問的問題。因此我們在dubbo-admin-ui/config/index.js
添加了支持跨域訪問的配置,當(dāng)前端通過 npm run dev
單獨啟動時,這些配置將被激活,允許跨域訪問。
dubbo-admin-server/src/main/resources/application.properties
主要配置有(如需修改,請?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
三個配置項分別指定了注冊中心,配置中心和元數(shù)據(jù)中心的地址。
部署完成后,可以訪問:http://localhost:8080/swagger-ui.html 來查看所有的 RESTful API。
本文使用前后端分離方式部署,訪問:http://localhost:8082/,結(jié)果如下:
第一次訪問時需要輸入用戶名與密碼,均為 root
。
登錄成功以后主界面如下,可以通過左側(cè)菜單實現(xiàn)對服務(wù)的查詢、治理、測試、Mock、統(tǒng)計等。
點擊上圖中右側(cè)查詢結(jié)果的 詳情
按鈕可以進入以下頁面查看基礎(chǔ)信息、服務(wù)信息和元數(shù)據(jù)信息。如果元數(shù)據(jù)信息無法獲取如下圖,需要繼續(xù)修改配置。
官方已經(jīng)給出了完整說明 Dubbo-Admin配置說明,按照說明配置即可。
使用 ZooKeeper 圖形化的客戶端工具 ZooInspector
連接 ZooKeeper 修改 Dubbo 配置信息。
在 dubbo 目錄下依次添加節(jié)點 config
→ dubbo
,然后再添加 dubbo.properties
,右側(cè)填寫配置信息。
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
完成以上操作后,重新打包編譯啟動,再次查看詳情即可看到元數(shù)據(jù)信息。
到此,相信大家對“Dubbo怎么配置注冊中心”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:Dubbo怎么配置注冊中心
網(wǎng)站路徑:http://www.rwnh.cn/article46/psgpeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、網(wǎng)站收錄、企業(yè)建站、用戶體驗、軟件開發(fā)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)