Dubbo 源码解析 —— Directory
作者:肥朝 原文地址:http://www.jianshu.com/p/8e007012367e
友情提示:欢迎关注公众号【芋道源码】。????关注后,拉你进【源码圈】微信群和【肥朝】搞基嗨皮。
友情提示:欢迎关注公众号【芋道源码】。????关注后,拉你进【源码圈】微信群和【肥朝】搞基嗨皮。
友情提示:欢迎关注公众号【芋道源码】。????关注后,拉你进【源码圈】微信群和【肥朝】搞基嗨皮。
前言
由于明天还要加班(心疼自己一秒),之前答应过小伙伴每周更新一篇dubbo的源码解析的,鉴于上次讲到了集群容错的总体架构,这次主要讲讲第一个关键词 directory
,这个内容不多,比较适合这种时间比较紧的分享.后面还会陆续分享dubbo源码解析系列,但是不止于dubbo.
直入主题
首先来看一下 directory
接口的实现类,他主要有两个实现类,一个是 StaticDirectory
,一个是 RegistryDirectory
其实这个也是道很好的面试题,他还是可以区分三种人
一种是停留在使用层面的,没看过源码的,因此他不会懂得这两个实现类
第二种是看过官网如下描述,因此认为directory的实现类都是动态变化的
Directory 代表多个 Invoker,可以把它看成 List,但与 List 不同的是,它的值可能是动态变化的,比如注册中心推送变更
第三种则是有看过源码的,其实从
StaticDirectory
中的Static
关键词来看,就知道,这个其实是不会动态变化的,从下图知道,他的Invoker
是通过构造函数传入,StaticDirectory
用得比较少,主要用在服务对多注册中心的引用
本文介绍的重点是 RegistryDirectory
,首先来看看他的继承结构
这个 NotifyListener
中的 notify
方法就是注册中心的回调,也就是它之所以能根据注册中心动态变化的根源所在.
下面放一个上篇中集群容错的整体架构中的一个图唤醒大家的对 Directory
记忆
从中可以看出, Directory
获取 invoker
是从 methodInvokerMap
中获取的,从这个图也可以看出,这些主要都是 读
操作,那它的 写
操作是在什么时候写的呢?就是在回调方法 notify
的时候操作的
也就是注册中心有变化,则更新 methodInvokerMap
和 urlInvokerMap
的值(这个后面讲 服务引用原理
的时候会再提一下),这就是官网提到的 它的值可能是动态变化的,比如注册中心推送变更
的原因所在.
写在末尾
上一篇集群容错的整体架构篇幅较长,可能很多人没什么耐心看下去,所以本篇换成短小精干但是却不缺深度的分享.鉴于本人才疏学浅,不对的地方还望斧正,也欢迎关注我的简书,名称为 肥朝
Dubbo 源码解析 —— Directory相关推荐
- Dubbo源码解析 --- DIRECTORY和ROUTER
Dubbo源码解析 --- DIRECTORY和ROUTER 今天看一下Directory和Router. 我们直接从代码看起(一贯风格),先看后总结,对着总结再来看,相信会收获很多.我们先看com. ...
- Dubbo源码解析 —— Router
作者:肥朝 原文地址:http://www.jianshu.com/p/278e782eef85 友情提示:欢迎关注公众号[芋道源码].????关注后,拉你进[源码圈]微信群和[肥朝]搞基嗨皮. 友情 ...
- dubbo源码解析-集群容错架构设计
前言 本来是想把整个dubbo源码解析一次性弄完,再做成一个系列来发布的,但是正巧最近有位好朋友要去杭州面试,就和我交流了一下.本着对dubbo源码略有心得的心态,在交流过程中也发表了个人的一些粗劣的 ...
- dubbo(5) Dubbo源码解析之服务调用过程
来源:https://juejin.im/post/5ca4a1286fb9a05e731fc042 Dubbo源码解析之服务调用过程 简介 在前面的文章中,我们分析了 Dubbo SPI.服务导出与 ...
- dubbo源码解析-逻辑层设计之服务降级
Dubbo源码解析系列文章均来自肥朝简书 前言 在dubbo服务暴露系列完结之后,按计划来说是应该要开启dubbo服务引用的讲解.但是现在到了年尾,一些朋友也和我谈起了明年跳槽的事.跳槽这件事,无非也 ...
- dubbo源码解析之框架粗谈
dubbo框架设计 一.dubbo框架整体设计 二.各层说明 三.dubbo工程模块分包 四.依赖关系 五.调用链 文章系列 [一.dubbo源码解析之框架粗谈] [二.dubbo源码解析之dubbo ...
- Dubbo源码解析-Dubbo服务消费者_Dubbo协议(一)
前言: 在介绍完Dubbo 本地模式(Injvm协议)下的服务提供与消费后,上文我们又介绍了Dubbo远程模式(dubbo协议)下的服务暴露过程,本质上就是通过Netty将dubbo协议端口暴露出去, ...
- dubbo源码解析(九)远程通信——Transport层
远程通讯--Transport层 目标:介绍Transport层的相关设计和逻辑.介绍dubbo-remoting-api中的transport包内的源码解析. 前言 先预警一下,该文篇幅会很长,做好 ...
- dubbo源码解析-zookeeper创建节点
前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码 ...
- dubbo源码解析(二)
大家好,我是烤鸭: dubbo 源码解析: 1.服务导出 介绍: Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑.整个逻辑大致可分为三 ...
最新文章
- 一文详解 Kubernetes 中的服务发现,运维请收藏
- Java 条件运算符
- 腾讯云连续四年登上KVM开源贡献榜,两项技术获评年度核心突破
- 第四讲 Python3中的int型和浮点型
- 差点就被联通客服给营销了...
- java mifare_如何正确写入MifareUltralight NFC标签?
- HttpHandler:给指定路径下的图片添加水印显示
- ★LeetCode(108)——将有序数组转换为二叉搜索树(JavaScript)
- kafak 命令使用
- EtherCAT主站SOEM函数详解----SDO读写函数
- 备考通信复试过程中的一些知识点总结梳理——移动通信系统Ⅰ
- Differential Geometry之第十章极小曲面
- Nokia于MWC再出手机9 PureView 6颗镜头受到瞩目
- linux安装pytorch
- Unity 删除物体
- 解决了群友的js的问题 (! + [] + [] + ![]).length = 9 的验证 - Kaiqisan
- 网络安全kali渗透学习 web渗透入门 使用msf扫描靶机上mysql服务的空密码
- 每日一言:愿你等待的,终有回答
- ES学习系列02-创建索引
- Spring+Netty+Vue 网页版聊天应用,仿微信网页版聊天
热门文章
- 易语言怎么给手机发短信
- 如何在Java项目中定义并调用自己编写的native方法?
- ssh大学生银行助学贷款系统的设计与实现源码
- python 斯皮尔曼相关系数_斯皮尔曼等级相关系数(Spearmansrankcorrelationcoefficient)
- vscode安装插件提示版本不匹配或版本过低
- Python编写软件与从倍福PLC通讯软件
- 按键精灵一个命令学会这么厉害
- 华为鸿蒙专属文件后缀,华为鸿蒙——上传第三方APP【原理公布】
- c语言笔试题 选择题,C语言笔试选择题
- c语言调用DOS命令删除文件,DOS删除命令怎么使用?用DOS命令删除文件的方法