克隆代码
git clone git@github.com:apache/dubbo.git
执行maven相关命令:
mvn clean install -Dmaven.test.skip=true
mvn idea:idea
耐心等待几分钟,然后将项目导入到idea中.
将dubbo源码导入进idea,项目结构如下:
dubbo-common 公共逻辑模块:包括 Util 类和通用模型。
dubbo-remoting 远程通讯模块:相当于 Dubbo 协议的实现,如果 RPC 用 RMI协议则不需要使用此包。
dubbo-rpc 远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。
dubbo-cluster 集群模块:将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
dubbo-registry 注册中心模块:基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。
dubbo-monitor 监控模块:统计服务调用次数,调用时间的,调用链跟踪的服务。
dubbo-config 配置模块:是 Dubbo 对外的 API,用户通过 Config 使用Dubbo,隐藏 Dubbo 所有细节。
dubbo-container 容器模块:是一个 Standlone 的容器,以简单的 Main 加载 Spring 启动,因为服务通常不需要 Tomcat/JBoss 等 Web 容器的特性,没必要用 Web 容器去加载服务。
后面要启动项目运行demo,目前先着重看一下dubbo-registry和dubbo-demo两个子工程的项目结构,dubbo项目中每个子工程的结构都类似.
dubbo-registry子工程项目结构如下:
dubbo-registry子工程是dubbo 中负责与多种开源注册中心进行交互的模块,提供注册中心的能力。其中 dubbo-registry-api 子模块是顶层抽象,其他子模块是针对具体开源注册中心组件的具体实现,例如dubbo-registry-zookeeper 子模块是 dubbo 接入 ZooKeeper 的具体实现,dubbo-registry-nacos子模块是dubbo接入Nacos的具体实现。
dubbo-demo子工程项目结构如下:
dubbo-demo-api是抽象api工程,服务提供者和消费者均需引入该子工程。其中子模块dubbo-demo-annotation是以注解的方式实现的demo示例,同理子模块dubbo-demo-xml是以xml配置的方式实现的demo示例。
启动注册中心:
dubbo的demo中默认使用zk作为注册中心,zk环境搭建:
# 下载地址
https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
# 解压
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
# 启动
./bin/zkServer.sh start
# 启动成功标识
ZooKeeper JMX enabled by default
Using config: /home/renchuangege/develop/dev-run-soft/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
出现如下报错是因为conf目录下没有zoo.cfg配置文件,将zoo_sample.cfg改名为zoo.cfg即可:
ZooKeeper JMX enabled by default
Using config: /apache-zookeeper-3.8.0/bin/…/conf/zoo.cfg
grep: /apache-zookeeper-3.8.0/bin/…/conf/zoo.cfg: 没有那个文件或目录
grep: /apache-zookeeper-3.8.0/bin/…/conf/zoo.cfg: 没有那个文件或目录
FAILED TO WRITE PID
至此,环境搭建完毕.