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注解下的接口,并通过动态代理产生实现类,实现类中做负载均衡并调用其他服务

相关文章
|
7月前
|
负载均衡 Java 微服务
OpenFeign原来是这么基于Ribbon来实现负载均衡的
大家好,我是三友~~ 前面我已经剖析了OpenFeign的动态代理生成原理和Ribbon的运行原理,这篇文章来继续剖析SpringCloud组件原理,来看一看OpenFeign是如何基于Ribbon来实现负载均衡的,两组件是如何协同工作的。
OpenFeign原来是这么基于Ribbon来实现负载均衡的
|
6天前
|
负载均衡 应用服务中间件 网络安全
深入理解Nginx与Ribbon的区别
深入理解Nginx与Ribbon的区别
90 0
|
6天前
|
存储 负载均衡 Java
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
|
6天前
|
负载均衡 Java 应用服务中间件
springcloud3-服务到服务调用ribbon及openfeign
springcloud3-服务到服务调用ribbon及openfeign
47 0
|
9月前
Ribbon、Feign、Hystrix超时&重试&熔断问题
在使用Ribbon、Feign、Hystrix组合时,因为配置的问题出现以下现象,让我的大脑CPU烧的不行不行(拿我老家话说就是“脑子ran滴奥”)
107 0
|
6天前
|
Java 微服务 Spring
Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
45 0
|
6天前
|
负载均衡 算法 Java
SpringCloud - Feign与Ribbon请求负载均衡实践
SpringCloud - Feign与Ribbon请求负载均衡实践
49 0
|
5月前
|
负载均衡 Java 数据库连接
原来Nacos、OpenFeign、Ribbon、loadbalancer组件是这么协调工作的
大家好,我是三友~~ 前几天有个大兄弟问了我一个问题,注册中心要集成SpringCloud,想实现SpringCloud的负载均衡,需要实现哪些接口和规范。
原来Nacos、OpenFeign、Ribbon、loadbalancer组件是这么协调工作的
|
10月前
|
负载均衡 Java Linux
springCloud搭建、zuul、feign、hystrix、ribbon(内部培训)
springCloud搭建、zuul、feign、hystrix、ribbon(内部培训)
130 0
springCloud搭建、zuul、feign、hystrix、ribbon(内部培训)
|
11月前
|
存储 负载均衡 算法
扒一扒Nacos、OpenFeign、Ribbon、loadbalancer组件协调工作原理
前几天有个大兄弟问了我一个问题,注册中心要集成SpringCloud,想实现SpringCloud的负载均衡,需要实现哪些接口和规范。