理解 Dubbo:Dubbo 是什么,如何使用?
  fFf0DSl4rEhV 2023年11月02日 41 0

Dubbo是什么

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

理解 Dubbo:Dubbo 是什么,如何使用?_rpc

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:服务的运行容器。

理解 Dubbo:Dubbo 是什么,如何使用?_rpc_02

Dubbo  Provider 代码

接下来就在 IDE 中的 com.dubbo.example.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 服务。

理解 Dubbo:Dubbo 是什么,如何使用?_rpc_03

使用 Apifox 访问 Dubbo 服务

Dubbo 其实就是 RPC 的一种远程调用的方案,所以访问 Dubbo 服务也可类比为调用 RPC 的服务。

我们需要使用 API 工具来进行接口进行测试,观察接口是否能按照预期返回对应的数据。今天我选择了 Apifox 来进行请求,因为它支持中文,且免费支持 Dubbo 接口调试。

新建 Dubbo 项目

打开 Apifox,在团队中点击右侧的「新建项目」按钮,然后选择 Dubbo 项目。

理解 Dubbo:Dubbo 是什么,如何使用?_spring_04

新建 Dubbo 接口

在 Apifox 新建 Dubbo 接口时需要逐个创建 Package、服务和方法。以 demo/com.dubbo.example.DemoService:1.0.1 接口为例,新建接口时的对照图如下:

理解 Dubbo:Dubbo 是什么,如何使用?_服务调用_05

指定 Dubbo 服务地址

开始调试接口前需定义目标服务器地址。点击页面右上角的环境配置按钮,填写服务器地址,然后点击“保存”按钮。

理解 Dubbo:Dubbo 是什么,如何使用?_dubbo_06

调试 Dubbo 接口

我已经 Apifox 中新建了一个 Dubbo 项目并编写了一个接口。开始调试前需要指定接口路径,请求参数。

理解 Dubbo:Dubbo 是什么,如何使用?_spring_07

发送一个 Dubbo 请求

接着我们到达运行页面,填入请求 body 的参数,例如:

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

理解 Dubbo:Dubbo 是什么,如何使用?_服务调用_08

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  LxKByvFwtHdi   2023年11月02日   42   0   0 主键字段spring
  MV69bd6votD4   2023年11月02日   58   0   0 javaidespring
fFf0DSl4rEhV