Spring Cloud Alibaba 快速入门(六):Spring Cloud 服务调用迁移为Dubbo

本文介绍了如何使用@DubboTransported注解将SpringCloud的OpenFeign和RestTemplate服务调用无缝切换到Dubbo的RPC协议,保留原有接口不变,简化迁移过程。SpringCloudAlibabaDubbo提供了这种能力,使得服务消费者可以在不修改代码的情况下利用Dubbo的高性能和稳定性的服务治理。同时,提供了从OpenFeign迁移到Dubbo的简单步骤,包括配置依赖和添加注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: Spring Cloud 默认的服务调用依赖 OpenFeign 或 @LoadBalanced RestTemplate 使用 REST 进行调用。Spring Cloud Alibaba Dubbo 只需使用 @DubboTransported 注解即可将底层的 Rest 协议无缝切换成 Dubbo RPC 协议,进行 RPC 调用。这一举措让 Spring Cloud 的客户端调用多了一个新的 RPC 选择,实现服务间多种协议的通讯。

//RestTemplate方式
@Bean
@LoadBalanced
@DubboTransported
public RestTemplate restTemplate() {
  return new RestTemplate();
}

//OpenFeign方式
@FeignClient("dubbo-provider")
@DubboTransported(protocol = "dubbo")
public interface DubboFeignRestService {
  @GetMapping(value = "/param")
  String param(@RequestParam("param") String param);

  @PostMapping("/saveB")
  String saveB(@RequestParam("a") int a, @RequestParam("b") String b);
}

一、@DubboTransported 注解无缝迁移为Dubbo调用

Dubbo Spring Cloud是Spring Cloud Alibaba项目内部提供的一个可以使用Spring Cloud客户端RestTemplate或OpenFeign无缝迁移到Dubbo调用或者调用Dubbo服务的模块。

尽管 Dubbo Spring Cloud 完全地保留了原生 Spring Cloud 服务调用特性,不过 Dubbo 服务治理的能力是 Spring Cloud Open Feign 所不及的,如高性能、高可用以及负载均衡稳定性等方面。因此,建议开发人员将 Spring Cloud Open Feign 或者@LoadBalanced RestTemplate 迁移为 Dubbo 服务。

考虑到迁移过程并非一蹴而就,即使是那些有意将 Spring Cloud 迁移至 Dubbo 的小伙伴,当面对其中迁移和改造的成本时,难免望而却步。因此,Dubbo Spring Cloud 提供了方案,即@DubboTransported 注解。该注解能够帮助服务消费端的 Spring Cloud Open Feign 接口以及 @LoadBalanced RestTemplate Bean 底层走 Dubbo 调用(可切换 Dubbo 支持的协议)。换言之,在不调整 Feign 接口以及RestTemplate URL 的前提下,实现无缝迁移。

如果迁移时间充分的话,还是建议使用 Dubbo 服务重构系统中的原生 Spring Cloud 服务的定义,应用可通过 Apache Dubbo 注解 @Service和 @Reference暴露和引用 Dubbo服务。


二、从Open Feign迁移到Dubbo简单示例

2.1、Spring Cloud Provider端配置

a>引入spring-cloud-starter-dubbo 依赖

<!-- Dubbo Spring Cloud Starter -->
    <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
    </dependency>

2.2、 Spring Cloud Consumer端配置

a> 引入spring-cloud-starter-dubbo 依赖

<!-- Dubbo Spring Cloud Starter -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-dubbo</artifactId>
    </dependency>

b>application.properties配置文件增加Dubbo配置

dubbo.protocol.name=dubbo
#dubbo.application.name=order-service
dubbo.protocol.port=-1
#避免subscribe all services, a lot of memory and CPU cycles may be used
dubbo.cloud.subscribed-services="product-service"

c>Consumer 客户端加上 @DubboTransported 注解:

OpenFeign接口添加 @DubboTransported 注解,或者RestTemplate调用对象添加 @DubboTransported 注解

RestTemplate 和 OpenFeign 客户端都支持 @DubboTransported 注解。

RestTemplate 的使用方式如下:

OpenFeign 的使用方式如下:

2.3、使用 RestTemplate 或 OpenFeign 调用 Dubbo 服务

使用 RestTemplate调用的方式如下:

使用 OpenFeign调用的方式如下:


参考链接: 

Spring Cloud整合Dubbo——从Open Feign迁移到Dubbo

微服务调用组件 - dubb

Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI何哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值