1、简介
Feign是一个REST客户端库,它通过接口驱动的方式来定义REST客户端。Spring Cloud Netflix体系中的Eureka服务注册中心客户端支持Ribbon客户端负载均衡器,而Feign本质上是Ribbon的包装,其内部是通过Ribbon来进行服务查找和负载均衡。 在Spring Cloud Netflix体系中,我们通常会通过以下两种方式进行服务通信:
支持负载均衡的RestTemplate
Feign生成的客户端接口
两种方式都是通过Ribbon进行服务查找,然后更加负载均衡策略选择服务进行服务通信,具体使用那种方式看个人爱好(小捌觉得Feign客户端接口这种方式,在代码上稍显复杂,但是更好管理)。
关于Feign的一点小知识: 大家经常听到有人说OpenFeign,有人说Feign,给人一种好像是两个东西的错觉。其实是因为Feign本身也是Netflix的开源项目,后面独立出来单独做了开源项目,改名为OpenFeign。这种情况其实很常见,比如鸿蒙-HarmonyOS就有Open HarmonyOS。
2、正文
正式开始Feign的学习之前,大家需要对微服务有一定的认识,关于这些知识点可以查看本专栏的往期文章,入门微服务、Eureka相关知识,并且搭建一个Eureka服务和客户端之后在来学习Feign。
2.1 服务搭建
搭建一个Eureka Server用于服务注册发现,此外准备两个相同的服务提供者SERVER和一个服务消费者CONSUMER,整体的服务如下所示:
2.4 总结
这篇文章入门了Feign,也顺带讲了下RestTemplate的简单使用。需要注意的是Fegin它并不负责解析服务名、负载均衡,这些都是其集成的Ribbon实现的。Feign可以替代RestTemplate,相比之下代码的可读性确实增强了,但是整体性能是有些许下降的。