Ribbon与Nginx的区别

发布时间 2023-07-13 23:40:33作者: huigui_mint

一、Ribbon与Nginx的区别

我们知道负载均衡有硬件负载均衡与软件的负载均衡方案

硬件负载均衡:比如 F5、深信服、Array 等; 软件负载均衡:比如 Nginx、LVS、HAProxy 等; 硬件负载均衡或是软件负载均衡,他们都会维护一个可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候,该设备按某种算法(比如轮询、权重、 最小连接数等)从维护的可用服务端清单中取出一台服务端的地址,然后进行转发。

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,是一个基于HTTP和TCP的客户端负载均衡工具。

Ribbon与Nginx的区别

Nginx是基于服务端的负载均衡,客户端所有请求统一交给 nginx,由 nginx 进行实现负载均衡请求转发,Nginx保持服务清单的同时,也负责负载均衡算法

Ribbon是从 eureka 注册中心服务器端上获取服务注册信息列表,缓存到本地,然后在本地实现轮询负载均衡策略,Ribbon不负责出来服务清单,

 

二、Ribbon负载均衡策略

Ribbon提供七种负载均衡策略

RandomRule 随机
RoundRobinRule 轮询
AvailabilityFilteringRule 先过滤掉由于多次访问故障的服务,以及并发连接数超过阈值的服务,然后对剩下的服务按照轮询策略进行访问;
WeightedResponseTimeRule 根据平均响应时间计算所有服务的权重,响应时间越快服务权重就越大被选中的概率即越高,如果服务刚启动时统计信息不足,则使用RoundRobinRule策略,待统计信息足够会切换到该WeightedResponseTimeRule策略;
RetryRule 先按照RoundRobinRule策略分发,如果分发到的服务不能访问,则在指定时间内进行重试,分发其他可用的服务;
BestAvailableRule 先过滤掉由于多次访问故障的服务,然后选择一个并发量最小的服务;
ZoneAvoidanceRule 综合判断服务节点所在区域的性能和服务节点的可用性,来决定选择哪个服务;

三、Ribbon实现方式

由于Spring Cloud Ribbon的封装, 我们在微服务架构中使用客户端负载均衡调用非常简单, 只需要如下两步:

  • 启动多个服务提供者实例并注册到一个服务注册中心或是服务注册中心集群。

  • 服务消费者通过被@LoadBalanced注解修饰过的RestTemplate来调用服务提供者。 这样,我们就可以实现服务提供者的高可用以及服务消费者的负载均衡调用。

四、SpringCloud中的使用

在SpringCloud中 Feign中集成了Ribbon,会自动使用负载均衡。

fallback是自定义异常熔断类,声明后的接口出现异常时,会自动执行服务降级



作者:MobotStone
链接:https://www.jianshu.com/p/49b3a22dbec9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。