dubbo admin 2.8.3版本使用
博客转载:http://www.iocoder.cn/Dubbo/Admin/
摘要: 原创出处 http://www.iocoder.cn/Dubbo/Admin/ 「芋道源码」欢迎转载,保留摘要,谢谢!
1. 概述
Dubbo Admin 是 Dubbo 的管理控制台,主要三部分功能:
- 服务查询
- 服务治理(包括 Dubbo 2.7 版本新增的治理规则)
- 服务测试
Dubbo Admin 采用前端后分离的方式开发:
- 前端使用 Vue.js 作为 Javascript框架,Vuetify 作为 UI 框架。
- 后端使用 Spring Boot 框架。
既可以按照标准的 Maven 方式进行打包与部署,也可以采用前后端分离的部署方式,方便开发。
2. 快速入门
本小节,我们来部署一个 Dubbo Admin 控制台,并对 Dubbo 服务进行管理。
友情提示:如果胖友想要使用 Docker 部署 Dubbo Admin 控制台,可以看看 https://hub.docker.com/r/apache/dubbo-admin
2.1 部署 Dubbo Admin
因为 Dubbo Admin 并未提供已经编译好的 jar
包,所以我们需要自己动手。
① 执行 git clone https://github.com/apache/dubbo-admin.git
命令,将项目下载到本地。
友情提示:如果网络比较“差”,可能需要一些时间哈。
② 修改 dubbo-admin-server/src/main/resources/application.properties
配置文件,主要是指定配置中心。内容如下:
# Dubbo 各种中心的配置
|
这里我们使用本地的 ZooKeeper 做为注册中心,所以无需更改。如果胖友使用远程的 ZooKeeper 服务,需要修改如下三个配置项:
admin.registry.address
,注册中心地址。admin.config-center
,配置中心地址。admin.metadata-report.address
,元数据中心地址。
友情提示:建议胖友参考《芋道 ZooKeeper 极简入门》文章,安装一个本地的 ZooKeeper 服务,和本文更加搭配。
另外,考虑到安全性,建议修改 admin.root.user.name
和 admin.root.user.password
配置项,设置成自己想要的管理员账号与密码。
③ 执行 mvn clean package -Dmaven.test.skip=true
命令,开始构建 Dubbo Admin 项目。
友情提示:如果网络比较“差”,可能需要一些时间哈。
另外,添加
-Dmaven.test.skip=true
参数的原因是,貌似当前版本单元测试有点问题,老报连接不上 ZooKeeper 服务。
④ 执行如下命令,启动 Dubbo Admin 控制台。
# 进入构建输出目录
|
⑤ 使用浏览器,访问 http://127.0.0.1:8080/#/login 地址,进入 Dubbo Admin 登录界面。如下图所示:
使用默认的「root/root」账号密码进行登录。登录成功后,进入 Dubbo Admin 首页。如下图所示:
2.2 启动 Dubbo 服务
在《芋道 Spring Boot Dubbo 入门》的「3. 注解配置」小节,我们搭建了一个 Dubbo 示例项目 lab-30-dubbo-annotations-demo
。如下图所示:
下面,我们使用 Dubbo Admin 将该 Dubbo 示例项目进行管理。
① 执行 ProviderApplication 启动服务提供者,执行 ConsumerApplication 启动服务消费者。
② 点击 Dubbo Admin 的「服务查询」菜单,可以查看到 UserRpcService 服务。如下图所示:
点击 UserRpcService 的「详情」按钮,可以看到 UserRpcService 服务的基础信息、服务信息(提供者 + 消费者列表)、元数据。如下图所示:
③ 点击 Dubbo Admin 的「服务统计 -> 服务关系」菜单,可以看到服务之间的调用关系。如下图所示:
④ 点击 Dubbo Admin 的「服务统计 -> 服务统计」菜单,可以看 QPS、Response Time 等等统计信息。如下图所示:
= = 不过艿艿测试总是在报错,所以这里就暂时不演示了。
3. Swagger 支持
Dubbo Admin 提供的 RESTful API 集成了 Swagger 组件,所以可以很方便的自动生成 API 文档。访问 http://127.0.0.1:8080/swagger-ui.html 地址,获得 Swagger 文档如下图所示:
4. 服务测试
在 Dubbo 2.7 版本开始提供服务的元数据,所以 Dubbo Admin 就可以用通过 Dubbo 泛化调用的特性,实现在控制台中,调用服务提供者进行测试。如下图所示:
下面,我们来详细介绍服务测试的使用过程。
4.1 接入元数据中心
使用服务测试的前提,是服务提供者需要接入元数据中心。以 user-rpc-service-provider-02
项目举例子,需要添加 dubbo.metadata-report.address
配置项。如下图所示:
这里,我们还是采用 ZooKeeper 作为元数据中心。
修改完成后,重新执行 ProviderApplication 重启服务提供者。
4.2 使用流程
① 打开 Dubbo Admin 的「服务测试」菜单,输入服务名进行搜索。如下图所示:
② 点击 #get(...)
方法后面的「编辑」图标,进入该方法的测试界面。如下图所示:
③ 填写参数,点击「执行」按钮,进行一次服务提供者的调用。如下图所示:
4.3 实现原理
胖友可以阅读《Dubbo Admin 服务测试功能》文章,进一步了解。
5. 服务 Mock
暂未开发,还在计划中...
6. 服务治理
友情提示:如下内容,基于《Dubbo 文档 —— 服务治理和配置管理》做改造。
可以快速阅读,在有需要的时候,认真查看。
服务治理主要作用,是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的。主要有以下几个功能:
6.1 应用级别的服务治理
在 Dubbo 2.6 及更早版本中,所有的服务治理规则都只针对服务粒度,如果要把某条规则作用到应用粒度上,需要为应用下的所有服务配合相同的规则、变更、删除的时候,也需要对应的操作,这样的操作很不友好。
因此 Dubbo 2.7 版本中增加了应用粒度的服务治理操作,对于条件路由(包括黑白名单)、动态配置(包括权重,负载均衡)都可以做应用级别的配置:
上图是条件路由的配置,可以按照应用名、服务名两个维度来填写,也可以按照这两个维度来查询。
6.2 标签路由
标签路由是 Dubbo2.7 引入的新功能,配置以应用作为维度,给不同的服务器打上不同名字的标签,配置如下图所示:
调用的时候,客户端可以通过 setAttachment
的方式,来设置不同的标签名称。比如本例中,setAttachment(tag1)
,客户端的选址范围就在如图所示的三台机器中,可以通过这种方式来实现流量隔离,灰度发布等功能。
6.3 条件路由
条件路由是 Dubbo 一直以来就有的功能,目前可以配置服务和应用两个维度,条件路由为 yaml
格式,具体的规则体以及各种适用场景,请参考这里
6.4 黑白名单
黑白名单是条件路由的一部分,规则存储和条件路由放在一起,为了方便配置所以单独拿出来,同样可以通过服务和应用两个维度,指定黑名单和白名单:
6.5 动态配置
动态配置是和路由规则平行的另一类服务治理治理功能,主要作用是在不重启服务的情况下,动态改变调用行为,从 Dubbo2.7 版本开始,支持服务和应用两个维度的配置,采用yaml
格式,界面如下:具体的规则体说明请参考这里
6.6 权重调节
权重调节是动态配置的子功能,主要作用是改变服务端的权重,更大的权重会有更大的几率被客户端选中作为服务提供者,从而达到流量分配的目的:
6.7 负载均衡
负载均衡也是动态配置的子功能,主要作用是调整客户端的选址逻辑,目前可选的负载均衡策略有随机,轮训和最小活跃,关于各个策略的解释请参考这里。
7. 配置管理
友情提示:如下内容,基于《Dubbo 文档 —— 服务治理和配置管理》做改造。
可以快速阅读,在有需要的时候,认真查看。
配置管理也是配合 Dubbo 2.7 新增的功能。在 Dubbo 2.7 中,增加了全局和应用维度的配置,分别在全局和应用范围内生效。其中,应用配置也可以指定该应用中的服务级别的配置,可以在控制台中查看,修改配置规则,默认展示全局维度的配置。
7.1 全局配置
全局配置里可以指定注册中心、元数据中心的地址,服务端和客户端的超时时间等,这些配置在全局内生效。除了配置写入,也可以用来查看。
如果使用 ZooKeeper 作为注册中心和元数据中心,还可以看到配置文件所在位置的目录结构。
7.2 应用、服务配置
应用级别的配置可以为应用或者应用内的服务指定配置。在服务维度上,需要区分提供者和消费者。
dubbo.reference.{serviceName}
表示作为该服务消费者的配置dubbo.provider.{servcieName}
表示作为该服务提供者的配置。
其中注册中心和元数据中心的地址,只能在全局配置中指定,这也是 Dubbo 2.7 中推荐的使用方式。
并且,优先级:服务配置 > 应用配置 > 全局配置。
666. 彩蛋
暂无彩蛋,用就完事了!
posted on 2020-09-01 14:11 luzhouxiaoshuai 阅读(795) 评论(0) 编辑 收藏 举报