1.每一个层次之间基本通过spi的方式来生成调用的。

2service/config层

2.1服务发布通过serviceConfig来完成

服务消费通过referenceConfig来完成。

在创建这两个的过程中,还可以通过创建ProtocolConfig来指定协议,

MethodConfig来指定方法相关参数。

3proxy层。对于消费者而言,proxy作为消费者代理,将本地调用转换为wrapper类。

4.registry层。服务注册中心层。

5.cluster层。

当一个服务有多个提供者时,消费者需要有一定的路由,负债均衡,集群容错的考量。

6.monitor层用来统计rpc调用次数和调用耗时。

7.protocol层。主要封装了rpc调用逻辑,通过exporter,invoker的创建,完成服务的发布和引用。实现类是dubboProtocol.

  1. dubbo服务暴露源码流程

(1)容器创建完之后会触发ServiceBean(实现了applicationLIstener接口)类中的ContextRefreshedEvent事件,执行export()方法。

(2)export()方法会调用ServiceConfig中的doExport()方法,这个方法会调用doExportUrls()方法,进而doExportUrlsFor1Protocol()方法。

(3)doExportUrlsFor1Protocol()方法中会利用反射构造invoker,这个invoker封装了服务实现类注册的地址及端口相关信息。同时执行protocol.export()方法。

(4)protocol.export()中的protocol有两个实现类,这个是最关键的,一个是RegistryProtocol一个是DubboProtocol,调用这个方法的时候会首先调用RegistryProtocol类,RegistryProtocol类中的export()方法会调用doLocalExport()方法通知DubboProtocol执行openServer(url)方法进行服务的开启,其实就是开启一个netty服务。同时export()方法会调用ProviderConsumerRegTable.registerProvider()方法进行注册表的缓存以及服务的注册。

  1. dubbo服务发现源码流程

在ReferenceBean->getObject()->init()中会调用createProxy()方法用来创建代理对象。

在createProxy()中会执行一个refprotocol.refer()方法,这里refprotocol同样有两个实现类,一个是RegistryProtocol,一个是DubboProtocol

RegistryProtocol负责注册信息,订阅信息,构造invoker代理类,并将消费者对于的invoke缓存到注册列表中。

DubboProtocol主要负责connect/getClients()连接获取客户端,等待与服务端通信

dubbo服务调用源码流程

dubbo架构概览-dubbo源码解析相关推荐

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

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

  2. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  3. Java生鲜电商平台-促销系统的架构设计与源码解析

    Java生鲜电商平台-促销系统的架构设计与源码解析 说明:本文重点讲解现在流行的促销方案以及源码解析,让大家对促销,纳新有一个深入的了解与学习过程. 促销系统是电商系统另外一个比较大,也是比较复杂的系 ...

  4. Java生鲜电商平台-电商会员体系系统的架构设计与源码解析

    Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明:Java生鲜电商平台中会员体系作为电商平台的基础设施,重要性不容忽视.我去年整理过生鲜电商中的会员系统,但是比较粗,现在做一个最好的整 ...

  5. Java生鲜电商平台-商品中心的架构设计与源码解析(小程序/APP)

    Java生鲜电商平台-商品中心的架构设计与源码解析(小程序/APP) 说明:Java生鲜电商平台中,由于商品的架构很大程度决定了电商的扩展性与伸缩性.对此根据自己多年的生鲜电商经验,整理了以下的商品中 ...

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

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

  7. 聊聊Dubbo - Dubbo可扩展机制源码解析

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 在Dubbo可扩展机制实战中,我们了解了Dubbo扩展机制的一些概念,初探了Dubbo中LoadBalance的实现, ...

  8. 第三章 dubbo内核之ioc源码解析

    dubbo的IOC具体实现在:T injectExtension(T instance)方法中.该方法只在三个地方被使用: 1 createAdaptiveExtension() 2 --inject ...

  9. 电商平台 高并发 微服务 方案_Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战...

    Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定的时间内,无论商品是否秒杀完毕,该场次的秒杀活动都会结束.这种 ...

  10. Java生鲜电商平台-优惠券系统的架构设计与源码解析

    电商后台:实例解读促销系统 电商后台系统包括商品管理系统.采购系统.仓储系统.订单系统.促销系统.维权系统.财务系统.会员系统.权限系统等,各系统之间相互关联.相互依托,为前端的正常业务流转建立结实稳 ...

最新文章

  1. http响应Last-Modified和ETag以及Apache和Nginx中的配置
  2. JavaFX BorderPane布局代码示例
  3. CSS的六种垂直居中
  4. 使用Spring Integration Java DSL与Rabbit MQ集成
  5. va_list va_start va_end的使用
  6. data structure最短路径问题
  7. Ubuntu关闭防火墙
  8. Qtum DGP 分布自治协议技术详解
  9. Java之——被人遗忘的Java8的八个功能
  10. codevs 5960 信使
  11. 2022紫光展锐数字芯片提前批笔试
  12. Pancake的IFO解读
  13. [转贴]COM Interop 注册相关
  14. 安卓bmi项目_Android之BMI(身体质量指数)计算器
  15. git处理 Update failed cannot lock
  16. 网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享
  17. java程序设计蜘蛛纸牌_JAVA蜘蛛纸牌
  18. 股票交易费及利润计算器
  19. RPA机器人:电商好帮手
  20. java卡片布局 show没用_[showjava怎么用]java卡片布局中show的正确使用方法

热门文章

  1. idea 格式化代码 快捷键
  2. usc2_今天发布:与USC合作的新游戏设计课程
  3. 尚学堂python开发工具_尚学堂百战程序员分享:Python的数据模型
  4. 自动生成光纤测试资料的软件,光缆测试模板生成工具官方版
  5. 2020网络安全NISP一级题库
  6. 计算机考研复试题目大全
  7. 基于 Python 与 mxget 的音乐下载器
  8. Samsung SSD Magician 4.1三星固态硬盘优化工具官方中文版
  9. 使用idea打包war包部署
  10. HTML圆角+div立体阴影