本篇主要介绍一下dubbo admin的使用,使用之前我们需要先进行搭建,对于如何搭建,参考 dubbo admin搭建

如何使用

登录成功之后我们会看到如下界面,上面的服务就是我们注册中心注册上去的服务
image.png
在对应的服务上点击详情
image.png
此时我们就能看到对应服务的相关信息,很多时候如果你配置有问题是看不到这么多信息的,这里需要重点说明一下这个页面怎么出来元数据信息的。

元数据信息怎么显示

1)application.properties 配置文件要配置好配置中心
image.png
也就是上图中的 admin.config-center,其他两个就直接注释掉不配了,这一点dubbo官方也提到了
image.png
官方这里提到一点,需要在配置中心配置注册中心以及元数据中心地址,这点怎么做呢?我这里也说明一下(用的zookeeper)
1) 进入zookeeper安装目录的命令目录下,执行./zkCli.sh,登录到 zookeeper(如果你不是在本机的则需要制定ip和端口)
2) 创建 /dubbo/config/dubbo/dubbo.properties 节点,执行命令
create /dubbo/config/dubbo/dubbo.properties "",如果上一层目录不存在的,则一层层创建。
3) ctrl + c 或者执行quit退出zookeeper命令窗口,再执行

./zkCli.sh -server 127.0.0.1:2181 set /dubbo/config/dubbo/dubbo.properties "dubbo.registry.address=zookeeper://192.168.10.118:2181
dubbo.metadata-report.address=zookeeper://192.168.10.118:2181"

这里需要注意的是 dubbo.registry.address 和 dubbo.metadata-report.address 之间是要换行的,不然后面 dubbo-admin 是无法解析成功的。完成这几步,元数据信息如果还不显示,那还有一种可能:你使用的 dubbo 版本太低,我们这里介绍的 dubbo-admin 是基于dubbo 2.7.12版本的,去注册中心获取元数据信息的节点是 /dubbo/metadata/com.example.dubboprovider.rpc.CityService/provider/provider,如果你服务引用的版本是2.7.2之前的版本,它注册到的节点路径是 /dubbo/metadata/com.example.dubboprovider.rpc.CityService/provider/provider/service.data,这样就导致 dubbo-admin 获取不到元数据信息了。别问我怎么知道的,调出来的。

接口测试

有了元数据信息之后,我们就可以使用这个测试的功能了,虽然我们在 测试工具 这篇文章讲过其他的测试工具,但是其实 dubbo-admin 自带了测试功能。
找到对应的服务之后点击测试按钮
image.png
然后就会显示所有的接口
image.png
点击对应的接口进行测试
image.png
当然你也可以在这边进入测试页
image.png

接口文档(dubbo-api-docs)

在界面中,我们可以看到有一个接口文档的项
image.png
这个其实就是 dubbo-admin 使用了 dubbo-api-docs 的功能,这里说的使用并不是说直接引入对应的包,而是根据 dubbo-api-docs 暴露服务的规则来调用服务。
简单的介绍一下 dubbo-api-docs 原理:
其实就是暴露一个org.apache.dubbo.apidocs.core.providers.IDubboDocProvider接口,看下源码
image.png
对于使用 dubbo-api-docs(基于2.7.8.1版本),这里需要注意几点:

  • dubbo版本需要在2.7.7以上,不然不支持DubboService注解
  • 配置文件中一定要配置ApplicationConfigRegistryConfigProtocolConfig,需要在application.properties 中配置,其他地方比如 dubbo.properties 中配置会启动出错,暂时还没找到具体原因(后面会再看下)
    对于具体的使用,官方写得比较详细了,参考 dubbo-api-docs使用
    dubbo-api-docs介绍到这,继续看接口文档功能使用,目前是直连模式直接去提供者取的,所以填入提供者的ip和端口(后续据说会支持去注册中心拿),点击加载接口列表
    image.png
    这里有个点要注意:dubbo-admin 默认调 dubbo-api-docs 时会带上版本号 v1 以及 group 值apiDocsGroup,而我们服务提供者并没有,这样会导致调用失败,所以可以在 application.properties 中加配置设置为空值或者你自己需要的值
    image.png
    点击服务之后就会出现服务接口
    image.png
    点击接口之后右边就会出现相应的接口信息
    image.png

    配置管理

    我们知道dubbo是支持配置中心的,这个配置管理其实就是对于配置中心的管理。
    image.png
    默认是搜索 global,也就是全局的配置,这里以 zookeeper 为例,对应的节点路径是 /dubbo/config/dubbo/dubbo.properties来存全局配置。
    image.png
    这个路径是不是很熟悉?没错,就是上面介绍元数据怎么来的时候配置过的节点,这个就是对那个配置的管理,我们看下里面的数据
    image.png
    接着我们来创建一个配置,大概如下
    image.png
    这里的应用名其实就是一个节点路径的key,存储格式为/dubbo/config/dubbo/{key}/dubbo.properties,所以我们这个结果最终保存到zk的这个节点下,我们在zk中也能看到
    image.png
    然后搜索一下刚创建的配置信息
    image.png

    服务统计

    服务统计其实就是一个监控的功能,会对服务的 qps、rt 等进行统计展示,这个版本目前功能还不是很完善
    image.png

    服务关系

    先来看简单的服务关系,这个比较简单,就是基于服务全名(包名全路径)来关联消费者和提供者,不多做介绍。
    image.png

    服务统计

    这里又涉及到 dubbo 版本了,dubbo 在 2.7.2 开始才提供了度量指标的功能,服务统计功能在这个版本目前应该是无法使用的,我在github上已经提了 issue,其实个人感觉完全可以将 metrics 集成到 monitor(后面会单独再介绍一下 dubbo monitor ),这里再说一下dubbo admin其实还是需要自己维护,社区也并不活跃,虽然目前这个功能是有问题的,还是介绍一下如何使用。
    1) dubbo 服务配置 metrics 内容,主要就是端口号和协议就行了,如果这里不配协议,默认是dubbo
    image.png
    2) 服务配置,消费端同理
    image.png
    3) 发一次dubbo调用,促进生成 MetricsService
    4) 在dubbo admin中输入Ip发起查询
    image.png
    如果配置都正确的情况下,这里会提示 service not fund 的异常,具体原因可以看上面提的issue,但是我看网上还是有些人能用一部分服务统计功能的(除了线程池),如果你发现你能用服务统计功能,那请留言探讨。

    服务mock

    这个功能暂时也没有实现

    服务治理

    这是一个大头,放在最后压轴,这个版本的dubbo admin都是基于配置中心来管理的,所以前提是要配置好配置中心,内容也比较多,我们也一点一点介绍。

    条件路由

    先解释下什么是条件路由:基于 消费端条件 => 提供端条件 的规则对消费端的请求进行路由。具体的规则以及实现机制,推荐看下这篇 Dubbo 路由机制的实现。从代码中没看到配置和读取rule的逻辑,所以目前应该只能通过注册中心通知机制来触发条件路由,这里说说怎么使用dubbo admin来创建
    image.png
    上面就是创建的一个规则,对于服务级别的,dubbo admin 会记录到节点 dubbo/config/dubbo/com.example.dubboprovider.rpc.CityService::.condition-router 中,com.example.dubboprovider.rpc.CityService:: 是默认生成的id,规则是 service: version: group。如果是应用级别,则是 dubbo/config/dubbo/consumer.condition-router,id就是应用名。设置成功之后,我们可以看到zk中有了
    image.png
    然后消费端会收到对应的通知
    image.png
    可以看到这是一个路由规则的节点通知,当然如果你配置了配置中心,则在org.apache.dubbo.rpc.cluster.router.condition.config.ListenableRouter#process这里收到通知。
    根据服务名配置路由对应代码中的ServiceRouter,根据应用配置路由对应代码中的AppRouter,核心逻辑还是在他们的父类ListenableRouter中触发,匹配的规则在对象的matches变量中存放,不匹配的在mismatches中存放。
    需要注意:2.7版本之后需要配置配置中心才行

    标签路由

    标签路由,顾名思义就是根据标签进行路由,我们可以通过标签给对服务节点进行分组,然后在客户端打标签,将客户端的请求限定在标签对应分组的节点之中。它的原理和条件路由一样,也是需要通过管理平台配置来回调更新客户端的router规则。对应的是TagRouter。来看下怎么用
    1) 先给服务端打标签分组
    image.png
    2) 创建好之后,会在 dubbo/config/dubbo/provider.tag-router 路径下创建节点,可以看到已经有了
    image.png
    3) 在消费者端打上要走的标签

      @DubboReference(tag = "don")
      CityService cityService;

    4) 发请求,通过路由之后,我们可以看到选中了对应标签的分组
    image.png

    黑白名单

    这里所说的黑白名单并不是我们想的在服务端对请求的ip进行控制,而是基于条件路由来对客户端进行控制,host = xxx => 来表示黑名单地址,host != xxx => 来表示白名单地址。这里要注意一个点:如果你有多张网卡的,则此名单要全部设置上去或者在dubbo端配置地址,不然过滤可能不生效。下面来试一下,创建一个consumer的黑白名单
    image.png
    我本地的电脑ip为 10.60.45.143,发一个请求,发现被拦截了
    image.png

    动态配置

    Dubbo可以通过外部化配置将配置信息托管在配置中心,这个动态配置的功能就是动态修改配置中的配置,使得在Dubbo中的配置实时生效。
    它是对节点 /dubbo/config/dubbo/{key}.configurators 的更新或者创建。

    权重调整

    这个比较简单,就是如果服务端有多个节点,通过调整权重,我们可以将请求按比例进行分摊,也是保存到节点/dubbo/config/dubbo/{key}.configurators
    image.png
    看界面基本上已经非常清晰,不再多做介绍。

    负载均衡

    这个也比较简单,就是如果服务端有多个节点,通过负载均衡策略制定,我们可以将请求进行定制化分发,也是保存到节点/dubbo/config/dubbo/{key}.configurators
    image.png
    看界面基本上已经非常清晰,不再多做介绍。

    总结

    Dubbo Admin其实内容看起来不多,但是涉及到的Dubbo知识点非常多,如果没弄懂dubbo,使用上会有很多问题出现并且没有那么容易解决,我觉得官方还是应该出一个详细点的操作手册。


爱炒股的程序猿
50 声望4 粉丝

每天进步一点点


« 上一篇
dubbo 测试工具

引用和评论

0 条评论