Dubbo源码分析笔记-一(工程目录介绍)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nihui123/article/details/89785910

Dubbo 是阿里开发的分布式服务调用框架,提供了它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

工程目录

在这里插入图片描述

模块介绍

dubbo-common

  Dubbo通用模块,定义了业务无关的工具类例如io处理、日志处理、配置处理、类处理等等操作,以及对于线程池的扩展,二进制编码处理,class编译处理,json数据处理,数据持久化接口处理等等。
在这里插入图片描述

dubbo-rpc-api

  分布式服务调用框架RPC的核心基本实现,可以看到其中提供了很多的RPC抽象类、接口和实现类,包括服务发布,服务调用,,远程调用,RPC调用网络协议,RPC条用监听和过滤器等功能。提供了默认的基于Dubbo写协议的实现,还提供了其他的协议的实现,灵活通用,可以满足大多数项目的使用要求。

在这里插入图片描述

dubbo-registry-api

  作为注册中心的核心接口重要组成部分,在DubboRPC中有两个角色Consumer和Provider,这个模块的主要功能就是实现服务的注册功能,例如我们常用的服务注册中心Zookeeper的支持还有使用Redis作为注册中心的支持
在这里插入图片描述

dubbo-remoting-api

  这个模块作为Dubbo远程路由通讯的模块,实现的主要功能就是远程通讯,consumer要调用provider的远程方法就必须通过网络远程调用,这个模块定义了远程传输器、终端(endpoint)、客户端、服务端、编码器解码器、数据交换、缓冲区、通讯异常等核心接口,还提供了远程网络访问的抽象。例如Netty等。
在这里插入图片描述

dubbo-monitor-api

  主要的监控模块,提供了服务调度的各种信息,例如调用时间,调用结果等,在控制中心通过收集调用信息,对于收集到的信息进行统计分析。最终可以实现对于各种调用的维护功能。
在这里插入图片描述

dubbo-container-api

  dubbo支持服务运行的容器,定义启动列表包含应用程序的入口,定义容器的接口Container,包含启动和停止的方法,内置了很多的容器实现例如spring、jetty等等。
在这里插入图片描述

dubbo-config-api

  作为Dubbo的配置模块,通过它的配置和组装将dubbo组件的各个模块组合在一起实现分布式服务框架,通过配置可以实现符合开发者要求的配置,提供例如服务发布配置、方法发布配置、服务消费配置、应用程序配置、注册中心配置、协议配置、监控配置等等,还有一系列关于spring的配置。
在这里插入图片描述

dubbo-cluster

  dubbo集群实现,支持远程服务的集群,支持多种服务集群的调用。并且支持目录服务、注册中心就是一个典型的目录服务实现,支持负载均衡,具体的其他功能在分析源码的时候在进行详细的分析。
在这里插入图片描述

Dubbo基本原理

  下图是由Dubbo官方提供的Dubbo的架构图
在这里插入图片描述
从图中可以看到
角色说明

节点 角色说明
Provider 服务提供者,暴露服务
Consumer 调用远程服务的服务消费者
Registry 服务注册和服务发现的注册中心
Monitor 服务调用的监控中心
Container 服务运行容器

调用关系说明

  1. 服务容器负责服务提供者的启动、加载、运行等过程
  2. 服务提供者向注册中心注册自己所提供的服务
  3. 服务消费者向注册中心订阅自己需要的服务
  4. 注册中心返回对应消息提供者的列表信息给服务消费者。
  5. 服务消费者从注册中心的列表中调用对应的服务提供者的地址
  6. 服务消费者和服务提供者的调用监控。

总结

  上面对整个的Dubbo的工程路径做了简单的了解,知道了大致的服务调用流程。具体的源码分析功能在后续分享中会有更为详细的分析。

猜你喜欢

转载自blog.csdn.net/nihui123/article/details/89785910