Dubbo学习记录

一、简介

Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

二、源码及官方示例

apache/dubbo

apache/dubbo-samples

apache/dubbo-spring-boot-project

apache/dubbo-admin

三、其他 demo

dubbo入门和springboot集成dubbo小例子

springboot-dubbo-demo

Springboot整合dubbo(一):搭建一个springboot + dubbo的微服务

Springboot整合dubbo(二):服务启用事务(注解实现)所会遇到的坑

Springboot整合Dubbo(三):consumer注册到zookeeper上,调用时接口注入为null的问题

SpringBoot整合Dubbo

三、dubbo-admin

dubbo-admin

新版Dubbo Admin介绍

dubbo admin的搭建(windows环境)

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 for Go 版本

Dubbo详细介绍与安装使用过程

高效开发 Dubbo?用 Spring Boot 可得劲!

dubbo - dubbo2.7.5 dubbo admin "无元数据信息,请升级至Dubbo2.7及以上版本"问题解决

Dubbo 2.7.x admin 控制台管理提示 : 无元数据信息,请升级至Dubbo2.7及以上版本

如何配置dubbo.configcenter

原文地址:https://www.cnblogs.com/wangwangfei/p/7347362.html