Dubbo源码-00-源码环境

开篇明确阅读源码需要解决的疑问,带着问题驱动源码的阅读

版本

为了尽可能减少源码阅读代价,选用2.6.x版本

源码地址

Apache源码或者我Fork的分支study-2.6.x带注释

架构图

Demo

.
├── dubbo-demo
│   ├── dubbo-demo-api      // 接口
│   ├── dubbo-demo-consumer // 消费者
│   ├── dubbo-demo-provider // 提供者
└── tree.txt

以native方式

1 生产者

public class ApiProvider {

    public static void main(String[] args) throws IOException {
        // 服务提供者暴露服务配置 封装了与注册中心的连接
        ServiceConfig<DemoService> service = new ServiceConfig<DemoService>();
        service.setApplication(new ApplicationConfig("native-provider")); // 应用配置
        service.setRegistry(new RegistryConfig("zookeeper://localhost:2181")); // 注册中心
        service.setProtocol(new ProtocolConfig("dubbo", 20880)); // 协议
        service.setInterface(DemoService.class);
        service.setRef(new DemoServiceImpl()); // 提供的服务实现
        // 暴露及注册服务
        service.export();
        System.in.read();
    }
}

2 消费者

public class ApiConsumer {

    public static void main(String[] args) {
        // 引用远程服务 此实例很重 封装了与注册中心的连接以及与提供者的连接
        ReferenceConfig<DemoService> reference = new ReferenceConfig<DemoService>();
        reference.setApplication(new ApplicationConfig("native-consumer")); // 配置应用信息
        reference.setRegistry(new RegistryConfig("zookeeper://localhost:2181")); // 配置注册中心信息
        reference.setInterface(DemoService.class); // 引用的远程服务的接口抽象
        // 和本地bean一样使用service 此代理对象内部封装了所有通讯细节 服务端获得了远程服务的代理对象 像调用本地方法一样
        DemoService demoService = reference.get();
        String ret = demoService.sayHello("world");
        System.out.println("ret=" + ret);
    }
}
posted @   Bannirui  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示