从dubbo-admin看dubbo
来源:互联网 发布:照片移花接木软件 编辑:程序博客网 时间:2024/06/05 08:02
写在前面:
我不知道是不是会有人和我有同样的想法,当浏览dubbo用户手册时,会觉得当一切基于配置,会给自己代码省去很多事情,然后会不禁赞叹,dubbo的设计真是精妙,简约而不简单!
其实今天想写的内容在API配置一节中可以窥见一部分,就是通过阅读dubbo-admin源码分析provider、consumer、route、override是如何同注册中心交互的。
先说最关键的一个类RegistryService,包名com.alibaba.dubbo.registry,通过包名可知它的实现是在dubbo-registry这个项目下的,其本质是通过创建代理,使用ZookeeperRegistry来操作zookeeper的节点数据,因为不在dubbo-admin项目中,所以也没有深入去了解。它的使用后面会有说。
接着说下次要关键的类,RegistryServerSync,是用来同步注册中心数据的。
private static final URL SUBSCRIBE = new URL(Constants.ADMIN_PROTOCOL, NetUtils.getLocalHost(), 0, "",Constants.INTERFACE_KEY, Constants.ANY_VALUE, Constants.GROUP_KEY, Constants.ANY_VALUE,Constants.VERSION_KEY, Constants.ANY_VALUE, Constants.CLASSIFIER_KEY, Constants.ANY_VALUE,Constants.CATEGORY_KEY,Constants.PROVIDERS_CATEGORY + "," + Constants.CONSUMERS_CATEGORY + "," + Constants.ROUTERS_CATEGORY + ","+ Constants.CONFIGURATORS_CATEGORY,Constants.ENABLED_KEY, Constants.ANY_VALUE, Constants.CHECK_KEY, String.valueOf(false));
registryService.subscribe(SUBSCRIBE, this);//订阅registryService.unsubscribe(SUBSCRIBE, this);//取消通过以上两个方法来进行订阅\取消操作。
此外,这个类还实现了NotifyListener接口,通过实现notify(List<URL> urls)这一方法,从来完成信息的更新以及分类缓存注册中心信息。
缓存会写入这个类的变量registryCache中。
其实讲到上面的内容已经可以结束了,因为无论provider、consumer、route、override,其实到最后就是一个URL,通过下面两个方法来进行数据的更新:
registryService.unregister(oldURL);registryService.register(newURL);这样,新的提供者、消费者、路由规则、动态配置就会写入注册中心,从而完成增删改这三个操作。
至于查,有点特别,为了节约性能,其实查找是通过在缓存中进行筛选,从而获得结果的。但由于是缓存,可能有些人直接调用provider或者consumer中service中findAll()方法会得到原始的值,就是无论你修改了权重或是启用\禁用,都不会改变findAll()的结果,原因就在这里,想要得到最新的信息,其实是需要遍历override,寻找对应的动态配置,然后取到动态配置设置的值。这些方法当然也可以在dubbo.governance.web.common.pulltool.Tool中找到。
说了这么多,其实最终想表达的就是有些事(我都已忘记,但是我······)其实没有想象中那么复杂,你完全可以通过在URL或者是domain类中添加参数来实现dubbo的扩展,从而完成自己定义的管控台,或者是更复杂的配置!!!(我没这本事啦~~~~~~)
写的有些凌乱,望包涵~
- 从dubbo-admin看dubbo
- dubbo-admin
- dubbo admin
- dubbo-admin
- Dubbo-admin
- 从dubbo看Netty使用
- dubbo 后台管理dubbo-admin
- 安装dubbo 管理中心 dubbo-admin
- dubbo学习-启动dubbo控制台dubbo-admin
- dubbo-admin部署
- dubbo-admin 使用记录
- dubbo admin 本地搭建
- dubbo-admin打包实践
- dubbo-admin的安装
- dubbo-admin安装
- Dubbo-admin安装配置
- dubbo admin安装
- dubbo-admin项目部署
- Dubbo各种协议
- iOS 整理基于socket集成Protobuf相关环境,以及将Protobuf文件转成OC文件,以及使用Protobuf
- 【HLS开发之一】FASTX详解
- Fragment 调用Activity onKeyDown()
- 学生管理系统总结——代码分析
- 从dubbo-admin看dubbo
- 寻找绝密的搜索引擎优化作弊代码
- 寻找绝密的搜索引擎优化作弊代码
- java ArrayList 转 string、string 转 ArrayList
- JDK代理和Cglib代理的
- Caused by: java.net.UnknownHostException: XX: XX: Temporary failure in name resolution
- 阿里云tomcat配置虚拟路径和域名访问
- 单独编辑页面下拉框取值出现问题
- Dubbo多协议