本篇次要介绍一下dubbo admin的应用,应用之前咱们须要先进行搭建,对于如何搭建,参考 dubbo admin搭建。

如何应用

登录胜利之后咱们会看到如下界面,下面的服务就是咱们注册核心注册下来的服务

在对应的服务上点击详情

此时咱们就能看到对应服务的相干信息,很多时候如果你配置有问题是看不到这么多信息的,这里须要重点阐明一下这个页面怎么进去元数据信息的。

元数据信息怎么显示

1)application.properties 配置文件要配置好配置核心

也就是上图中的 admin.config-center,其余两个就间接正文掉不配了,这一点dubbo官网也提到了

官网这里提到一点,须要在配置核心配置注册核心以及元数据中心地址,这点怎么做呢?我这里也阐明一下(用的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:2181dubbo.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 自带了测试性能。
找到对应的服务之后点击测试按钮

而后就会显示所有的接口

点击对应的接口进行测试

当然你也能够在这边进入测试页

接口文档(dubbo-api-docs)

在界面中,咱们能够看到有一个接口文档的项

这个其实就是 dubbo-admin 应用了 dubbo-api-docs 的性能,这里说的应用并不是说间接引入对应的包,而是依据 dubbo-api-docs 裸露服务的规定来调用服务。
简略的介绍一下 dubbo-api-docs 原理:
其实就是裸露一个org.apache.dubbo.apidocs.core.providers.IDubboDocProvider接口,看下源码

对于应用 dubbo-api-docs(基于2.7.8.1版本),这里须要留神几点:

  • dubbo版本须要在2.7.7以上,不然不反对DubboService注解
  • 配置文件中肯定要配置ApplicationConfigRegistryConfigProtocolConfig,须要在application.properties 中配置,其余中央比方 dubbo.properties 中配置会启动出错,临时还没找到具体起因(前面会再看下)
    对于具体的应用,官网写得比拟具体了,参考 dubbo-api-docs应用。
    dubbo-api-docs介绍到这,持续看接口文档性能应用,目前是直连模式间接去提供者取的,所以填入提供者的ip和端口(后续据说会反对去注册核心拿),点击加载接口列表

    这里有个点要留神:dubbo-admin 默认调 dubbo-api-docs 时会带上版本号 v1 以及 group 值apiDocsGroup,而咱们服务提供者并没有,这样会导致调用失败,所以能够在 application.properties 中加配置设置为空值或者你本人须要的值

    点击服务之后就会呈现服务接口

    点击接口之后左边就会呈现相应的接口信息

    配置管理

    咱们晓得dubbo是反对配置核心的,这个配置管理其实就是对于配置核心的治理。

    默认是搜寻 global,也就是全局的配置,这里以 zookeeper 为例,对应的节点门路是 /dubbo/config/dubbo/dubbo.properties来存全局配置。

    这个门路是不是很相熟?没错,就是下面介绍元数据怎么来的时候配置过的节点,这个就是对那个配置的治理,咱们看下外面的数据

    接着咱们来创立一个配置,大略如下

    这里的利用名其实就是一个节点门路的key,存储格局为/dubbo/config/dubbo/{key}/dubbo.properties,所以咱们这个后果最终保留到zk的这个节点下,咱们在zk中也能看到

    而后搜寻一下刚创立的配置信息

    服务统计

    服务统计其实就是一个监控的性能,会对服务的 qps、rt 等进行统计展现,这个版本目前性能还不是很欠缺

    服务关系

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

    服务统计

    这里又波及到 dubbo 版本了,dubbo 在 2.7.2 开始才提供了度量指标的性能,服务统计性能在这个版本目前应该是无奈应用的,我在github上曾经提了 issue,其实个人感觉齐全能够将 metrics 集成到 monitor(前面会独自再介绍一下 dubbo monitor ),这里再说一下dubbo admin其实还是须要本人保护,社区也并不沉闷,尽管目前这个性能是有问题的,还是介绍一下如何应用。
    1) dubbo 服务配置 metrics 内容,次要就是端口号和协定就行了,如果这里不配协定,默认是dubbo

    2) 服务配置,生产端同理

    3) 发一次dubbo调用,促成生成 MetricsService
    4) 在dubbo admin中输出Ip发动查问

    如果配置都正确的状况下,这里会提醒 service not fund 的异样,具体起因能够看下面提的issue,然而我看网上还是有些人能用一部分服务统计性能的(除了线程池),如果你发现你能用服务统计性能,那请留言探讨。

    服务mock

    这个性能临时也没有实现

    服务治理

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

    条件路由

    先解释下什么是条件路由:基于 生产端条件 => 提供端条件 的规定对生产端的申请进行路由。具体的规定以及实现机制,举荐看下这篇 Dubbo 路由机制的实现。从代码中没看到配置和读取rule的逻辑,所以目前应该只能通过注册核心告诉机制来触发条件路由,这里说说怎么应用dubbo admin来创立

    下面就是创立的一个规定,对于服务级别的,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中有了

    而后生产端会收到对应的告诉

    能够看到这是一个路由规定的节点告诉,当然如果你配置了配置核心,则在org.apache.dubbo.rpc.cluster.router.condition.config.ListenableRouter#process这里收到告诉。
    依据服务名配置路由对应代码中的ServiceRouter,依据利用配置路由对应代码中的AppRouter,外围逻辑还是在他们的父类ListenableRouter中触发,匹配的规定在对象的matches变量中寄存,不匹配的在mismatches中寄存。
    须要留神:2.7版本之后须要配置配置核心才行

    标签路由

    标签路由,顾名思义就是依据标签进行路由,咱们能够通过标签给对服务节点进行分组,而后在客户端打标签,将客户端的申请限定在标签对应分组的节点之中。它的原理和条件路由一样,也是须要通过治理平台配置来回调更新客户端的router规定。对应的是TagRouter。来看下怎么用
    1) 先给服务端打标签分组

    2) 创立好之后,会在 dubbo/config/dubbo/provider.tag-router 门路下创立节点,能够看到曾经有了

    3) 在消费者端打上要走的标签

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

    4) 发申请,通过路由之后,咱们能够看到选中了对应标签的分组

    黑白名单

    这里所说的黑白名单并不是咱们想的在服务端对申请的ip进行管制,而是基于条件路由来对客户端进行管制,host = xxx => 来示意黑名单地址,host != xxx => 来示意白名单地址。这里要留神一个点:如果你有多张网卡的,则此名单要全副设置下来或者在dubbo端配置地址,不然过滤可能不失效。上面来试一下,创立一个consumer的黑白名单

    我本地的电脑ip为 10.60.45.143,发一个申请,发现被拦挡了

    动静配置

    Dubbo能够通过内部化配置将配置信息托管在配置核心,这个动静配置的性能就是动静批改配置中的配置,使得在Dubbo中的配置实时失效。
    它是对节点 /dubbo/config/dubbo/{key}.configurators 的更新或者创立。

    权重调整

    这个比较简单,就是如果服务端有多个节点,通过调整权重,咱们能够将申请按比例进行摊派,也是保留到节点/dubbo/config/dubbo/{key}.configurators

    看界面基本上曾经十分清晰,不再多做介绍。

    负载平衡

    这个也比较简单,就是如果服务端有多个节点,通过负载平衡策略制订,咱们能够将申请进行定制化散发,也是保留到节点/dubbo/config/dubbo/{key}.configurators

    看界面基本上曾经十分清晰,不再多做介绍。

    总结

    Dubbo Admin其实内容看起来不多,然而波及到的Dubbo知识点十分多,如果没弄懂dubbo,应用上会有很多问题呈现并且没有那么容易解决,我感觉官网还是应该出一个具体点的操作手册。