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


相关文章:


概述

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即可,会自动下载ribbon包。

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

参考

经验分享 程序员 微信小程序 职场和发展