Dubbo-架构设计以及提出问题

广告来一波,记得关注公众号 ,每天更新,看图片眼神、、

Dubbo-架构设计以及提出问题

上文讲解了Dubbo源码的每个模块都干了些什么,本节正式切入正题,本文主要分析架构设计以及提出问题,后面我们带着问题去分析

一、基本设计

Dubbo-架构设计以及提出问题

这张图是不是看的都烦了,,,但是还是要从这个图开始讲起,不然没法下手,,,,,,

首先记住10这个数字,,因为他有10层,下面从上往下进行每层解释,,出于官网

  1. Service层:就是一些我们代码中的接口以及实现等
  2. Config层:配置层,对外配置接口,主要以provider端的ServiceConfig和Consumer端的ReferenceConfig为主,可以直接初始化配置类,也可解析Spring文件生成配置类
  3. Proxy层:服务代理层,类似于将多个Invoker包装,实现统一对外,主要ServiceProxy为中心,扩展ProxyFactory
  4. Registry层:注册中心层,封装服务地址的注册与发现,以服务URL为中心,扩展Registry,RegistryFactory,RegistryService
  5. Cluster层:路由层,封装多个服务提供者,实现负载均衡,桥接注册中心以Invoker为中心
  6. monitor层:监控层,主要记录RPC调用的次数,时间等
  7. protocol层:远程调用层,封装RPC调用以Invocation,Reuslt为中心
  8. exchange层:信息交换层,封装请求、响应模式,同步转异步以Requeset,Response为中心
  9. Transport层:网络传输层,主要封装Netty等统一接口
  10. Serialize层:序列化层,提供一下公共工具

看了这个基本设计是不是有换篇博客看的冲动,,,,,问题马上来。,,

二、灵魂拷问

  1. 服务提供者是怎么暴露服务的?
  2. 注册中心(zookeeper)是怎么操作的?
  3. 服务消费者是怎么引用服务的?
  4. 远程调用又是怎么实现的?
  5. 传说中的Netty、、、、

这些个问题是不是都懂,这个时候脑子里是不是又出来一副图片、、、

Dubbo-架构设计以及提出问题

看看这张引用关系图是不是和上面的灵魂拷问很搭、、、

下面我们就结合基础设计,带着问题,看着引用关系图进行逐步分析、、、