Dubbo 是什么
Apache Dubbo 是一个易于使用、高性能的 WEB 和 RPC 框架,具有内置的服务发现、流量管理、可观察性、安全功能、工具和构建企业级微服务的最佳实践。
Dubbo 是阿里巴巴推出的,多年来一直在成功支持数十亿的服务。
![](https://apifox.com/apiskills/content/images/2023/07/image-2619.png)
Dubbo 的原理和机制
Dubbo 的原理和机制包括了几个方面,有架构、框架、核心功能、核心组件、调用流程,我们可以通过这几个方面介绍 Dubbo 的原理和机制。
Dubbo 的架构图
图中的左侧是为消费者提供的接口;图中的右侧是为提供者提供的接口;中间是两边所需要用到的接口。
![](https://apifox.com/apiskills/content/images/2023/07/image-2620.png)
Dubbo 的框架
Dubbo 的框架,设计了十层。分别是服务接口层(Service)、配置层(Config)、服务代理层(Proxy)、服务注册层(Registry)、集群层(Cluster)、监控层(Monitor)、远程调用层(Protocol)、信息交换层(Exchange)、网络传输层(Transport)和数据序列化层(Serialize)。
Dubbo 的核心功能
Dubbo 主要提供了四个核心的功能:
- Dubbo 可以远程地去调用方法;
- Dubbo 可以进行比较智能的容错;
- Dubbo 可以进行负载均衡;
- Dubbo 可以发现服务的注册;
Dubbo 的核心组件
Dubbo 的核心组件包括 Provider(生产者)、Consumer(消费者)、Registry(注册中心)、Monitor(监控)和Container(容器)。
![](https://apifox.com/apiskills/content/images/2023/07/image-2621.png)
Dubbo 的调用流程
- 服务提供者启动:服务提供者启动时,会将自己的服务注册到注册中心(如 ZooKeeper)上。
- 服务消费者启动:服务消费者启动时,会从注册中心上获取服务提供者的列表。
- 服务消费者发起调用请求:当服务消费者需要调用服务时,它会选择一个服务提供者进行调用。
- 负载均衡:Dubbo 提供了多种负载均衡算法(如随机、轮询等),用于从服务提供者列表中选择一个服务提供者进行调用。
- 服务调用:服务消费者通过网络向服务提供者发起调用请求,服务提供者接收到请求后,会根据请求的参数进行处理并返回结果。
- 结果返回:服务提供者将处理结果返回给服务消费者,服务消费者接收到结果后进行处理并返回给调用方。
- 服务提供者取消注册:当服务提供者关闭或者服务不可用时,它会将自己从注册中心上注销。
使用 Apifox 访问 Dubbo 服务
Dubbo 其实就是 RPC 的一种远程调用的方案,所以访问 Dubbo 服务,可类比为调用 RPC 的服务。我们需要使用 API 工具来进行接口的请求,今天我选择了 Apifox 来进行请求,因为它支持中文,且免费使用。
新建一个 Dubbo 项目
调试 Dubbo 接口前需要在 Apifox 中新建项目,并填写好对应的名称。
![](https://apifox.com/apiskills/content/images/2023/07/image-468.png)
新建 Dubbo 接口
点击新建 Package 选项。
![](https://apifox.com/apiskills/content/images/2023/07/image-469.png)
然后添加一个 Service。
![](https://apifox.com/apiskills/content/images/2023/07/image-470.png)
调试 Dubbo 接口
先点击 Service 下某个方法的环境配置按钮。
![](https://apifox.com/apiskills/content/images/2023/07/image-471.png)
然后配置并保存服务器地址。
![](https://apifox.com/apiskills/content/images/2023/07/image-472.png)
发送一个 Dubbo 请求
接着我们到达运行页面,填入请求 body 的参数,例如:
{
"name": "user-name",
"age": 29
}
并且点击发送运行,得到 Dubbo 服务返回的数据。
![](https://apifox.com/apiskills/content/images/2023/07/image-2675.png)
关于 Apifox
- 集成了 API 文档、API 调试、API Mock、API 自动化测试 API 一体化协作平台
- 拥有更先进的 API 设计/开发/测试工具
- Apifox = Postman + Swagger + Mock + JMeter