美文网首页分布式
1. Dubbo源码环境搭建及项目结构总览

1. Dubbo源码环境搭建及项目结构总览

作者: 一寂知千秋 | 来源:发表于2018-09-28 17:26 被阅读41次

两个事先准备

  1. Dubbo源码环境的搭建,这里我选择的是2.6.1版本。
  2. Dubbo文档 https://dubbo.gitbooks.iohttp://dubbo.apache.org/zh-cn/docs/user/quick-start.html

环境搭建

从官方仓库 https://github.com/alibaba/dubbo选中你想要的版本。这里的环境搭建搭建就不多讲。

我们先来看一下Dubbo的架构图

这里有三个角色:

  • Registry 注册中心,用于服务的注册与发现,官方推荐Zookeeper,注册中心参考手册
  • Provider 服务提供者,通过向 Registry 注册服务
  • Consumer 服务消费者,通过从 Registry 发现服务

我们看一下IDE的dubbo-demo项目

  1. 先启动Zookeeper
  2. 修改dubbo-demo-provider.xml,启动Provider
<!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
  1. 修改 dubbo-demo-consumer.xml ,启动 Consumer
<!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

我们可以发现Consumer能够远程调用Provider的接口


项目结构总览

1. dubbo-common
dubbo-common ,公共逻辑模块:提供工具类和通用模型
通用模型就是Dubbo整体需要遵守的规范,比如URL、日志等 公共契约

2. dubbo-remoting
dubbo-remoting,远程通信模块:提供通用的客户端和服务端的通讯功能
我们后面的文章暂时只关心dubbo-remoting-apidubbo-remoting-netty4dubbo-remoting-zookeeper

3. dubbo-rpc
dubbo-rpc, 远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理,集群相关的管理,由 dubbo-cluster 提供特性。官方推荐Dubbo协议,详见 协议参考手册

4. dubbo-cluster
dubbo-cluster,集群模块:将多个服务提供方伪装为一个提供方,包括:负载均衡, 集群容错,路由,分组聚合等。集群的地址列表可以是静态配置的,也可以是由注册中心下发(由dubbo-registry提供)。

  • 容错:

    • com.alibaba.dubbo.rpc.cluster.Cluster 接口 + com.alibaba.dubbo.rpc.cluster.support
    • 详见集群容错集群扩展文档
  • 路由:

    • com.alibaba.dubbo.rpc.cluster.Router 接口 + com.alibaba.dubbo.rpc.cluster.router
    • 详见 路由规则路由扩展
  • 负载均衡:

  • 合并结果

  • 配置

    • com.alibaba.dubbo.rpc.cluster.Configurator 接口 + com.alibaba.dubbo.rpc.cluster.configurator 包。
    • 详见 配置规则

整体流程如下:

5. dubbo-registry
dubbo-registry,注册中心模块:基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。官方推荐Zookeeper,详见 注册中心参考手册

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

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

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

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

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

dubbo-filter-cache,缓存过滤器,详见 结果缓存
dubbo-filter-validation,参数验证过滤器,详见 参数验证

10. dubbo-plugin
dubbo-plugin,过滤器模块:提供了内置的插件。详见 新版本 telnet 命令使用说明

11. hessian-lite
hessian-lite,Dubbo 对 Hessian 2 的 序列化 部分的精简、改进、BugFix 。

12. dubbo-demo
dubbo-demo,快速启动示例,快速启动

13. dubbo-test
dubbo-test,测试模块,详见 性能测试报告

相关文章

网友评论

    本文标题:1. Dubbo源码环境搭建及项目结构总览

    本文链接:https://www.haomeiwen.com/subject/jnbpoftx.html