Ribbon、Feign和OpenFeign的区别来了

简介: Ribbon、Feign和OpenFeign的区别来了

Ribbon


随着服务注册中心的安装完成后,客户端的负载均衡和服务的调用又是我们关注的话题。Ribbon可以实现客户端的负载均衡,


负载均衡LB


Load Balance(负载均衡):简单的说就是将用户的请求平摊的分配到多个服务器上,从而达到系统的HA(高可用)。常见的负载均衡工具有nginx、LVS,硬件上F5等


集中式LB


即在服务的消费方和提供方之间使用独立的LB设施,可以是硬件F5、也可以是软件nginx、LVS等,提供该设施将请求通过某种策略发送给服务提供方


进程内LB


将LB逻辑集成到消费方,消费方从服务注册中心查找服务列表,然后获取服务地址根据某种规则选出合适的服务器。Ribbon就是进程内LB,它只是一个类库,集成于消费方进程,消费者通过它来获取到服务提供方的地址


SpringCloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,主要功能是提供了客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供了一系列完善的配置项例如连接超时、重试等。Ribbon目前也进入了维护模式


Ribbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件


Ribbon 可以用来做客户端负载均衡,调用注册中心的服务


Ribbon的使用需要代码里手动调用目标服务,请参考官方示例:https://github.com/Netflix/ribbon


Nginx是服务器端的负载均衡,客户端的所有请求都会交给nginx,由nginx分发到各个服务器上。即负载均衡是由服务端实现的


Ribbon是本地的负载均衡,在调用微服务接口的时候,会在注册中心上获取注册服务信息列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用的技术


Feign


Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端


Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。


Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务


Feign支持的注解和用法请参考官方文档:https://github.com/OpenFeign/feign


Feign本身不支持Spring MVC的注解,它有一套自己的注解


Feign是Spring Cloud组件中的一个轻量级Restful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端的负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解接口,调用这个接口,就可以调用服务注册中心的服务



OpenFeign


而OpenFeign则是可以让我们像调用Dubbo接口一样,实现面向接口编程


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

OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,

并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。



OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理产生实现类,实现类中做负载均衡并调用其他服务

相关文章
|
2月前
|
存储 设计模式 缓存
OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现
该文章主要介绍了如何在OpenFeign中集成Ribbon以实现负载均衡,并详细分析了Ribbon中服务选择和服务过滤的核心实现过程。文章还涉及了Ribbon中负载均衡器(ILoadBalancer)和负载均衡策略(IRule)的初始化方式。
OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现
|
2月前
|
缓存 负载均衡 Java
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
文章标题为“OpenFeign的Ribbon负载均衡详解”,是继OpenFeign十大可扩展组件讨论之后,深入探讨了Ribbon如何为OpenFeign提供负载均衡能力的详解。
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
|
2月前
|
负载均衡 Java Spring
Ribbon的超时配置会覆盖OpenFeign的超时配置吗
该文章详细分析了OpenFeign与Ribbon之间的超时配置关系,解释了Ribbon如何覆盖OpenFeign的默认超时配置,并探讨了OpenFeign超时配置的动态修改方案。
|
3月前
|
负载均衡 Java API
Feign 进行rpc 调用时使用ribbon负载均衡源码解析
Feign 进行rpc 调用时使用ribbon负载均衡源码解析
64 11
|
3月前
|
负载均衡 Java API
通用快照方案问题之Feign添加请求拦截器如何解决
通用快照方案问题之Feign添加请求拦截器如何解决
23 1
|
3月前
|
负载均衡 算法 Java
通用快照方案问题之Ribbon和RestTemplate的结合使用如何解决
通用快照方案问题之Ribbon和RestTemplate的结合使用如何解决
27 0
|
5月前
|
负载均衡 应用服务中间件 网络安全
深入理解Nginx与Ribbon的区别
深入理解Nginx与Ribbon的区别
146 0
|
5月前
|
存储 负载均衡 Java
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
|
5月前
|
负载均衡 Java 应用服务中间件
springcloud3-服务到服务调用ribbon及openfeign
springcloud3-服务到服务调用ribbon及openfeign
67 0
|
5月前
|
Java 微服务 Spring
Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
90 0
下一篇
无影云桌面