Dubbo剖析-服务消费方远程服务到Invoker的转换

一、前言

前面dubbo整体架构分析里面我们讲解了服务消费者消费一个服务的详细过程是,首先 调用 Protocol 的 refer 方法生成 Invoker 实例,接下来把Invoker 转换为客户端需要的接口(如:UserServiceBo),本文来讲解第一个环节的实现

image.png

二、远程服务到Invoker的转换

远程服务到Invoker的转换是下面代码完成的:

image.png

其中refprotocol是一个协议的扩展接口,根据url里面协议类型,经过增强wrapper类一步步调用到具体spi实现类RegistryProtocol,然后后者在步骤(10)从服务注册中心订阅具体服务提供方地址列表,并创建具体的DubboInvoker,并在创建它前启动netty client。步骤(11)创建一个DubboInvoker的装饰类,用来做负载均衡和容错处理。

image.png

三、总结

服务消费方远程服务到Invoker的转换,是通过 ReferenceConfig 类的 init 方法调用 Protocol 的 refer 方法生成 Invoker 实例,这是服务消费的关键。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

自动化模式中的MySQL

原文:MySQL on Autopilot 作者:Tim Gross 翻译:孙薇 自动化模式(Autopilot Pattern)是一种设计应用与基础架构的方式...

2555
来自专栏Java后端技术栈

从Nginx、Apache工作原理看为什么Nginx比Apache高效!

Nginx才短短几年,就拿下了Web服务器大壁江山,众所周知,Nginx在处理大并发静态请求方面,效率明显高于Httpd,甚至能轻松解决C10K问题。

1421
来自专栏静下来

Linux CentOS常用命令记录

我自己很少参与服务器管理,所以偶尔用下,老是忘记一些常用的命令。 人老了,啥事都记不住,各种密码也是,经常靠找回密码登录一些网站。 一:解压压缩 我比较常用ta...

3128
来自专栏金蝶云平台的专栏

Grunt :初次使用及前端构建经验

这是我们部门前端同学cobish的学习笔记,笔者编辑了一下并分享给大家。

4240
来自专栏北京马哥教育

解决DNS污染与劫持之使用特殊DNS端口

os:ubuntu 12.04 LTS 软件:dnsmasq dns测试: dig www.facebook.com @8.8.8.8 +short 37....

8694
来自专栏LIN_ZONE

Linux各目录及每个目录的详细介绍(转载)

Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图:

1262
来自专栏云计算教程系列

如何在CentOS 7上安装和配置mod_deflate

Mod_deflate是一个Apache模块,它允许在发送到客户端之前压缩Web服务器的输出。一旦您的网站内容的大小被压缩,其大小就会变小,客户端可以更快地下载...

1850
来自专栏散尽浮华

测试网站页面网速的一个简单Python脚本

无聊之余,下面分享一个Python小脚本:测试网站页面访问速度 [root@huanqiu ~]# vim pywww.py #!/usr/bin/python...

47310
来自专栏云计算教程系列

如何在CentOS 7上安装MongoDB

MongoDB是一个面向文档的数据库,是免费的开源软件。它被归类为NoSQL数据库,因为它不依赖于传统的基于表的关系数据库结构。相反,它使用类似JSON的文档和...

1661
来自专栏FreeBuf

为什么要禁止除GET和POST之外的HTTP方法?

HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT

1676

扫码关注云+社区

领取腾讯云代金券