一、简介
Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
二、源码及官方示例
apache/dubbo-spring-boot-project
三、其他 demo
Springboot整合dubbo(一):搭建一个springboot + dubbo的微服务
Springboot整合dubbo(二):服务启用事务(注解实现)所会遇到的坑
Springboot整合Dubbo(三):consumer注册到zookeeper上,调用时接口注入为null的问题
三、dubbo-admin
1、启动 zookeeper
2、下载 dubbo-admin 并启动 dubbo-admin-server
配置admin-server端口号
配置admin-ui端口号
3、安装admin-ui,并启动
cmd定位到admin-ui目录,然后执行如下命令
npm install
启动admin-ui(本地)
npm run dev
4、admin-ui界面
登录界面
http://localhost:8082
root / root
管理界面
服务信息
测试界面
服务关系
四、zkui - zookeeper 管理界面
五、遇到的问题
1、在使用 dubbo - admin 时无法获取服务的元数据
原因,在dubbo-admin-server 端获取元数据时路径中少了“/service.data”;dubbo 2.6x 版本 和 dubbo - admin 中 dubbo 中 2.7 版本不一致
原始路径:/dubbo/metadata/org.apache.dubbo.demo.api.DemoService/provider/meetup-demo-provider
正确的路径:/dubbo/metadata/org.apache.dubbo.demo.api.DemoService/provider/meetup-demo-provider/service.data
解决方案:
在dubbo-admin-server 端修改获取元数据路径
2、无元数据信息,请升级至Dubbo2.7及以上版本
解决方案
在 ZK 上创建一个节点 /dubbo/config/dubbo/dubbo.properties, 并设置其内容为:
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
项目第一次启动调试的时候, 如果 ZK 没有这个配置, 会看不到元数据, 可以在 dubbo-admin 项目中 org.apache.dubbo.admin.config.ConfigCenter 类中添加以下代码来创建这个节点(也可以通过其他方式):
@PostConstruct public void init() throws Exception { CuratorFramework zkClient = CuratorFrameworkFactory.builder(). connectString("127.0.0.1:2181"). retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); zkClient.start(); if (zkClient.checkExists().forPath("/dubbo/config/dubbo/dubbo.properties") == null) { zkClient.create().creatingParentsIfNeeded().forPath("/dubbo/config/dubbo/dubbo.properties"); } zkClient.setData().forPath("/dubbo/config/dubbo/dubbo.properties", ("dubbo.registry.address=zookeeper://127.0.0.1:2181 " + "dubbo.metadata-report.address=zookeeper://127.0.0.1:2181").getBytes()); }
另外:在 provider 项目中添加以下配置
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
重启 dubbo-admin ,provider 即可。
3、dubbo提供者provider自动获取绑定端口port=-1
每个dubbo提供者provider 需要绑定一个端口,指定具体端口时如果端口重复了会启动失败报错端口已绑定。
dubbo微服务架构中每个dubbo微服务模块提供者 都需要绑定一个端口,如果端口固定的话那么需要通过配置文件统一管理,当dubbo微服务模块增加时需要新的具体端口,这样会很麻烦。
如果不想通过配置管理dubbo端口的话,可以设置dubbo提供者绑定端口值-1 , 这表示让dubbo提供者自己去寻找一个从20880开始递增的可用的端口。
如需指定特定的端口号也可以直接修改配置为具体端口号。
spring.dubbo.protocol.port=-1
参考资料:
对话Dubbo唤醒者北纬:3.0将至,阿里核心电商业务也在用Dubbo
dubbo - dubbo2.7.5 dubbo admin "无元数据信息,请升级至Dubbo2.7及以上版本"问题解决