Dubbo 源码解析 – 本地暴露

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Dubbo 源码解析 – 本地暴露

Dubbo 源码解析 - 本地暴露

作者:肥朝 原文地址:http://www.jianshu.com/p/1c53767359c6

友情提示:欢迎关注公众号【芋道源码】。😈关注后,拉你进【源码圈】微信群和【肥朝】搞基嗨皮。

友情提示:欢迎关注公众号【芋道源码】。😈关注后,拉你进【源码圈】微信群和【肥朝】搞基嗨皮。

友情提示:欢迎关注公众号【芋道源码】。😈关注后,拉你进【源码圈】微信群和【肥朝】搞基嗨皮。

前言

上一篇dubbo源码解析-服务暴露原理中我们根据官方文档已经进行了 具体服务到invoker的转换的介绍,但是后面却发现文档却说 Dubbo处理服务暴露的关键就在Invoker转换到Exporter的过程

Dubbo 源码解析 - 本地暴露从标题就知道,本篇讲的是 本地暴露,面试主要问得多是 远程暴露,因为远程暴露涉及到了 zookeeper netty.比如和 zookeeper相关的最常问的两道题是 服务提供者能实现失效踢出是根据什么原理?, dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?.当然如果这两个你答得好,还会往下问,比如 zookeeper实现分布式锁, zookeeper选举机制等等, netty能问得可就很多了, AIO BIO NIO, 线程模型等等, netty如果要问的话一般要问得比 zookeeper要深一些.

虽然本地暴露面试问得不多,但是我们看源码的初心是为了解决问题,可以把 本地暴露当做一个学习 远程暴露前的预热

Dubbo 源码解析 - 本地暴露

插播面试题

  • 讲讲dubbo服务暴露中本地暴露,并画图辅助说明
  • 直入主题

    犹豫了好久,还是决定用之前 别怕看源码,一张图搞定Mybatis的Mapper原理 的一图胜千言的风格来描述这个本地暴露.(手机看大图非常模糊,建议电脑上观看)

    Dubbo 源码解析 - 本地暴露

    对于一些细节的地方,还是要加以辅助说明,首先还是拿文档中的服务暴露图来唤醒大家回忆

    Dubbo 源码解析 - 本地暴露

    比如图中的1-4就是对应 具体服务到invoker的转换,5-11对应 Invoker转换为Exporter

    在7中,做的是过滤器操作,详细看下图

    Dubbo 源码解析 - 本地暴露

    从中可以看出dubbo默认的过滤器是8个.

    其实第10步中还利用 exporterMap缓存了exporter, key value参考下图

    Dubbo 源码解析 - 本地暴露

    最后一张整个过程转化完成的图来结束本篇本地暴露

    Dubbo 源码解析 - 本地暴露

    写在最后

    终点也是起点,本篇结束后我也要开始为下篇的开始准备了,我们下周再见.鉴于本人才疏学浅,不对的地方还望斧正,也欢迎点赞或者关注我的简书,名称为 肥朝

    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> Dubbo 源码解析 – 本地暴露