OpenFeign和Ribbon比较

ribbon

  • Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后面的所有机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。

openFeign

  • OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。

ribbon和openFeign区别

  • Ribbon侧重于做服务调用时的负载均衡,而OpenFeign侧重于面向接口进行服务调用

  • 启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

  • 服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。

  • 调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

  • Feign调用其他微服务API时可以使用统一的HTTPZ请求模板,包含请求参数,URL等信息,便于管理维护。Ribbon的请求通过RestTemplate调用其他微服务API,参数通过字符串拼接在URL后面,不方便写也不利于管理。

  • OpenFeign的引入直接砍掉了restTemplate,客户端controller在调用服务端时不需要再关注请求的方式、地址以及是forObject还是forEntity,完全面向接口调用,层次结构更加明了,而且OpenFeign自身集成Ribbon,所以默认开启轮询的负载均衡。

建议

ribbon需要使用restTemplate,OpenFeign直接面向接口调用,这样使用起来更自由方便。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×