Dubbo-架构设计以及提出问题
广告来一波,记得关注公众号 ,每天更新,看图片眼神、、
上文讲解了Dubbo源码的每个模块都干了些什么,本节正式切入正题,本文主要分析架构设计以及提出问题,后面我们带着问题去分析
一、基本设计
这张图是不是看的都烦了,,,但是还是要从这个图开始讲起,不然没法下手,,,,,,
首先记住10这个数字,,因为他有10层,下面从上往下进行每层解释,,出于官网
- Service层:就是一些我们代码中的接口以及实现等
- Config层:配置层,对外配置接口,主要以provider端的ServiceConfig和Consumer端的ReferenceConfig为主,可以直接初始化配置类,也可解析Spring文件生成配置类
- Proxy层:服务代理层,类似于将多个Invoker包装,实现统一对外,主要ServiceProxy为中心,扩展ProxyFactory
- Registry层:注册中心层,封装服务地址的注册与发现,以服务URL为中心,扩展Registry,RegistryFactory,RegistryService
- Cluster层:路由层,封装多个服务提供者,实现负载均衡,桥接注册中心以Invoker为中心
- monitor层:监控层,主要记录RPC调用的次数,时间等
- protocol层:远程调用层,封装RPC调用以Invocation,Reuslt为中心
- exchange层:信息交换层,封装请求、响应模式,同步转异步以Requeset,Response为中心
- Transport层:网络传输层,主要封装Netty等统一接口
- Serialize层:序列化层,提供一下公共工具
看了这个基本设计是不是有换篇博客看的冲动,,,,,问题马上来。,,
二、灵魂拷问
- 服务提供者是怎么暴露服务的?
- 注册中心(zookeeper)是怎么操作的?
- 服务消费者是怎么引用服务的?
- 远程调用又是怎么实现的?
- 传说中的Netty、、、、
这些个问题是不是都懂,这个时候脑子里是不是又出来一副图片、、、
看看这张引用关系图是不是和上面的灵魂拷问很搭、、、
下面我们就结合基础设计,带着问题,看着引用关系图进行逐步分析、、、