入门指南:Dubbo是什么及其工作原理详解

Dubbo是什么

Dubbo 是阿里巴巴公司开发的一款高性能的分布式服务框架,用于远程服务调用和服务治理。它具有透明化的远程调用、负载平衡、服务注册和发现、可扩展性和服务治理等特性。Dubbo支持自定义扩展各种功能,如负载均衡、协议、序列化等,并提供了大量服务治理功能,如监控、追踪、容错和限流等,让服务的运行更加稳定和可靠。它是一种高效、可扩展和可靠的分布式服务框架解决方案,适用于构建大型分布式系统。

image.png

Dubbo能做什么

Dubbo框架具有以下功能:

  1. 远程调用:Dubbo框架采用 RPC(远程过程调用)方式进行远程服务调用,在实现分布式系统中的服务调用时,可使调用者感觉就像是调用本地服务一样方便。
  2. 负载平衡:Dubbo框架内置多种负载平衡策略,可根据实际情况选择不同的负载平衡策略,如随机、轮询、最小活跃数等,使得服务请求可以平衡地分布到不同的服务提供者上,提高服务的可用性和性能。
  3. 服务注册和发现:Dubbo框架提供了服务注册和发现的功能,可将服务注册到注册中心,也可从注册中心中查询服务信息,方便实现服务的动态扩容和缩容。
  4. 可扩展性:Dubbo框架提供了可扩展的插件机制,可自定义扩展各种功能,如负载均衡、协议、序列化等。
  5. 服务治理:Dubbo框架提供了丰富的服务治理功能,如监控、追踪、容错和限流等,可使得服务的运行更加稳定和可靠。

Dubbo的架构

Dubbo框架主要由以下组件构成:

  1. Provider:发布服务并将服务注册到注册中心,等待消费者调用。
  2. Consumer:从注册中心订阅服务,和服务提供者进行通信,消费服务。
  3. Registry:记录服务提供者的信息,以及服务提供者和服务消费者之间的关系,帮助消费者发现可用的服务实例。
  4. Monitor:收集Dubbo节点的性能指标、服务调用统计信息等,以便运维人员进行监控和管理。
  5. Container:服务的运行容器。

image.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 服务。

使用 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 的参数,例如:

并且点击发送运行,得到 Dubbo 服务返回的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值