【spring cloud 】Ribbon和OpenFeign(代替RestTemplate)

文章目录


相关文章:
【spring cloud 】Ribbon和OpenFeign(代替RestTemplate)
Dubbo 与 Feign 的区别
nacos、ribbon和feign的简明教程

概述

Ribbon和OpenFeign我个人认为是两个东西

  • Ribbon侧重于做服务调用时的负载均衡,是一种算法实现
  • 而OpenFeign侧重于面向接口进行服务调用,即rpc框架,类似的还有dubbo。特点是代码比较简洁,调用xx接口就可以实现访问另外一个服务,不需要写很长的url。虽然是接口形式,底层还是需要依赖相应的通信协议,例如Http协议,dubbo协议

dubbo框架的底层采用dubbo协议,也可以采用Http协议,dubbo协议可以被其他框架使用。也就是说框架和协议是独立的东西

  • RestTemplate功能和OpenFeign类似,用于2个服务之间的通信,RestTemplate采用是http调用客户端,缺点是面向url,而非接口,没有rpc框架好用。

在只引入Ribbon依赖的时候,可以使用restTemplate来进行服务调用, 这是没有OpenFeign的情况下的一个执行流程,大概流程如下:
在这里插入图片描述

引入openFeign情况下的执行流程:
在这里插入图片描述
OpenFeign相比Ribbon在代码实现上是在客户端多了一层接口,之前用ribbon的时候客户端只有controller层,通过restTemplate请求服务端的controller层。Openfeign需要在客户端创建一个service层,并创建一个service接口(要用到@FeignClient注解),其方法和服务端的controller里的方法相对应,之后客户端的controller调这个接口就行了。

OpenFeign的引入直接砍掉了restTemplate,客户端controller在调用服务端时不需要再关注请求的方式、地址以及是forObject还是forEntity,完全面向接口调用,层次结构更加明了,而且OpenFeign自身集成Ribbon,所以默认开启轮询的负载均衡。(虽然Eureka也集成了ribbon,但大概是eureka已经停更了,所以openFeign集成了ribbon)。而且还可以和hystrix相结合,写一个类实现service接口,其中实现的方法的方法体便是降级或熔断的fallback方法(需要在接口中指定该实现类)。这样结构更清晰,耦合也更低。

引入依赖时,只用引入OpenFeign即可,会自动下载ribbon包。

我们不用过多去研究ribbon,它只是一个提供负载均衡的,大多时候只是更改负载均衡的算法。我们只需要编写好feign的接口以及其降级实现类, 所以引入依赖时,只用引入OpenFeign即可。

参考

Ribbon和OpenFeign

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值