Dubbo3特性篇 Rest协议

日期 更新说明
2024年4月13日 dubb rest 协议

简介

在Dubbo中将服务远程调用中,将暴露 REST 服务成为可能;使其可以方便使用Dubbo的方式调用 REST 服务(作为服务的消费者),同时也很方便的将原有的服务发布成为 RETST 服务(作为服务提供者)。用官方文档的原话如下:

为dubbo添加REST调用后,可以实现服务的"一次编写,到处访问",理论上可以面向全世界开放,从而真正实现比较理想化的面向服务架构(SOA)

目前官方3.3的版本中,使用 tri协议是完全兼容 reset协议的。也就是对于传统支持的 Dubbo协议的应用,只需要升级到指定的版本,然后通过简单改造就可以将原来的Dubbo的服务,同时发布成为具有 rest协议的服务。值得重点说明的是Dubbo3在新的版本中开始支持的 springmvc的注解的,这是以前的 DubboX以前不具备的能力。

从这里也可以看出 Dubbo在为跨语言调用,以及支持 Spring Cloud体系做出了更多的支持

开始 -- Dubbo 的 Rest 案例体验

备注案例使用 dubbo-3.3.0-beta.2 的版本,如果仓库没有发布的的话,请自行编译吧

  1. 引入相关依赖
xml 复制代码
<!-- dubbo -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>3.3.0-beta.2</version>
</dependency>
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>3.3.0-beta.2</version>
</dependency>
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-zookeeper-curator5-spring-boot-starter</artifactId>
    <version>3.3.0-beta.2</version>
</dependency>

<!-- spring boot starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>${springboot.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>${springboot.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
    <version>${springboot.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>${springboot.version}</version>
    <scope>test</scope>
</dependency>
  1. 接口类

UserService

less 复制代码
@RequestMapping("/user")
public interface UserService {

    @GetMapping("findUserId/{id}")
    String findUserNameById(@PathVariable String id);

    @GetMapping("hello")
    String sayHello();
}

·UserServiceImpl·类

typescript 复制代码
@DubboService
public class UserServiceImpl implements UserService {

    public Map<String, String> userRepository = Map.of("1", "dubbo", "2", "apache");

    @Override
    public String findUserNameById(String id) {
        if (!userRepository.containsKey(id)) {
            throw new RuntimeException(id + " not found");
        }
        return "id : " + id + " name : " + userRepository.get(id);
    }

    @Override
    public String sayHello() {
        return "hell world, dubbo";
    }
}
  1. 配置

application.yml

yaml 复制代码
server:
  port: 8081
dubbo:
  application:
    name: dubbo-springboot-rest-springmvc
    qos-port: 33333
  registry:
    address: zookeeper://${zookeeper.address:127.0.0.1}:2181
  protocol:
    name: tri
    port: 50052


logging:
  level:
    root: info

启动SpringBoot项目让我测试一下吧

bash 复制代码
curl http://localhost:50052/user/findUserId/1
curl http://localhost:50052/user/findUserId/2
curl http://localhost:50052/user/hello

如下图所示结果,至此案例结束,使用起来还是很方便的。

github链接:github.com/will-we/blo...

相关参考

相关推荐
武子康20 小时前
Java-75 深入浅出 RPC Dubbo Java SPI机制详解:从JDK到Dubbo的插件式扩展
java·分布式·后端·spring·微服务·rpc·dubbo
Easonmax2 天前
文心一言4.5深度评测:国产大模型的崛起之路
dubbo
武子康2 天前
Java-74 深入浅出 RPC Dubbo Admin可视化管理 安装使用 源码编译、Docker启动
java·分布式·后端·spring·docker·rpc·dubbo
武子康3 天前
Java-71 深入浅出 RPC Dubbo 上手 父工程配置编写 附详细POM与代码
java·分布式·程序人生·spring·微服务·rpc·dubbo
武子康3 天前
Java-72 深入浅出 RPC Dubbo 上手 生产者模块详解
java·spring boot·分布式·后端·rpc·dubbo·nio
悟能不能悟5 天前
Dubbo跨越分布式事务的最终一致性陷阱
分布式·wpf·dubbo
武子康5 天前
Java-70 深入浅出 RPC Dubbo 详细介绍 上手指南
java·分布式·网络协议·spring·rpc·dubbo·nio
向風而行6 天前
数据提取之lxml模块与xpath工具
dubbo
发仔12310 天前
Dubbo介绍及示例用法
java·dubbo
初九之潜龙勿用11 天前
文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南
开源·dubbo·文心一言