Dubbo 是什么
Dubbo 是一款高性能的分布式服务框架,由阿里巴巴公司开发并开源。它基于RPC的服务调用和服务治理,具有透明化的远程调用、负载均衡、服务注册与发现、高度可扩展性、服务治理等特点。Dubbo 提供了可扩展的插件机制,支持自定义扩展各种功能,如负载均衡、协议、序列化等。同时,Dubbo 还提供了丰富的服务治理功能,如监控、追踪、容错、限流等,可以使得服务的运行更加稳定和可靠。Dubbo 是一种高效、可扩展、可靠的分布式服务框架解决方案,适用于构建大型分布式系统。
Dubbo 能做什么
- 远程调用:Dubbo 框架采用 RPC 方式进行远程服务调用,可以使得调用者感觉就像是调用本地服务一样,方便地实现分布式系统中服务的调用。
- 负载均衡:Dubbo 框架内置多种负载均衡策略,可以根据实际情况选择不同的负载均衡策略,如随机、轮询、最小活跃数等,使得服务请求可以平衡地分布到不同的服务提供者上,提高服务的可用性和性能。
- 服务注册与发现:Dubbo 框架提供了服务注册与发现的功能,可以将服务注册到注册中心,也可以从注册中心中查询服务信息,方便实现服务的动态扩容和缩容。
- 高度可扩展性:Dubbo 框架提供了可扩展的插件机制,可以自定义扩展各种功能,如负载均衡、协议、序列化等。
- 服务治理:Dubbo 框架提供了丰富的服务治理功能,包括监控、追踪、容错、限流等,可以使得服务的运行更加稳定和可靠。
Dubbo 的架构
- Provider:发布服务,并将服务注册到注册中心,等待消费者调用。
- Consumer:从注册中心订阅服务,和服务提供者进行通信,消费服务。
- Registry:记录服务提供者的信息,以及服务提供者和服务消费者之间的关系,帮助消费者发现可用的服务实例。
- Monitor:收集 Dubbo 节点的性能指标、服务调用统计信息等,以便运维人员进行监控和管理。
- Container:服务的运行容器
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 服务。
使用 Apifox 访问 Dubbo 服务
Dubbo 其实就是 RPC 的一种远程调用的方案,所以访问 Dubbo 服务也可类比为调用 RPC 的服务。
我们需要使用 API 工具来进行接口进行测试,观察接口是否能按照预期返回对应的数据。今天我选择了 Apifox 来进行请求,因为它支持中文,且免费支持 Dubbo 接口调试。
新建 Dubbo 项目
打开 Apifox,在团队中点击右侧的「新建项目」按钮,然后选择 Dubbo 项目。
新建 Dubbo 接口
在 Apifox 新建 Dubbo 接口时需要逐个创建 Package、服务和方法。以 demo/com.dubbo.example.DemoService:1.0.1
接口为例,新建接口时的对照图如下:
指定 Dubbo 服务地址
开始调试接口前需定义目标服务器地址。点击页面右上角的环境配置按钮,填写服务器地址,然后点击“保存”按钮。
调试 Dubbo 接口
我已经 Apifox 中新建了一个 Dubbo 项目并编写了一个接口。开始调试前需要指定接口路径,请求参数。
发送一个 Dubbo 请求
接着我们到达运行页面,填入请求 body 的参数,例如:
{
"name": "user-name",
"age": 29
}
并且点击发送运行,得到 Dubbo 服务返回的数据。
关于 Apifox
- 集成了 API 文档、API 调试、API Mock、API 自动化测试 API 一体化协作平台
- 拥有更先进的 API 设计/开发/测试工具
- Apifox = Postman + Swagger + Mock + JMeter 【是真的牛!】
Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。