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 得知并调用. 今天还是会进行源码解析,毕竟我 ...
随机推荐
- 顺序表及基本操作(C语言)
#include <stdio.h> #include <stdlib.h> //基本操作函数用到的状态码 #define TRUE 1; #define FALSE 0; # ...
- css实现0.5像素的底边框。
由于设计图的1px在移动端开发中的像素比是2倍,在实际开发中却是需要1px的线条,虽然最直接的方式是将线条设置为0.5px,但有些移动端对于0.5px的解析为0,变成了无边框的显示.因此处理该需求我们 ...
- Selenium 4.0beta:读源码学习新功能
Selenium 4 源码分析 这一篇文章我们来分析Selenium 4 python版源码. 除非你对Selenium 3的源码烂熟于心,否则通过对比工具分析更容易看出Selenium 4更新了哪些 ...
- 解决unbutu网络编程socket_tcp连接不上网络助手
unbutu开放指定端口 开放端口8080 sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 保存设置 iptables-save 在终端中输入 ...
- 11、MyBatis教程之动态SQL
12.动态SQL 1.介绍 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或 ...
- SynchronousQueue核心源码分析
一.SynchronousQueue的介绍 SynchronousQueue是一个不存储元素的阻塞队列.每一个put操作必须等待一个take操作,否则不能继续添加元素.SynchronousQueue ...
- Git 上传项目到 Github
Git 上传项目到 Github 该文章主要讲解Git 上传项目到 Github,Gitee同理 配置Git 下载.安装Git 下载后一路(傻瓜式安装)直接安装即可 如果第一次使用git的话,需要设置 ...
- (十四--十五)数据库查询优化Part I
(十四--十五)数据库查询优化Part I 如果理解的有问题.欢迎大家指出.这也是我在看课记得笔记..可能会有很多问题 查询优化的重要性 请记住用户只会告诉DMBS他们想要什么样的结果,而不会告诉他们 ...
- 【10.5NOIP普及模拟】sort
[10.5NOIP普及模拟]sort 文章目录 [10.5NOIP普及模拟]sort 题目描述 输入 输出 输入输出样例 样例输入 样例输出 数据范围限制 解析 code 题目描述 小x和小y是好朋友 ...
- java面试-生产环境出现CPU占用过高,谈谈你的分析思路和定位
思路:结合Linux和JDK命令一起分析 1.用top命令找出CPU占比最高的进程 2.ps -ef|grep java|grep -v grep 或者jps -l进一步定位,得知是怎样一个后台程序惹 ...