美文网首页
测试 dubbo-admin 和 dubbo-monitor-s

测试 dubbo-admin 和 dubbo-monitor-s

作者: 钟mh | 来源:发表于2018-11-22 15:33 被阅读0次

测试服务采用双协议,一个rest协议,一个dubbo协议.

测试 dubbo-admin,dubbo-admin主要是做路由配置和动态配置2块。


动态配置测试

1. checkout tag dubbo-2.6.0代码(命令 git checkout -B tag-dubbo-2.6.0 dubbo-2.6.0),进入dubbo-admin目录, mvn jetty:run

2. 测试"禁用提供者",参数 disabled=true

dubbo协议:

override://10.1.9.254:20800/com.alibaba.boot.dubbo.service.IHelloService?category=configurators&disabled=true&dynamic=false&enabled=true&group=test&version=1.0.0

rest协议:

override://10.1.9.254:7001/com.alibaba.boot.dubbo.service.IHelloRestService?category=configurators&disabled=true&dynamic=false&enabled=true&group=test&version=1.0.0

3.结果

        1. dubbo协议配置后无法访问。rest协议,通过 curl http://localhost:7001/rest/hello,还可以访问, 因为不走 cluster(cluster配置只在consumer端生效,curl跳过了consumer配置)。 

        2. rest协议无法泛化调用

4.看看文档

动态配置url规则

    override: 覆盖方式,协议,必填

    0.0.0.0 : 表示对哪些ip地址生效, 如果只覆盖某个ip, 请填入具体ip地址,必填

    com.foo.BarService :  必填,对指定服务生效

    category=configurators :  必填, 标识该数据为动态配置类型, 必填

    dynamic=false :  表示该数据为持久数据, 当注册方退出时, 数据依然保存在注册中心, 必填

    enabled=true:  覆盖规则是否生效, 缺省生效

    application=foo: 表示只对指定应用生效, 可不填,表示对所有应用生效

可以覆盖的参数, 供参考

    1. 容量评估时调整权重,降低一台机器的权重,看其他机器的压力. 参数: weight=200, 默认100

    2. 禁用提供者, 下线某台机器.  参数: disabled=true

    3. 调整负载均衡策略. 参数: loadbalance=leastactive

    4. 服务降级.  参数: mock=force:return+null / mock=fail:return+null

    5. 设置超时时间. 参数 timeout=1000

5. 也可以代码实现

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();

Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));

registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&timeout=1000"));

测试 dubbo-monitor-sample

1. dubbo-monitor-sample,SimpleMonitorService 也是一个dubbo服务,    dubbo-monitor-sample作为privider存在。配置文件(conf/dubbo.properties)里, dubbo.container=log4j,spring,registry,jetty

          dubbo container, 可以看源码,不是很难理解, 启动执行的入口是 com.alibaba.dubbo.container.Main

        不太了解jetty的性能,如果访问qps较高,会不会有影响

2. DubboMonitor 定时调用 monitorService接口,测试时可以把interval调短一些 <dubbo:monitor protocol="registry" interval="5000">

3. MonitorFilter 调用了 MonitorService,MonitorFactory采用异步的方式来获取 MonitorService,cluster模式是failsafe,所以本次调用不会影响正常服务

       这里有个bug, DubboMonitorFactory.createMonitor

看代码是用failsafe ,可是断点跟踪

怎么是 Failover  。。。

RegistryDirectory 里

传的参数被clear掉了。。

dubbo 的 url构造、传参,太容易把人绕晕。尝试

解决

不晓得是我使用姿势不对,还是真是个bug。。。

dubbo-2.6.0 版本包含 dubbo-admin 和 dubbo-monitor-sample,新版本git地址,https://github.com/apache/incubator-dubbo-ops,单独一个ops项目, 现在提供的功能和老版本一样,有几个未实现的功能入口

总结

    1. 路由规则很强大,zookeeper不支持多dc,可以用路由解决。

    2. 容量评估,评估单台机器性能,可以调整weight

    3. 某台机器出问题,可是屏蔽访问

    4. dubbo-monitor-sample 只支持单台,如果负载较大,应该也可以通过路由解决

相关文章

网友评论

      本文标题:测试 dubbo-admin 和 dubbo-monitor-s

      本文链接:https://www.haomeiwen.com/subject/osplqqtx.html