dubbo服务暴露实现原理

dubbo知识目录 

 

Dubbo的启动主要是发布服务的过程,起到核心作用的就是ServiceConfig(ServiceConfig就是我们在Dubbo的配置文件中配置的dubbo:service这些配置项对应的实体类)。服务的启动初始位置也基本是在这里

 

服务提供者代码

     ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();
     service.setApplication(new ApplicationConfig("dubbo-demo-api-provider"));

        RegistryConfig registry = new RegistryConfig();
        registry.setAddress("redis://127.0.0.1:6379");
        registry.setProtocol("dubbo");
        registry.setTimeout(5000);
        registry.setGroup("1.0");

        service.setRegistry(registry);
        // multicast组播协议 windows默认不支持 ,linux,mac可以
  //      service.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
        service.setInterface(DemoService.class); //配置接口
        service.setRef(new DemoServiceImpl()); //配置实现类

        service.export();
        System.in.read();

 

ServiceConfig

配置层Config  服务端的配置类

  • ApplicationConfig 应用配置
  • RegistryConfig注册中心配置,可以配多个注册中心

最终调用 ServiceConfig .export() 方法完成服务的发布
export() 发布的主要流程为
ServiceConfig ------|ProxyFactory|---->Invoker-------|Protocol|----->Exporter
一、通过ProxyFactory 构建执行实体 Invoker
二、通过Protocol构建 发布实体 Exporter 并发布服务

 

 

通过ServicConfig中的内容分解,我们看出来里面主要做的内容如下:

  • 检验所需参数的合法性
  • 将多层的参数(可能重复配置)最终整理出最终的结果(map),然后根据参数拼接成暴露服务需用到的url。
  • 处理generic,Stub,injvm等其他需要支持的内容,补充dubbo的功能多样性,但是都不涉及核心流程。
  • 根据对应的协议将服务进行暴露(将提供的服务推送到注册中心供服务调用者发现),默认使用Dubbo协议。

 

其实服务暴露的过程只要是完成了两件事情:

  • 将服务注册到注册中心,供调用方发现
  • 监听指定的端口,等待服务调用方进行调用

 

参考

https://www.jianshu.com/p/4d726300d3c3

https://www.jianshu.com/p/d2924a2d79e9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值