作者:肥朝 原文地址: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的时候操作的

也就是注册中心有变化,则更新 methodInvokerMapurlInvokerMap的值(这个后面讲 服务引用原理的时候会再提一下),这就是官网提到的 它的值可能是动态变化的,比如注册中心推送变更的原因所在.

写在末尾

上一篇集群容错的整体架构篇幅较长,可能很多人没什么耐心看下去,所以本篇换成短小精干但是却不缺深度的分享.鉴于本人才疏学浅,不对的地方还望斧正,也欢迎关注我的简书,名称为 肥朝

Dubbo 源码解析 —— Directory相关推荐

  1. Dubbo源码解析 --- DIRECTORY和ROUTER

    Dubbo源码解析 --- DIRECTORY和ROUTER 今天看一下Directory和Router. 我们直接从代码看起(一贯风格),先看后总结,对着总结再来看,相信会收获很多.我们先看com. ...

  2. Dubbo源码解析 —— Router

    作者:肥朝 原文地址:http://www.jianshu.com/p/278e782eef85 友情提示:欢迎关注公众号[芋道源码].????关注后,拉你进[源码圈]微信群和[肥朝]搞基嗨皮. 友情 ...

  3. dubbo源码解析-集群容错架构设计

    前言 本来是想把整个dubbo源码解析一次性弄完,再做成一个系列来发布的,但是正巧最近有位好朋友要去杭州面试,就和我交流了一下.本着对dubbo源码略有心得的心态,在交流过程中也发表了个人的一些粗劣的 ...

  4. dubbo(5) Dubbo源码解析之服务调用过程

    来源:https://juejin.im/post/5ca4a1286fb9a05e731fc042 Dubbo源码解析之服务调用过程 简介 在前面的文章中,我们分析了 Dubbo SPI.服务导出与 ...

  5. dubbo源码解析-逻辑层设计之服务降级

    Dubbo源码解析系列文章均来自肥朝简书 前言 在dubbo服务暴露系列完结之后,按计划来说是应该要开启dubbo服务引用的讲解.但是现在到了年尾,一些朋友也和我谈起了明年跳槽的事.跳槽这件事,无非也 ...

  6. dubbo源码解析之框架粗谈

    dubbo框架设计 一.dubbo框架整体设计 二.各层说明 三.dubbo工程模块分包 四.依赖关系 五.调用链 文章系列 [一.dubbo源码解析之框架粗谈] [二.dubbo源码解析之dubbo ...

  7. Dubbo源码解析-Dubbo服务消费者_Dubbo协议(一)

    前言: 在介绍完Dubbo 本地模式(Injvm协议)下的服务提供与消费后,上文我们又介绍了Dubbo远程模式(dubbo协议)下的服务暴露过程,本质上就是通过Netty将dubbo协议端口暴露出去, ...

  8. dubbo源码解析(九)远程通信——Transport层

    远程通讯--Transport层 目标:介绍Transport层的相关设计和逻辑.介绍dubbo-remoting-api中的transport包内的源码解析. 前言 先预警一下,该文篇幅会很长,做好 ...

  9. dubbo源码解析-zookeeper创建节点

    前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码 ...

  10. dubbo源码解析(二)

    大家好,我是烤鸭: dubbo 源码解析: 1.服务导出 介绍: Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑.整个逻辑大致可分为三 ...

最新文章

  1. 一文详解 Kubernetes 中的服务发现,运维请收藏
  2. Java 条件运算符
  3. 腾讯云连续四年登上KVM开源贡献榜,两项技术获评年度核心突破
  4. 第四讲 Python3中的int型和浮点型
  5. 差点就被联通客服给营销了...
  6. java mifare_如何正确写入MifareUltralight NFC标签?
  7. HttpHandler:给指定路径下的图片添加水印显示
  8. ★LeetCode(108)——将有序数组转换为二叉搜索树(JavaScript)
  9. kafak 命令使用
  10. EtherCAT主站SOEM函数详解----SDO读写函数
  11. 备考通信复试过程中的一些知识点总结梳理——移动通信系统Ⅰ
  12. Differential Geometry之第十章极小曲面
  13. Nokia于MWC再出手机9 PureView 6颗镜头受到瞩目
  14. linux安装pytorch
  15. Unity 删除物体
  16. 解决了群友的js的问题 (! + [] + [] + ![]).length = 9 的验证 - Kaiqisan
  17. 网络安全kali渗透学习 web渗透入门 使用msf扫描靶机上mysql服务的空密码
  18. 每日一言:愿你等待的,终有回答
  19. ES学习系列02-创建索引
  20. Spring+Netty+Vue 网页版聊天应用,仿微信网页版聊天

热门文章

  1. 易语言怎么给手机发短信
  2. 如何在Java项目中定义并调用自己编写的native方法?
  3. ssh大学生银行助学贷款系统的设计与实现源码
  4. python 斯皮尔曼相关系数_斯皮尔曼等级相关系数(Spearmansrankcorrelationcoefficient)
  5. vscode安装插件提示版本不匹配或版本过低
  6. Python编写软件与从倍福PLC通讯软件
  7. 按键精灵一个命令学会这么厉害
  8. 华为鸿蒙专属文件后缀,华为鸿蒙——上传第三方APP【原理公布】
  9. c语言笔试题 选择题,C语言笔试选择题
  10. c语言调用DOS命令删除文件,DOS删除命令怎么使用?用DOS命令删除文件的方法