zoukankan      html  css  js  c++  java
  • Dubbo源码分析

    疑问

      dubbo是什么?

        我X,这都不知道你是怎么点进来的

      为什么用dubbo?

        1、dubbo不仅仅是一个rpc调用工具,dubbo更是一个强大的rpc生态,dubbo支持市面上流行的各种rpc协议,俗话说就是你使用dubbo就可以和各种使用不同协议的rpc框架无缝对接(dubbo支持的)。

        2、dubbo的SPI机制,可以让拓展游刃有余,所有关键点皆可拓展替换

        3、dubbo不仅仅是一个rpc框架,dubbo提供了强大的服务治理、容错,以及必不可少的devops。

        4、太多了不说了,看看国内生产应用就好

      为什么分析dubbo时老找不到北,不知道调用链路跑哪了?

        1、分析dubbo源码要先去理解dubbo的SPI机制,这个搞不懂,你不可能看懂dubbo(如果有需要讲解,后续可以单独出一篇详细介绍)

        2、dubbo的责任链链条非常多,包装类、增强类特别多,这块看的时候一定要记下来

    分析

      下面分析均拿netty和zk做例子,当然这些全都可以无缝替换。下面只分析最核心的过程以及关键点,当然也勾勒出来了许多细节。话不多说,直接上图。 

      dubbo服务发布过程

      dubbo服务注册过程

        ReferenceAnnotationBeanPostProcessor注册过程看服务发布过程步骤4

        

      服务调用过程

        其实大家如果通过上面的图分析过整个流程后,就会发现服务调用的过程,其实就是上面的封装而已。下面这张图更能体会到dubbo中的责任链以及过滤链之长,当然也是我们需要学习的一种设计思想。

        

    总结

      其实源码能说的地方真的挺少的,更重要的是看源码的思路和理解作者的设计理念以及设计思想,是非常值得我们学习的(当然这只有你自己分析才能悟出来的)。这篇文章主要引导分析dubbo源码时遇到坎坷的同学提供更清晰的思路,以及记录自己分析时的整个一条链路,以及悟出来的关键点。更深入的东西这里并没有说,需要要同学自己去实践分析了才会理解。

  • 相关阅读:
    解决:Failed to update database: "APP_DATA\ASPNETDB.MDF" is readonly .
    MySQL DATE_ADD() 函数
    用struts上传图片,中文命名的图片无法显示
    hrbustoj 1291 点在凸多边形内
    按标签来查技术文章
    ClassLoader in Java
    [Python]标准库inspect
    IMEI修改(IMEI第十五位验证码的计算)
    游戏之巅:游戏背后的创业风云
    常用的网站后台编辑器
  • 原文地址:https://www.cnblogs.com/yangtianle/p/11321999.html
Copyright © 2011-2022 走看看