OpenFeign和Feign的区别(微服务间调用简单总结)
08年出来做外包,用过Cloud,当时微服务间的相互调用用的还是Feign,其中两年没做过Cloud的项目开发了,重新学了新版本,才知道老一辈那些组件都已经停更了。现在用的都是OpenFeign,简单的理解为Feign的升级版。区别:同:Feign和OpenFeign作用一样,都是进行远程调用的组件。里面都内置了Ribbon。都是加在消费端的注解,让消费端可以调用其他生产者的服务。异:依赖不同,一
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~
记录完毕,撤~有写错的或者有更优雅的写法记得@ 我~
更多推荐
所有评论(0)