溫馨提示×

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

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

Dubbo怎么配置注冊(cè)中心

發(fā)布時(shí)間:2021-12-15 16:00:32 來(lái)源:億速云 閱讀:186 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Dubbo怎么配置注冊(cè)中心”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Dubbo怎么配置注冊(cè)中心”吧!

注冊(cè)中心支持

  注冊(cè)中心可以更高效的管理系統(tǒng)的服務(wù):比如服務(wù)接口的發(fā)布、自動(dòng)剔除無(wú)效的服務(wù)、自動(dòng)恢復(fù)服務(wù)等。

  Dubbo 支持五種注冊(cè)中心:Multicast、Nacos(推薦)、ZooKeeper(推薦) 、Redis、Simple。

Multicast 注冊(cè)中心

  Multicast 注冊(cè)中心不需要啟動(dòng)任何中心節(jié)點(diǎn),只要廣播地址一樣,就可以互相發(fā)現(xiàn)。

Dubbo怎么配置注冊(cè)中心

  1. 提供方啟動(dòng)時(shí)廣播自己的地址

  2. 消費(fèi)方啟動(dòng)時(shí)廣播訂閱請(qǐng)求

  3. 提供方收到訂閱請(qǐng)求時(shí),單播自己的地址給訂閱者,如果設(shè)置了 unicast=false,則廣播給訂閱者

  4. 消費(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>

ZooKeeper 注冊(cè)中心

  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 即可。

Dubbo怎么配置注冊(cè)中心

  流程說(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ù)的所有分組和所有版本的提供者。

預(yù)備工作

  當(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 注冊(cè)中心

  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

預(yù)備工作

  當(dāng)您將 Nacos 整合到您的 Dubbo 工程之前,請(qǐng)確保后臺(tái)已經(jīng)啟動(dòng) Nacos 服務(wù)。

快速上手

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

依賴

  核心依賴主要是 dubbo-registry-nacosnacos-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>
配置注冊(cè)中心

  服務(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)中即可顯示。

Dubbo怎么配置注冊(cè)中心

  如圖所示,服務(wù)名前綴為 providers: 的信息為服務(wù)提供者的元信息,consumers: 則代表服務(wù)消費(fèi)者的元信息。點(diǎn)擊“詳情”可查看服務(wù)狀態(tài)詳情:

Dubbo怎么配置注冊(cè)中心

Dubbo 負(fù)載均衡

  在集群負(fù)載均衡時(shí),Dubbo 提供了多種均衡策略,缺省為 random 隨機(jī)調(diào)用,也可以自行擴(kuò)展負(fù)載均衡策略。

負(fù)載均衡策略

Random LoadBalance
  • 隨機(jī),按權(quán)重設(shè)置隨機(jī)概率。

  • 在一個(gè)截面上碰撞的概率高,但調(diào)用量越大分布越均勻,而且按概率使用權(quán)重后也比較均勻,有利于動(dòng)態(tài)調(diào)整提供者權(quán)重。

Dubbo怎么配置注冊(cè)中心

RoundRobin LoadBalance
  • 輪詢,按公約后的權(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)上。

LeastActive LoadBalance
  • 最少活躍調(diào)用數(shù),ping 值(延遲低)的調(diào)用,相同延遲的情況下隨機(jī)。

  • 使慢的提供者收到更少請(qǐng)求,因?yàn)樵铰奶峁┱叩恼{(diào)用前后計(jì)數(shù)差會(huì)越大。

Dubbo怎么配置注冊(cè)中心

ConsistentHash LoadBalance
  • 一致性 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

xml

  服務(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>
yaml
dubbo:
  provider:
    loadbalance: roundrobin
    weight: 100
  consumer:
    loadbalance: roundrobin
注解
@Service(loadbalance = "roundrobin", weight = 100)
@Reference(loadbalance = "roundrobin")

Dubbo怎么配置注冊(cè)中心

Dubbo怎么配置注冊(cè)中心

Dubbo 控制臺(tái)

  Dubbo 2.6 版本以及以前我們是通過(guò)一個(gè)war包,將其部署在tomcat下,啟動(dòng)服務(wù)器訪問(wèn)war包項(xiàng)目即可,界面效果如下。

Dubbo怎么配置注冊(cè)中心

  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)容,最終效果如下:

Dubbo怎么配置注冊(cè)中心

部署

Maven方式部署
方式一

  使用 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ù)中心的地址。

Swagger 支持

  部署完成后,可以訪問(wèn):http://localhost:8080/swagger-ui.html 來(lái)查看所有的 RESTful API。

Dubbo怎么配置注冊(cè)中心

訪問(wèn)

  本文使用前后端分離方式部署,訪問(wèn):http://localhost:8082/,結(jié)果如下:

  第一次訪問(wèn)時(shí)需要輸入用戶名與密碼,均為 root

Dubbo怎么配置注冊(cè)中心

  登錄成功以后主界面如下,可以通過(guò)左側(cè)菜單實(shí)現(xiàn)對(duì)服務(wù)的查詢、治理、測(cè)試、Mock、統(tǒng)計(jì)等。

Dubbo怎么配置注冊(cè)中心

  點(diǎn)擊上圖中右側(cè)查詢結(jié)果的 詳情 按鈕可以進(jìn)入以下頁(yè)面查看基礎(chǔ)信息、服務(wù)信息和元數(shù)據(jù)信息。如果元數(shù)據(jù)信息無(wú)法獲取如下圖,需要繼續(xù)修改配置。

Dubbo怎么配置注冊(cè)中心

  官方已經(jīng)給出了完整說(shuō)明 Dubbo-Admin配置說(shuō)明,按照說(shuō)明配置即可。

Dubbo怎么配置注冊(cè)中心

解決元數(shù)據(jù)無(wú)法獲取問(wèn)題

  使用 ZooKeeper 圖形化的客戶端工具 ZooInspector 連接 ZooKeeper 修改 Dubbo 配置信息。

Dubbo怎么配置注冊(cè)中心

  在 dubbo 目錄下依次添加節(jié)點(diǎn) configdubbo,然后再添加 dubbo.properties,右側(cè)填寫(xiě)配置信息。

Dubbo怎么配置注冊(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

  完成以上操作后,重新打包編譯啟動(dòng),再次查看詳情即可看到元數(shù)據(jù)信息。

Dubbo怎么配置注冊(cè)中心

到此,相信大家對(duì)“Dubbo怎么配置注冊(cè)中心”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

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

免責(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)容。

AI