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 提供特性。
l dubbo-registry-api ,抽象注册中心的注册与发现接口。
l 其他模块,实现 dubbo-registry-api ,提供对应的注册中心实现。在 《用户指南 —— 注册中心参考手册》 中,可以看到每种注册中心的介绍。
l 另外,dubbo-registry-default 对应 Simple 注册中心。
(6)dubbo-monitor 监控模块:统计服务调用次数,调用时间的,调用链跟踪的服务。
(7)dubbo-config 配置模块:是 Dubbo 对外的 API,用户通过 Config 使用Dubbo,隐藏 Dubbo 所有细节。
l dubbo-config-api ,实现了 API 配置 和 属性配置 功能。
l dubbo-config-spring ,实现了 XML 配置 和 注解配置 功能。
(8)dubbo-container 容器模块:是一个 Standlone 的容器,以简单的 Main 加载 Spring 启动,因为服务通常不需要 Tomcat/JBoss 等 Web 容器的特性,没必要用 Web 容器去加载服务。
(9)dubbo-filter 过滤器模块:提供了内置的过滤器。
(10)dubbo-plugin 插件模块:提供了内置的插件。
以上是关于DUBBO源码学习的主要内容,如果未能解决你的问题,请参考以下文章