Dubbo 是什么
首先直接给出结论:Dubbo 是阿里巴巴开源的一款高性能分布式服务框架。它基于 RPC 协议实现了远程服务调用与治理,核心能力在于让远程调用像本地方法调用一样自然流畅,同时内置了负载均衡、服务注册与发现、高度可扩展的插件机制等一系列治理功能。简而言之,Dubbo 是构建大型分布式系统时极为实用的工具——高效、可扩展、可靠,三大优势兼备。

Dubbo 能做什么
具体拆解来看,它的能力主要涵盖以下几个关键方向。
- 远程调用:这是基础功能。基于 RPC,调用方几乎感知不到网络延迟和序列化的存在,就像在调用本地方法一样轻松便捷。
- 负载均衡:内置随机、轮询、最少活跃数等多种策略。当流量分布不均时,你可以按需切换策略,将请求合理分配到最合适的服务提供者。
- 服务注册与发现:将服务注册到注册中心,消费端自动发现可用实例。动态扩容或缩容时,几乎无需人工干预。
- 高度可扩展:插件机制非常灵活,负载均衡、协议、序列化等均可根据业务需求自定义扩展,不局限于默认实现。
- 服务治理:监控、追踪、容错、限流等能力一应俱全。缺乏这些治理功能,大规模集群难以稳定运行——Dubbo 将这些能力直接集成进了框架内部。
Dubbo 的架构
从架构层面拆解,主要由以下四个角色构成:
- Provider:服务提供方,负责发布服务,将服务实例注册到注册中心,等待消费者调用。
- Consumer:服务消费方,从注册中心订阅服务信息,并与 Provider 直接通信完成服务调用。
- Registry:注册中心,维护服务提供端的信息,同时记录服务提供方与消费方之间的映射关系。消费者正是通过 Registry 来发现可用实例的。
- Monitor:监控中心,收集 Dubbo 节点的性能指标和调用统计数据,方便运维团队监控与管理整个集群。
- Container:服务运行容器,负责托管 Provider 实例。

接着开启调试模式,默认情况下本机 12345 端口会启动一个 Dubbo 服务。

使用 Apifox 访问 Dubbo 服务
本质上,Dubbo 就是一种 RPC 远程调用方案。因此,访问 Dubbo 服务与调用其他 RPC 服务没有本质区别——同样需要工具发送请求、查看响应,验证接口是否按照预期工作。这里推荐使用 Apifox,它原生支持中文,并免费开放 Dubbo 接口调试功能,上手体验友好。
新建 Dubbo 项目
打开 Apifox,在团队内点击右侧的「新建项目」按钮,然后选择 Dubbo 项目类型即可。

新建 Dubbo 接口
在 Apifox 中新建 Dubbo 接口时,需要依次配置 Package、服务和方法。以 demo/com.dubbo.example.DemoService:1.0.1 接口为例,新建接口时的对应关系如下:

指定 Dubbo 服务地址
开始调试之前,需要先设定目标服务器地址。点击页面右上角的环境配置按钮,填写服务器地址并保存即可。

调试 Dubbo 接口
在 Apifox 中成功创建 Dubbo 项目并编写好接口后,进入调试页面时需要指定接口路径和请求参数。

发送一个 Dubbo 请求
接着进入运行页面,填写请求体中的参数,例如:
{"name": "user-name","age": 29}
点击发送运行,即可看到 Dubbo 服务返回的数据结果。

