工欲善其事,必先利其器,前面通过几篇文章简单的介绍了如何使用Dubbo搭建一个简单的分布式系统,在接下来的的一段时间就来研究Dubbo原理设计,本文作为原理设计的开篇先整体介绍下dubbo的架构。
image.png
dubbo官方的这个图很复杂,但是一开始没有必要深入细节,下面我们简单讲解主要模块。
关于dubbo扩展点一个简单的例子: 以扩展 Dubbo 的协议为例,在协议的实现 jar 包内放置文本文件: METAINF/dubbo/com.alibaba.dubbo.rpc.Protocol ,内容为:
myprotocol=com.alibaba.user.MyProtocol
MyProtocol内容如下:
package com.alibaba.user;
import com.alibaba.dubbo.rpc.Protocol;
public class MyProtocol implemenets Protocol {
// ...
}
配置模块中的配置 Dubbo 配置模块中,扩展点均有对应配置属性或标签,通过配置指定使用哪个扩展 实现。比如:
<dubbo:protocol name="myprotocol" />
image.png
image.png
本文简单的介绍了dubbo整体架构,后续具体介绍,dubbo增强的spi的实现,服务提供方如何发布服务,比如何时如何创建netty Server来监听服务消费者的链接,何时如何注册服务到服务治理中心;dubbo的filter链如何构建;服务消费方如何消费服务,何时创建netty client....