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 采用前端后分离的方式开发:

项目结构

既可以按照标准的 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 各种中心的配置
# centers in dubbo2.7
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181

# Dubbo Admin 管理员配置
admin.root.user.name=root
admin.root.user.password=root

# Dubbo 分组相关配置
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubbo

admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
admin.apollo.appId=test
admin.apollo.env=dev
admin.apollo.cluster=default
admin.apollo.namespace=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 控制台。

 

# 进入构建输出目录
$ cd dubbo-admin-distribution/target/

# 启动 Dubbo Admin 控制台
# 注意,-0.2.0-SNAPSHOT 是根据版本来的,胖友记得看看噢。
$ java -jar dubbo-admin-0.2.0-SNAPSHOT.jar

 

⑤ 使用浏览器,访问 http://127.0.0.1:8080/#/login 地址,进入 Dubbo Admin 登录界面。如下图所示:

Dubbo Admin 登录界面

使用默认的「root/root」账号密码进行登录。登录成功后,进入 Dubbo Admin 首页。如下图所示:

Dubbo Admin 首页

2.2 启动 Dubbo 服务

《芋道 Spring Boot Dubbo 入门》「3. 注解配置」小节,我们搭建了一个 Dubbo 示例项目 lab-30-dubbo-annotations-demo。如下图所示:

Dubbo 示例项目

下面,我们使用 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 文档如下图所示:

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

暂未开发,还在计划中...

服务 Mock

6. 服务治理

友情提示:如下内容,基于《Dubbo 文档 —— 服务治理和配置管理》做改造。

可以快速阅读,在有需要的时候,认真查看。

服务治理主要作用,是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的。主要有以下几个功能:

服务治理 —— 功能

6.1 应用级别的服务治理

在 Dubbo 2.6 及更早版本中,所有的服务治理规则都只针对服务粒度,如果要把某条规则作用到应用粒度上,需要为应用下的所有服务配合相同的规则、变更、删除的时候,也需要对应的操作,这样的操作很不友好。

因此 Dubbo 2.7 版本中增加了应用粒度的服务治理操作,对于条件路由(包括黑白名单)、动态配置(包括权重,负载均衡)都可以做应用级别的配置:

condition

上图是条件路由的配置,可以按照应用名、服务名两个维度来填写,也可以按照这两个维度来查询。

6.2 标签路由

标签路由是 Dubbo2.7 引入的新功能,配置以应用作为维度,给不同的服务器打上不同名字的标签,配置如下图所示:

tag

调用的时候,客户端可以通过 setAttachment 的方式,来设置不同的标签名称。比如本例中,setAttachment(tag1),客户端的选址范围就在如图所示的三台机器中,可以通过这种方式来实现流量隔离,灰度发布等功能。

6.3 条件路由

条件路由是 Dubbo 一直以来就有的功能,目前可以配置服务和应用两个维度,条件路由为 yaml 格式,具体的规则体以及各种适用场景,请参考这里

6.4 黑白名单

黑白名单是条件路由的一部分,规则存储和条件路由放在一起,为了方便配置所以单独拿出来,同样可以通过服务和应用两个维度,指定黑名单和白名单:

blackList

6.5 动态配置

动态配置是和路由规则平行的另一类服务治理治理功能,主要作用是在不重启服务的情况下,动态改变调用行为,从 Dubbo2.7 版本开始,支持服务和应用两个维度的配置,采用yaml格式,界面如下:config具体的规则体说明请参考这里

6.6 权重调节

权重调节是动态配置的子功能,主要作用是改变服务端的权重,更大的权重会有更大的几率被客户端选中作为服务提供者,从而达到流量分配的目的:

weight

6.7 负载均衡

负载均衡也是动态配置的子功能,主要作用是调整客户端的选址逻辑,目前可选的负载均衡策略有随机,轮训和最小活跃,关于各个策略的解释请参考这里

7. 配置管理

友情提示:如下内容,基于《Dubbo 文档 —— 服务治理和配置管理》做改造。

可以快速阅读,在有需要的时候,认真查看。

配置管理也是配合 Dubbo 2.7 新增的功能。在 Dubbo 2.7 中,增加了全局和应用维度的配置,分别在全局和应用范围内生效。其中,应用配置也可以指定该应用中的服务级别的配置,可以在控制台中查看,修改配置规则,默认展示全局维度的配置。

7.1 全局配置

config

全局配置里可以指定注册中心、元数据中心的地址,服务端和客户端的超时时间等,这些配置在全局内生效。除了配置写入,也可以用来查看。

如果使用 ZooKeeper 作为注册中心和元数据中心,还可以看到配置文件所在位置的目录结构。

7.2 应用、服务配置

appConfig

应用级别的配置可以为应用或者应用内的服务指定配置。在服务维度上,需要区分提供者和消费者。

  • dubbo.reference.{serviceName} 表示作为该服务消费者的配置
  • dubbo.provider.{servcieName}表示作为该服务提供者的配置。

其中注册中心和元数据中心的地址,只能在全局配置中指定,这也是 Dubbo 2.7 中推荐的使用方式。

并且,优先级:服务配置 > 应用配置 > 全局配置。

666. 彩蛋

暂无彩蛋,用就完事了!

posted on 2020-09-01 14:11  luzhouxiaoshuai  阅读(795)  评论(0编辑  收藏  举报

导航