dubbo服务暴露原理-远程暴露
1.与本地暴露相比,远程暴露也大同小异
我们已经到了第三个关键词Procotol我们来看看他的继承体系图
按照经典图的路线,我们下一个关键词应该就是Server
了,从方法名openServer(url)
也可以看出来确实是这样.在这个Procotol
和Transporter
插播一个关键词,那就是Exchanger
从单词意思我们知道,这个是交换
的意思,按照计算机术语,这个称之为交换层
更贴切.那么问题来了,他交换什么东西?那我们来看一下他的方法图(粗暴式点题,怎么看源码)
下面就要注意了,我们要来到下一个关键词Transporter
,这个从字面理解为传输层
,那这个究竟是什么传输层?我们来看一下继承体系图
从这里就可以看出,这个是网络传输层
,其中Grizzly
和Mina
和Netty
都是非常有名的NIO框架,想了解他们可以查一下相关资料
继续往下走,看到这里有个构造方法,那么就要敲黑板画一下重点了.看源码凡是遇到构造方法的,都要特别注意,因为我们知道调用构造方法前,会先调用父类的构造方法,因此,这个继承体系图是要看一下的
因此我们将断点打到他的父类上,可以看出,这做的主要是一些根据配置文件设置一些超时时间之类的
高潮还没完,我们注意到,在AbstractServer
类中有一个doOpen()
方法.这个doOpen()
方法方法是一个抽象方法,这种做法称之为钩子方法
.也叫模板方法
,熟悉设计模式的话,会对这种方式并不模式,其实在Servlet
的init()
方法也是这种做法,可以看看Servlet
的源码(粗暴式点题,看源码学到了什么)
那么我们就到了doOpen
方法,这里如果大家写过一些简单的netty例子看到这段代码就会很熟悉了
另外提一下这个9
并不是固定的,这个和我们的机器是有关的,不熟悉的参数我们可以用以下的方式查一下文档
Transporter
关键词之前是有new
一个HeaderExchangeServer
对象的.在这个构造方法中,通过startHeatbeatTimer
设置了netty的心跳,这些netty的细节我们在后面的netty专题再细说正如官方文档所说Dubbo 处理服务暴露的关键就在 Invoker 转换到 Exporter 的过程
,看到这个exporter
,也预告本篇走到了尾声
参考:https://www.jianshu.com/p/893f7e6e0c58
dubbo服务暴露原理-远程暴露的更多相关文章
- 【Dubbo源码阅读系列】服务暴露之远程暴露
引言 什么叫 远程暴露 ?试着想象着这么一种场景:假设我们新增了一台服务器 A,专门用于发送短信提示给指定用户.那么问题来了,我们的 Message 服务上线之后,应该如何告知调用方服务器,服务器 A ...
- 阿里dubbo服务注册原理解析
阿里分布式服务框架 dubbo现在已成为了外面很多中小型甚至一些大型互联网公司作为服务治理的一个首选或者考虑方案,相信大家在日常工作中或多或少都已经用过或者接触过dubbo了.但是我搜了 ...
- Dubbo——服务发布原理
引言 在使用Dubbo的时候你一定会好奇它是怎么实现RPC的,而要了解它的调用过程,必然需要先了解其服务发布/订阅的过程,本篇将详细讨论Dubbo的发布过程. 源码分析 发布服务 新学Dubbo大都会 ...
- dubbo服务暴露原理
1.发布流程 暴露本地服务 暴露远程服务 启动netty 连接zookeeper 到zookeeper注册 监听zookeeper 2.官方文档 3.看输出日志,就会发现在暴露本地服务之前,有一句很重 ...
- Dubbo服务暴露分析
Dubbo的服务暴露是一个重要的特性,了解其机制很重要.之前有很多人写了有关的源代码分析,在本文中不再重新分析.官方文档中的一篇写的就很好,本文主要是有关内容进行补充与总结. 传送门:服务导出 为什么 ...
- 源码分析--dubbo服务端暴露
服务暴露的入口方法是 ServiceBean 的 onApplicationEvent.onApplicationEvent 是一个事件响应方法,该方法会在收到 Spring 上下文刷新事件后执行服务 ...
- 2、Dubbo源码解析--服务发布原理(Netty服务暴露)
一.服务发布 - 原理: 首先看Dubbo日志,截取重要部分: 1)暴露本地服务 Export dubbo service com.alibaba.dubbo.demo.DemoService to ...
- dubbo系列四、dubbo服务暴露过程源码解析
一.代码准备 1.示例代码 参考dubbo系列二.dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台) 2.简单了解下spring自定义标签 https://w ...
- 《Duubo系列》-Dubbo服务暴露过程
我今天来就带大家看看 Dubbo 服务暴露过程,这个过程在 Dubbo 中其实是很核心的过程之一,关乎到你的 Provider 如何能被 Consumer 得知并调用. 今天还是会进行源码解析,毕竟我 ...
随机推荐
- 【odoo】ref 1-6说明
(0,_ ,{'field': value}) 这将创建一个新的记录并连接它 (1,id,{'field': value}): 这是更新一个已经连接了的记录的值 ( ...
- ES6学习笔记(2)- 箭头函数
1. 箭头函数声明 箭头函数的声明方式示例: 1 const printValue = (condition) => { 2 let testValue = 55; 3 if (conditio ...
- python tempfile 创建临时目录
一.tempfile介绍 该模块创建临时文件和目录.它适用于所有支持的平台.TemporaryFile,NamedTemporaryFile,TemporaryDirectory,和SpooledTe ...
- 扩展欧几里得算法(EXGCD)学习笔记
0.前言 相信大家对于欧几里得算法都已经很熟悉了.再学习数论的过程中,我们会用到扩展欧几里得算法(exgcd),大家一定也了解过.这是本蒟蒻在学习扩展欧几里得算法过程中的思考与探索过程. 1.Bézo ...
- Qt3D使用assimp加载常规模型文件
Qt3D使用assimp加载三维模型文件,assimp支持很多常规格式的三维模型格式: 其中支持导入的格式有: 3D 3DS 3MF AC AC3D ACC AMJ ASE ASK B3D BLEND ...
- P1423_小玉在游泳(JAVA语言)
题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦. 已知小玉第一步能游2米,可是随着越来越累,力气越来越小, 她接下来的每一步都只能游出上一步距离的98%. 现在小玉想知道 ...
- 当红开发语言Go,真的是未来的技术主流吗?
摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语 ...
- 「HTML+CSS」--自定义按钮样式【001】
前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...
- 更改当前目录--cd
pwd 显示当前所在的目录路径 cd ../ 回到上一层目录 cd ../../ 回到上上层目录 cd / 回到根目录 cd ~ 回到当前用户的根目录 c ...
- Mysql之案例分析(一)
可见性分析 CREATE TABLE `t` ( `id` int(11) NOT NULL, `k` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGIN ...