DUBBO源码学习

Posted 高级架构师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DUBBO源码学习相关的知识,希望对你有一定的参考价值。

1-DUBBO源码分析-调试环境搭建

1.1 依赖工具

· Maven

· Git

· JDK

· IntelliJ IDEA

1.2 源码拉取

从官方仓库 https://github.com/alibaba/dubbo Fork 出属于自己的仓库。

在图中,本文会涉及到的有三个角色:

 

Registry 注册中心,用于服务的注册与发现。

Provider 服务提供者,通过向 Registry 注册服务。

Consumer 服务消费者,通过从 Registry 发现服务。

另外,Consumer 对 Provider 的调用,直接发起,无需经过 Registry 。

 

1.3 Registry

Dubbo 提供了多种 Registry 的实现,参见 《注册中心参考手册》 。

 

在 dubbo-demo 项目中,使用 Multicast Registry 。

实际生产环境中,使用 Zookeeper Registry 。

 

建议先使用Zookeeper Registry搭建调试环境,因为简单方便。

 

1.3.1 Multicast Registry

Multicast Registry 基于 组播协议 实现,详细参见文档 《Multicast 注册中心》 。

 

 

注意,不需要启动!!!简单的说,本小节的内容可以直接跳过。

 

1.3.2 Zookeeper Registry

Zookeeper Registry 基于 Zookeeper 实现,详细参见文档 《zookeeper 注册中心》 。

 

搭建步骤如下:

 

1、启动 Zookeeper 服务。

zookeeper-3.4.8

 

$ bin/zkServer.sh start

ZooKeeper JMX enabled by default

 

/Programs/Zookeeper/zookeeper-3.4.8/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

2、修改 dubbo-demo-provider.xml ,启动 Provider 。

 

<!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->

<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

 

3、修改 dubbo-demo-consumer.xml ,启动 Consumer 。

 

<!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->

<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

 

1.3.3 Nacos  Registry(推荐)

直接去官方下载1.4.1版本,我们自己项目用的1.4.1版本。


1.4源码结构


(1)dubbo-common 公共逻辑模块:提供工具类和通用模型。

(2)dubbo-remoting 远程通信模块:提供通用的客户端和服务端的通讯功能。

(3)dubbo-rpc 远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。


· 集群相关的管理,由 dubbo-cluster 提供特性。

· 在回过头看上面的图,我们会发现,dubbo-rpc 是整个 Dubbo 的中心。


注册中心下发,由 dubbo-registry 提供特性。


dubbo-registry-api ,抽象注册中心的注册与发现接口。

其他模块,实现 dubbo-registry-api ,提供对应的注册中心实现。在 《用户指南 —— 注册中心参考手册》 中,可以看到每种注册中心的介绍。

另外,dubbo-registry-default 对应 Simple 注册中心。

(6)dubbo-monitor 监控模块:统计服务调用次数,调用时间的,调用链跟踪的服务。

(7)dubbo-config 配置模块:是 Dubbo 对外的 API,用户通过 Config 使用Dubbo,隐藏 Dubbo 所有细节。


dubbo-config-api ,实现了 API 配置 和 属性配置 功能。


dubbo-config-spring ,实现了 XML 配置 和 注解配置 功能。

(8)dubbo-container 容器模块:是一个 Standlone 的容器,以简单的 Main 加载 Spring 启动,因为服务通常不需要 Tomcat/JBoss 等 Web 容器的特性,没必要用 Web 容器去加载服务。

(9)dubbo-filter 过滤器模块:提供了内置的过滤器。

(10)dubbo-plugin 插件模块:提供了内置的插件。



以上是关于DUBBO源码学习的主要内容,如果未能解决你的问题,请参考以下文章

DUBBO源码学习

Dubbo源码学习--优雅停机原理及在SpringBoot中遇到的问题

Dubbo 源码学习系列 动手写dubbo核心原理

dubbo源码实践-开篇

Dubbo源码学习(二配置文件)

Dubbo源码学习(二配置文件)