基本概念
Spring Cloud OpenFeign 并不是独立的技术。它底层基于 Netflix Feign,Netflix Feign 是 Netflix 设计的开源的声明式 WebService 客户端,用于简化服务间通信。Netflix Feign 采用“接口+注解”的方式开发,通过模仿 RPC 的客户端与服务器模式(CS),采用接口方式开发来屏蔽网络通信的细节。原生的 Feign 在使用层面已经很方便了,但是在 Spring Cloud 体系中却不那么适用,所以官方团队在 Feign 的基础上进行扩展,推出了 spring-cloud-openfeign,目的是能够让广大的开发者在 Spring Cloud 体系中使用 Feign 变得更加简单。
我们开发的 API 都用的是 Spring MVC 的注解,比如 RequestMapping 等,Feign 的注解是单独的一套,所以我们编写调用 Client 接口时,需要根据已有的接口来编写,在 spring-cloud-openfeign 中,实现了 Spring MVC 的一套注解,调用方 Client 接口中的注解和 API 方可以一致,非常方便。
使用步骤
在 Spring Cloud 中使用 Feign 主要有三步。
- 需要在启动类加 @EnableFeignClients 启用 Feign。
- 可以定义 Feign 的调用客户端了,需要在接口上增加 @FeignClient 注解。
- 可以直接通过客户端访问接口。
服务消费者依赖了 spring-cloud-starter-openfeign,在 Spring Boot 工程会自动引入 Spring Cloud OpenFeign 与 Netflix Feign 的 Jar 包。这里有个重要细节,当我们引入 OpenFeign 的时候,在 Maven 依赖中会出现 netflix-ribbon 负载均衡器的身影。
由此可以知道OpenFeign 为了保证通信高可用,底层也是采用 Ribbon 实现负载均衡,其原理与 Ribbon+RestTemplate 完全相同,只不过相较 RestTemplate,OpenFeign 封装度更高罢了。
相关文章:
【云原生】SpringCloud系列之客户端负载均衡Ribbon
微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
主页:共饮一杯无的博客汇总👨💻保持热爱,奔赴下一场山海。🏃🏃🏃
转载请注明:【云原生】SpringCloud系列之服务调用OpenFeign(基本概念和使用步骤) | 胖虎的工具箱-编程导航