dubbo源码解析(五)rpc模块服务发布

目录

一、rpc模块常用类

二、服务提供者

         2.1、getInvoker方法

2.2、服务发布

2.3、创建服务

2.4、服务协议绑定


前言

   在上面两篇有关dubbo服务发布和服务消费的过程中我们主要讲述了如何将所有的配置文件转换为对应的Dubbo URL,虽然也提及了ProxyFactory和Invoker但是也是浅尝辄止,对于服务发布或者消费具体原理并没有介绍,这里我们使用一篇(不一定)来探究一个dubbo的服务发布和远程的rpc模块,通过对这个模块的学习将使我们对服务的发布和调用更加清晰。

此篇博文重点介绍服务发布的详细介绍, dubbo版本基于2.6.2

一、rpc模块常用类

  1.     Invoker类是Dubbo核心模型类,dubbo进行rpc调用的具体调用执行类,是其dubbo核心基础、对于服务方它是服务调用提供者,对于消费方它是服务的远程调用。该对象是通过ProxyFactory对象创建而来。在dubbo中默认实现为JavassistProxyFactory。
  2.    Protocol:该类是dubbo进行底层服务之底层通讯协议,dubbo默认使用dubbo协议使用更高效的netty框架进行通信。
  3. 对于服务提供者执行export方法:启动xxxServer,将服务执行对象【invoker】暴露在网络中
  4. 对于服务消费者调用refer方法:创建xxxClient,封装为调用对象【invoker】供consumer调用

二、服务提供者

    这里我们先通过服务提供者的相关服务发布过程了解其相关逻辑,话不多说上代码

    //1、创建代理对象Invoker(AbstractProxyInvoker)
    Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class) interfaceClass, registryURL.addParameterAndEncoded(Constants.EXPORT_KEY, url.toFullString()));
    //2、AbstractProxyInvoker对象包装成DelegateProviderMetaDataInvoker 添加了一个本身ServiceConfig实例作为metadata
    DelegateProviderMetaDataInvoker wrapperInvoker = new DelegateProviderMetaDataInvoker(invoker, this);
    //3、服务发将服务执行对象【invoker】以对应的协议(dubbo协议)暴露在网络中
    Exporter<?> exporter = protocol.export(wrapperInvoker);
    exporters.add(exporter);

       如上代码在ServiceConfig的export中最终将服务注册发布出去,首先下通过ProxyFactory(实现类为:JavassistProxyFactory)getInvoker获取服务调用实体对象Invoker

   2.1、getInvoker方法


                
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值