本篇内容主要讲解“Dubbo怎么配置注册中心”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Dubbo怎么配置注册中心”吧!
注册中心可以更高效的管理系统的服务:比如服务接口的发布、自动剔除无效的服务、自动恢复服务等。
Dubbo 支持五种注册中心:Multicast、Nacos(推荐)、ZooKeeper(推荐) 、Redis、Simple。
Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
提供方启动时广播自己的地址
消费方启动时广播订阅请求
提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了 unicast=false
,则广播给订阅者
消费方收到提供方地址时,连接该地址进行 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.register.address=multicast://224.5.6.7:1234
为了减少广播量,Dubbo 缺省使用单播发送提供者地址信息给消费者,如果一个机器上同时启了多个消费者进程,消费者需声明 unicast=false
,否则只会有一个消费者能收到消息。
当服务者和消费者运行在同一台机器上,消费者同样需要声明unicast=false
,否则消费者无法收到消息,导致 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 是一个开放源码的分布式应用程序协调组件,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,推荐使用。
在微服务项目开发中 ZooKeeper 主要的角色是当做服务注册中心存在,我们将编写好的服务注册至 ZooKeeper 即可。
流程说明:
服务提供者启动时: 向 /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="*" />
,可订阅服务的所有分组和所有版本的提供者。
当您将 ZooKeeper 整合到您的 Dubbo 工程之前,请确保后台已经启动 ZooKeeper 服务。
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 客户端实现:
注意:在 2.7.x 的版本中已经移除了 zkclient 的实现,如果要使用 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 给定的一个已关联好的依赖:
<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 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos 是 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现,推荐使用。
Nacos 官网:https://nacos.io/zh-cn/
Github:https://github.com/alibaba/nacos
当您将 Nacos 整合到您的 Dubbo 工程之前,请确保后台已经启动 Nacos 服务。
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>
服务提供者和服务消费者只需要调整 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 应用,Dubbo 的服务提供和消费信息在 Nacos 控制台中即可显示。
如图所示,服务名前缀为 providers:
的信息为服务提供者的元信息,consumers:
则代表服务消费者的元信息。点击“详情”可查看服务状态详情:
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random
随机调用,也可以自行扩展负载均衡策略。
随机,按权重设置随机概率。
在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
轮询,按公约后的权重设置轮询比率。
存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
最少活跃调用数,ping 值(延迟低)的调用,相同延迟的情况下随机。
使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
一致性 Hash,相同参数的请求总是发到同一提供者。
当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
算法参见:http://en.wikipedia.org/wiki/Consistent_hashing
缺省只对第一个参数 Hash,如果要修改,请配置 <dubbo:parameter key="hash.arguments" value="0,1" />
缺省用 160 份虚拟节点,如果要修改,请配置 <dubbo:parameter key="hash.nodes" value="320" />
一般在项目中不会在代码层面指定权重,而是通过监控中心(dubbo-admin)对服务动态的指定权重,官方文档:http://dubbo.apache.org/zh-cn/docs/admin/introduction.html
服务端服务级别
<dubbo:service interface="..." loadbalance="roundrobin" weight="100" />
客户端服务级别
<dubbo:reference interface="..." loadbalance="roundrobin" />
服务端方法级别
<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
下,启动服务器访问war
包项目即可,界面效果如下。
Dubbo 2.7 版本以后管理控制台结构上采取了前后端分离的方式,前端使用 Vue 和 Vuetify 分别作为 Javascript 框架和 UI 框架,后端采用 Spring Boot 框架。既可以按照标准的 Maven 方式进行打包,部署,也可以采用前后端分离的部署方式,方便开发,功能上,目前具备了服务查询,服务治理(包括Dubbo2.7中新增的治理规则)以及服务测试三部分内容,最终效果如下:
使用 git 将项目克隆至本地,打包启动访问或者导入 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 将项目下载至本地,打包启动访问或者导入 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
是一个标准的 Spring Boot 项目,可以在任何 Java IDE 中运行它
运行dubbo admin ui
dubbo admin ui
由 npm 管理和构建,在开发环境中,可以单独运行:npm run dev
页面访问:访问 http://localhost:8082,由于前后端分开部署,前端支持热加载,任何页面的修改都可以实时反馈,不需要重启应用。
跨域问题:为了方便开发,项目使用前后端分离的部署模式,主要的好处是支持前端热部署,在这种模式下,前端会通过 8080 端口访问后端的 restful api 接口,获取数据,这将导致跨域访问的问题。因此我们在dubbo-admin-ui/config/index.js
添加了支持跨域访问的配置,当前端通过 npm run dev
单独启动时,这些配置将被激活,允许跨域访问。
dubbo-admin-server/src/main/resources/application.properties
主要配置有(如需修改,请替换为自己 ZooKeeper 的服务器地址):
# 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
三个配置项分别指定了注册中心,配置中心和元数据中心的地址。
部署完成后,可以访问:http://localhost:8080/swagger-ui.html 来查看所有的 RESTful API。
本文使用前后端分离方式部署,访问:http://localhost:8082/,结果如下:
第一次访问时需要输入用户名与密码,均为 root
。
登录成功以后主界面如下,可以通过左侧菜单实现对服务的查询、治理、测试、Mock、统计等。
点击上图中右侧查询结果的 详情
按钮可以进入以下页面查看基础信息、服务信息和元数据信息。如果元数据信息无法获取如下图,需要继续修改配置。
官方已经给出了完整说明 Dubbo-Admin配置说明,按照说明配置即可。
使用 ZooKeeper 图形化的客户端工具 ZooInspector
连接 ZooKeeper 修改 Dubbo 配置信息。
在 dubbo 目录下依次添加节点 config
→ dubbo
,然后再添加 dubbo.properties
,右侧填写配置信息。
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
完成以上操作后,重新打包编译启动,再次查看详情即可看到元数据信息。
到此,相信大家对“Dubbo怎么配置注册中心”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。