Dubbo2.7源码详解

Spring与Dubbo整合原理与源码分析

【1】注解@EnableDubbo

【2】注解@EnableDubboConfig

1)DubboConfigConfigurationRegistrar类的作用

2)registerBeans做了什么

3)DubboConfigConfiguration类展示

4)那么必然又会解析到@EnableDubboConfigBindings注解

5)registrar.registerBeanDefinitions方法的调用情况

6)单个DubboConfigBindingBeanPostProcessor的展示(删减掉部分不怎么用到的)

【3】注解@DubboComponentScan

1)导入的DubboComponentScanRegistrar类做了什么

【4】扫描@Service注解,并且进行处理

汇总说明:实际上便是通过处理器扫描@Service注解的类,生成两个Bean【类对应的普通Bean,与Dubbo中要用到的ServiceBean】

其中ServiceBean,是先根据注解上的信息填充对应的属性,后采用环境变量中获取配置的属性,来完成属性填充。

【5】扫描@Reference注解,并且进行处理

1)ReferenceAnnotationBeanPostProcessor类会被调用是基于继承关系

2)ReferenceAnnotationBeanPostProcessor中的方法

【6】图示:

Dubbo服务导出

【0】服务导出要做的几件事情:

【1】核心点记录

【2】ServiceBean是怎么进程服务导出的

1)ServiceConfig类#export()方法

2)方法1:ServiceConfig类#checkAndUpdateSubConfigs()方法

3)方法1.1,AbstractInterfaceConfig类#startConfigCenter()方法

4)方法1.2,AbstractInterfaceConfig类#refresh()方法

5)方法2,ServiceConfig类#doExport()方法

6)doExportUrlsFor1Protocol方法

7)protocol.export的调用

8)doLocalExport方法

9)当数据发生改变时 OverrideListener 监听者的处理

【3】汇总

Dubbo服务引入

【0】核心点记录

【1】服务要怎么引入(ReferenceConfig类#get()方法)

【2】检查并拿到最新配置(ReferenceConfig类#checkAndUpdateSubConfigs()方法)

【3】初始化生成代理对象(ReferenceConfig类#init()方法)

【4】生成代理对象(ReferenceConfig类#createProxy()方法)

【5】PROXY_FACTORY.getProxy等过程

【6】对URL的处理过程

1)从@Reference的url属性中配置多个url,然后采用字符串分割的形式拿出来,包装后塞入urls列表中

2)加载注册中心地址

【7】invoker的包装过程

1)前置说明

2)先是调用 REF_PROTOCOL.refer

3)再是调用CLUSTER.join

【8】RegistryProtocol里面的监听过程

【9】监听器触发时

Original: https://www.cnblogs.com/chafry/p/16795441.html
Author: 忧愁的chafry
Title: Dubbo2.7源码详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/712580/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ncurses库的一些函数

    为了实现一个简单的聊天程序,如果使用普通的输入输出函数,会很凌乱。so,便想着能不能用下ncurses这个字符图形库 总结一下,就是这样。 使用ncurses时,先需要初始化窗口,…

    技术杂谈 2023年6月21日
    0125
  • Elasticsearch内容汇总[持续更新]

    一、Elasticsearch技术简介 Elastic本身也是一个分布式存储系统,如同其他分布式系统一样,我们经常关注的一些特性如下。 数据可靠性:通过分片副本和事务日志机制保障数…

    技术杂谈 2023年7月24日
    089
  • 【赵渝强老师】使用Oracle的跟踪文件

    一、什么是跟踪文件? 跟踪文件中包含了大量而详细的诊断和调试信息。通过对跟踪文件的解读和分析,我们可以定位问题、分析问题和解决问题。从跟踪文件的产生的来源来看,跟踪文件又可以分为两…

    技术杂谈 2023年7月24日
    073
  • 丈量你的代码,从cloc开始

    如果我想统计我当前的项目有多少代码量?行数最高的代码文件有哪些?并且排除某些目录,怎么统计?要统计出注释多少行,和代码多少行?使用cloc就行。 cloc是一款使用Perl语言开发…

    技术杂谈 2023年6月1日
    075
  • 从“蚁族”现象看高等教育公平

    一、蚁族的出现背景 2003年初,首批扩招大学生进入社会,与下岗再就业职工和民工潮汇聚成为就业洪峰,就业压力空前增大。 2014年,教育部公告显示,全国普通高校毕业生规模达到727…

    技术杂谈 2023年5月31日
    092
  • 浅析http状态码301、302、303、307、308区别(转载)

    http的重定向我们经常是张口就来,整个流程也非常简单,服务端HTTP返回码是30x,头里面的Location字段代表新的URL。如下图所示: 但重定向也还是有需要深入探讨地方,返…

    技术杂谈 2023年5月31日
    0124
  • 用指针低三位存放额外信息的优化方法

    在8字节对齐的情况下指针的低三位都是0,在某些情况下我们需要维持跟指针对应的额外信息,例如标志位,但是又不想为此创建一个结构体,那就可以利用指针的低三位来存储额外信息。 一种用指针…

    技术杂谈 2023年7月23日
    084
  • 技术管理进阶——把控基建与业务的比例和节奏

    原创不易,求分享、求一键三连 前段时间有个粉丝问了一个问题: 小钗你好,我十分喜欢技术,但真的转到工程团队后又十分困惑:工作没人评价也没人push!做得好没人夸奖,做得差没人批评,…

    技术杂谈 2023年6月1日
    093
  • 30个python操作小技巧

    大家好,我是小寒~ 今天给大家分享40个python常用小技巧 列表的元素可以在一行中进行方便的循环。 numbers = [1, 2, 3, 4, 5, 6, 7, 8] eve…

    技术杂谈 2023年7月24日
    082
  • graylog 源码结构&构建简单说明

    graylog 的源码属于一个单体系统,构建比较符合maven 构建系统,包含了web 以及server backend 模块,一些一些其他依赖模块web 构建使用了fronten…

    技术杂谈 2023年5月30日
    097
  • 整理一些Windows桌面运维常用的命令,并且整合成脚本

    github地址:alittlemc/toy 名字叫toy吧,没有啥技术含量,帮不了大忙,但是可以作为在一旁递工具的小弟,还是可减少自己一定的工作量的,毕竟有一些太长的命令也不是很…

    技术杂谈 2023年6月22日
    0102
  • HTTP2:如何提升网络速度

    上一篇文章我们聊了 HTTP/1.1 的发展史,虽然 HTTP/1.1 已经做了大量的优化,但是依然存在很多性能瓶颈,依然不能满足我们日益变化的新需求,所以就有了我们今天要聊的 H…

    技术杂谈 2023年5月31日
    077
  • 编程语言 = 类型系统 + 运行时

    编程语言 = 类型系统 + 运行时 类型系统 = 描述能力 + 对象模型 + 类型修饰符 + 结合能力 运行时 = 动态派发 + 内存管理 cpu 描述 : 线程 、 算法 、异常…

    技术杂谈 2023年5月31日
    093
  • 面向对象ooDay9

    同一个对象被造型为不同的类型时,有不同的功能——-所有对象都是多态的(明天总结详细讲) 对象的多态:水、我、你…… 同一类型的引用在…

    技术杂谈 2023年7月11日
    070
  • 钉钉的sonar集成通知

    钉钉(dingding)的sonar(代码质量管理工具的)集成通知,非常简单的一个小开源工具。 代码地址: https://gitee.com/chejiangyi/dingdin…

    技术杂谈 2023年7月23日
    063
  • 做测试比写代码难

    即不能让减少或增加的两方增减量不同,如 A给B转账,A-10元,B+10元,不变量就是这两个数字加起来=0 Original: https://www.cnblogs.com/da…

    技术杂谈 2023年7月25日
    0231
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球