08年出来做外包,用过Cloud,当时微服务间的相互调用用的还是Feign,其中两年没做过Cloud的项目开发了,重新学了新版本,才知道老一辈那些组件都已经停更了。现在用的都是OpenFeign,简单的理解为Feign的升级版。
区别:

同:
Feign和OpenFeign作用一样,都是进行远程调用的组件。
里面都内置了Ribbon。
都是加在消费端的注解,让消费端可以调用其他生产者的服务。
异:
依赖不同,一个是spring-cloud-starter-feign,一个是spring-cloud-starter-openfeign。
使用方式不同,Feign直接加在接口上并且不支持SpringBoot注解。OpenFeign支持@RequestMapping("/demo/test")这种注解。

OpenFeign简单使用:

(1)加入依赖

		<!--OpenFeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

(2)修改yml配置文件,添加消费者入注册中心,同时开启fetch
在这里插入图片描述

(3)主启动类上面加:@EnableFeignClients
在这里插入图片描述
(4)controller正常写,在调用的service interface 那里加:
在这里插入图片描述
这里的Value,就是服务注册中心的server name,这样就绑定了Feign为该接口会进行哪个server的远程调用。这里有个很突出的特点,可以在接口里的方法加@RequestMapping,这个就是OpenFeign做的一个升级,通过JDK动态代理的方式对该接口进行增强,产生ProxyDemoService代理实现类,根据服务名称从Eureka提供的注册表单中拿到可用的服务节点,再根据Ribbon配置的负载均衡算法去选定某个服务节点开始建立连接,发起调用,解析响应。

不实用Feign做调用也行,那就用RestTemplate。一样能发起请求获得响应,一样能够通过服务名进行轮询,随机或者权重,哈希,自己DIY~

在这里插入图片描述

记录完毕,撤~有写错的或者有更优雅的写法记得@ 我~
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐