Dubbo 是什么
Dubbo 是一款高性能的分布式服务框架,由阿里巴巴公司开发并开源。它基于RPC的服务调用和服务治理,具有透明化的远程调用、负载均衡、服务注册与发现、高度可扩展性、服务治理等特点。Dubbo 提供了可扩展的插件机制,支持自定义扩展各种功能,如负载均衡、协议、序列化等。同时,Dubbo 还提供了丰富的服务治理功能,如监控、追踪、容错、限流等,可以使得服务的运行更加稳定和可靠。Dubbo 是一种高效、可扩展、可靠的分布式服务框架解决方案,适用于构建大型分布式系统。
![Dubbo 框架简介](https://apifox.com/apiskills/content/images/2023/07/image-1166.png)
Dubbo 能做什么
- 远程调用:Dubbo 框架采用 RPC 方式进行远程服务调用,可以使得调用者感觉就像是调用本地服务一样,方便地实现分布式系统中服务的调用。
- 负载均衡:Dubbo 框架内置多种负载均衡策略,可以根据实际情况选择不同的负载均衡策略,如随机、轮询、最小活跃数等,使得服务请求可以平衡地分布到不同的服务提供者上,提高服务的可用性和性能。
- 服务注册与发现:Dubbo 框架提供了服务注册与发现的功能,可以将服务注册到注册中心,也可以从注册中心中查询服务信息,方便实现服务的动态扩容和缩容。
- 高度可扩展性:Dubbo 框架提供了可扩展的插件机制,可以自定义扩展各种功能,如负载均衡、协议、序列化等。
- 服务治理:Dubbo 框架提供了丰富的服务治理功能,包括监控、追踪、容错、限流等,可以使得服务的运行更加稳定和可靠。
Dubbo 的架构
- Provider:发布服务,并将服务注册到注册中心,等待消费者调用。
- Consumer:从注册中心订阅服务,和服务提供者进行通信,消费服务。
- Registry:记录服务提供者的信息,以及服务提供者和服务消费者之间的关系,帮助消费者发现可用的服务实例。
- Monitor:收集 Dubbo 节点的性能指标、服务调用统计信息等,以便运维人员进行监控和管理。
- Container:服务的运行容器
![](https://apifox.com/apiskills/content/images/2023/07/image-2658.png)
Dubbo Provider 代码
接下来就在 IDE 中的 `com.dubbo.example.provider` 中编写一个 Dubbo Provider 的代码:
package com.dubbo.example.provider;
import com.dubbo.example.User;
import org.apache.dubbo.config.annotation.Service;
import com.dubbo.example.DemoService;
import org.apache.dubbo.rpc.RpcContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Service(version = "1.0.0", group = "name")
public class DemoServiceImpl implements DemoService {
private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
@Override
public String sayHello(User user) {
// logger.info("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
// return "Hello " + name + ", response from proviwder: " + RpcContext.getContext().getLocalAddress();
return user.name;
}
@Override
public String sayGoodBye(User user) {
return null;
}
}
然后开启调试,默认情况下在本机的 12345 端口将调起一个 Dubbo 服务。
![](https://apifox.com/apiskills/content/images/2023/07/image-2659.png)
使用 Apifox 访问 Dubbo 服务
Dubbo 其实就是 RPC 的一种远程调用的方案,所以访问 Dubbo 服务也可类比为调用 RPC 的服务。
我们需要使用 API 工具来进行接口进行测试,观察接口是否能按照预期返回对应的数据。今天我选择了 Apifox 来进行请求,因为它支持中文,且免费支持 Dubbo 接口调试。
新建 Dubbo 项目
打开 Apifox,在团队中点击右侧的「新建项目」按钮,然后选择 Dubbo 项目。
![](https://apifox.com/apiskills/content/images/2023/07/image-2670.png)
新建 Dubbo 接口
在 Apifox 新建 Dubbo 接口时需要逐个创建 Package、服务和方法。以 demo/com.dubbo.example.DemoService:1.0.1
接口为例,新建接口时的对照图如下:
![](https://apifox.com/apiskills/content/images/2023/07/image-2671.png)
指定 Dubbo 服务地址
开始调试接口前需定义目标服务器地址。点击页面右上角的环境配置按钮,填写服务器地址,然后点击“保存”按钮。
![](https://apifox.com/apiskills/content/images/2023/07/image-2672.png)
调试 Dubbo 接口
我已经 Apifox 中新建了一个 Dubbo 项目并编写了一个接口。开始调试前需要指定接口路径,请求参数。
![](https://apifox.com/apiskills/content/images/2023/07/image-2674.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 【是真的牛!】
Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。
![Dubbo 框架简介](https://apifox.com/apiskills/content/images/2023/07/image-1170.png)