源码的解析在官网都已经写的非常详细,可以参考:http://dubbo.io/Developer+Guide-zh.htm

服务提供者暴露一个服务的详细过程

首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloWorldImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转化。接下来就是Invoker转换到Exporter的过程。
Dubbo处理服务暴露的关键就在Invoker转换到Exporter的过程(如上图中的红色部分)。 Dubbo协议的Invoker转为Exporter发生在DubboProtocol类的export方法,它主要是打开socket侦听服务,并接收客户端发来的各种请求,通讯细节由Dubbo自己实现。

各种注册中心的实现

各种协议的实现

将服务注册到zookeeper

服务消费者消费一个服务的详细过程

首先ReferenceConfig类的init方法调用Protocol的refer方法生成Invoker实例(如上图中的红色部分),这是服务消费的关键。接下来把Invoker转换为客户端需要的接口(如:HelloWorld)。这里获取invoker的时候,如果是注册中心同一个服务有多个提供者,消费者会根据配置的负载均衡来选择出一个作为提供者来使用。并且也有各种容错处理机制。

消费端各种容错机制

消费端各种负载均衡机制

使用RandomLoadBalance获取一个提供者

转载于:https://www.cnblogs.com/liouwei4083/p/6127727.html

dubbo学习 二 dubbo源码大致查阅相关推荐

  1. dubbo学习笔记 一 源码编译

    前面学习了netty和rocketmq,当然前面的文章还会继续更新,继续往下写 2016 没几天了,我打算写下dubbo 2017 继续深入源码,大家有啥问题 都可以一起来讨论 源码搭建 下载源码 同 ...

  2. Golang源码学习(二)----Go源码学习基础

    ### 本文源码版本为 GO 1.17.8 Windows/amd64: ### 可能参与对比的版本:GO 1.16.2 Linux/amd64一.Golang的编译器究竟是如何工作的? (学习源码有 ...

  3. Dubbo系列(二)源码分析之SPI机制

    Dubbo系列(二)源码分析之SPI机制 在阅读Dubbo源码时,常常看到 ExtensionLoader.getExtensionLoader(*.class).getAdaptiveExtensi ...

  4. Dubbo 实现原理与源码解析系列 —— 精品合集

    摘要: 原创出处 http://www.iocoder.cn/Dubbo/good-collection/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1.[芋艿]精尽 Dubbo 原理与源码专栏 2.[ ...

  5. Dubbo架构设计与源码解析(一) 架构设计

    作者:黄金 一.架构演变 单应用架构 ----> 垂直架构 ----> 分布式架构 ----> 微服务架构 ----> 云原生架构 二.Dubbo总体架构 1.角色职能 • C ...

  6. Dubbo负载均衡的源码流程(2022.5.30)

    Dubbo负载均衡的源码流程 1.默认负载均衡策略:RandomLoadBalance(随机策略) 2.负载均衡策略存在以下五种: 2.1 RandomLoadBalance(随机) 2.2 Roun ...

  7. Android线程和线程池(二)HandlerThread学习记录 使用+源码

    HandlerThreadAndroid线程和线程池(二)HandlerThread学习记录 使用+源码 一.作用 二.工作原理 三.HandlerThread的特点 优势: 劣势: 四.使用 五.源 ...

  8. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)

    本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...

  9. Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构

    Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构 文章目录 Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构 0x00 摘要 0x01 Alink设计原则 0x02 ...

  10. AFL二三事——源码分析

    AFL二三事--源码分析 前言 AFL,全称"American Fuzzy Lop",是由安全研究员Michal Zalewski开发的一款基于覆盖引导(Coverage-guid ...

最新文章

  1. docker 上传到自己的容器
  2. 信号与系统 第一章 郭宝龙
  3. RocketMQ最佳实战
  4. 一个jsp页面中多个提交按钮提交不同的页面
  5. 中国开源年会 COSCon 2018 今起接受报名!
  6. MySQL常见问题的解决,root用户密码忘记,不是内部或外部命令,修改数据库和表的字符编码,命令行客户端的字符集问题
  7. iscsi:IO操作流程(一)
  8. mysql怎么实现的主从复制_【mysql】mysql实现主从复制
  9. c++入门 简单语句 空语句 作用域和块 复合语句
  10. 公众号添加跳转网页链接
  11. matlab 中peaks函,peaks_matlab中PEAKS
  12. 高等数学笔记-苏德矿-第十章-曲线积分和曲面积分-第七节-高斯公式与斯托克斯公式
  13. 静态库与共享库制作,及区别
  14. offer来了java面试百度云版,精心整理
  15. 运营商大数据丨电销行业如何高效获得精准客户
  16. 配置管理和变更管理_想要改善变更管理,消除对它的需要
  17. python-docx设置文字突出显示,即高亮
  18. 验证基于逻辑回归的隐马尔可夫模型的心音信号切分算法(literature study)
  19. 科创板|赛诺医疗申联生物海天瑞声3公司本月31日上会
  20. 快速实现抖音分享与第三方登录

热门文章

  1. INTEL芯片组驱动下载地址
  2. 个人认为,载人登陆火星技术上无法实现
  3. Eclipse/NSight解决办法:unsolved inclusion stdio.h/map/string/queue/list
  4. 京东首页链接的商品竟然下柜?
  5. Ubuntu安装GitKraken
  6. IT行业上盘与碟的区别
  7. 管理感悟:绝不容忍有问题没行动
  8. 管理感悟:测试的目的是什么
  9. element表格多列排序_Python,Numpy,Pandas…数据科学家必备排序技巧
  10. #include 和前置声明