【日常经验】Spring Cloud Feign 是不是rpc框架调用?

🏡作者主页:点击!

🤖Vue专栏:日常经验

⏰️创作时间:2024年11月06日15点00分

文章目录

Spring Cloud Feign可以被看作是一种在Spring Cloud生态下具有RPC风格的服务调用框架。

  1. 服务调用方式类似RPC

    • 原理
      • Spring Cloud Feign通过接口定义的方式来隐藏HTTP请求的细节。开发人员只需要定义一个接口,并用注解来描述这个接口对应的远程服务的信息,如服务名、请求路径、请求方法等。在运行时,Feign会根据这些注解自动生成一个代理类,这个代理类会处理实际的HTTP请求。从开发者的角度来看,就像是在调用本地的一个方法,但实际上这个方法会被映射为一个远程的HTTP请求,这和RPC的理念(让远程调用像本地调用一样)是相似的。
    • 示例
      • 假设我们有一个用户服务(user - service)和一个订单服务(order - service),订单服务需要调用用户服务来获取用户信息。
      • 首先在订单服务中定义一个Feign接口:
        @FeignClient(name = "user - service")
        public interface UserClient {
          @GetMapping("/users/{id}")
          User getUserById(@PathVariable("id") Long id);
        }
        
      • 然后在订单服务的代码中就可以像调用本地方法一样使用这个接口:
        @Service
        public class OrderService {
          @Autowired
          private UserClient userClient;
          public Order createOrder(Long userId) {
            User user = userClient.getUserById(userId);
            // 其他订单创建逻辑
            return new Order(user);
          }
        }
        
      • 这里userClient.getUserById(userId)看起来就像是本地方法调用,但实际上它会发送一个HTTP GET请求到user - service服务的/users/{id}路径,获取用户信息。
  2. 与传统RPC的区别

    • 通信协议和数据格式
      • 传统的RPC框架(如Dubbo、gRPC)通常有自己的通信协议和高效的数据序列化格式。例如,gRPC使用HTTP/2和Protocol Buffers,Dubbo有自己的协议和支持多种序列化方式(如Hessian等)。而Spring Cloud Feign是基于HTTP协议和通常使用JSON(默认情况下)或其他支持的媒体类型进行数据传输,它没有像传统RPC框架那样专门设计的通信协议。
    • 功能特性
      • 传统RPC框架一般会提供更强大的服务治理功能,如Dubbo有丰富的服务发现、负载均衡、容错机制等,这些功能是其框架的核心部分。Spring Cloud Feign虽然也可以集成Spring Cloud的服务治理组件(如Eureka用于服务发现、Ribbon用于负载均衡等),但它本身更侧重于简化HTTP RESTful风格的服务调用,这些服务治理功能是通过和其他Spring Cloud组件配合来实现的。

所以,Spring Cloud Feign在简化远程服务调用方面表现出了RPC风格的特点,但在底层通信协议和完整的服务治理功能集成方面与传统的RPC框架有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

执键行天涯、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值