Dubbo 3.x源码(2)—源码调试环境准备

Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,涵盖 Java、Golang 等多种语言 SDK 实现。

1 Alibaba Dubbo和Apache Dubbo

在maven仓库中可以看到两个实现,一个是Alibaba Dubbo,另一个是Apache Dubbo,一般来说,建议选择Apache Dubbo,因为阿里将Dubbo捐献给apache基金会之后,便暂停了单独的Dubbo的开发。

在https://mvnrepository.com/artifact/com.alibaba/dubbo中可以看到,Alibaba Dubbo最后的更新已经是2021年了:
Dubbo 3.x源码(2)—源码调试环境准备_第1张图片
而Apache Dubbo的更新则一直未中断过:
Dubbo 3.x源码(2)—源码调试环境准备_第2张图片
现在开始,我们来学习Alibaba Dubbo的源码,本系列源码解析基于dubbo 3.1.0:


<dependency>
    <groupId>org.apache.dubbogroupId>
    <artifactId>dubboartifactId>
    <version>3.1.0version>
dependency>

2 下载dubbo源码

访问dubbo地址:https://github.com/apache/dubbo,选择dubbo版本,我选择的是3.1.0,然后点击Download ZIP下载源码包。或者直接frok项目到自己仓库,然后clone下来选择分支(这样的好处是可以随时提交自己的注释笔记等到github)。
Dubbo 3.x源码(2)—源码调试环境准备_第3张图片
下载ZIP包下来后,解压后用Idea打开,下载依赖之后,可以看到Dubbo的各个模块。
Dubbo 3.x源码(2)—源码调试环境准备_第4张图片
主要模块介绍:

  1. dubbo-common 公共逻辑模块:包括 Util 类和通用模型。
  2. dubbo-remoting 远程通讯模块:相当于 Dubbo 协议的实现,如果 RPC 用 RMI协议则不需要使用此包。
  3. dubbo-rpc 远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。
  4. dubbo-cluster 集群模块:将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
  5. dubbo-registry 注册中心模块:基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。
  6. dubbo-monitor 监控模块:统计服务调用次数,调用时间的,调用链跟踪的服务。
  7. dubbo-config 配置模块:是 Dubbo 对外的 API,用户通过 Config 使用Dubbo,隐藏 Dubbo 所有细节。
  8. dubbo-container 容器模块:是一个 Standlone 的容器,以简单的 Main 加载 Spring 启动,因为服务通常不需要 Tomcat/JBoss 等 Web 容器的特性,没必要用 Web 容器去加载服务。

在源码的根目dubbo-3.1下使用命令构建本地调试环境:

mvn clean install -Dmaven.test.skip=true

Dubbo的模块很多,这个命令将会执行很长的时间。
Dubbo 3.x源码(2)—源码调试环境准备_第5张图片

3 运行dubbo案例

打开dubbo-demo模块,这里面是最常见的各种整合Dubbo的demo,我们可以直接运行他们,其中dubbo-demo-annotation、dubbo-demo-spring-boot、dubbo-demo-xml是我们需要掌握的。
Dubbo 3.x源码(2)—源码调试环境准备_第6张图片
注意:运行之前需要更改zookeeper的地址为自己的zookeeper地址,如何安装zookeeper?阿里云ECS云服务器基于docker安装zookeeper并且操作。

我们随便运行一个项目,例如dubbo-demo-xml-provider,这是一个基于xml的生产者,然后启动dubbo-demo-xml-consumer,这是基于xml的消费者,可以看到成功的进行了接口调用。
Dubbo 3.x源码(2)—源码调试环境准备_第7张图片
到此,说明我们的Dubbo源码环境搭建完毕,此时可以在其他任意模块debug,写注释,后面的文章我们将会继续分析源码!

你可能感兴趣的:(Dubbo,3.x,源码,dubbo,java-zookeeper,zookeeper,dubbo3源码)