Ribbon负载均衡

Ribbon负载均衡

Ribbon是基于HTTP和TCP的客服端负载均衡工具,基于Netflix Ribbon实现 (っ ̯ -。)

Ribbon不像Spring Cloud 服务注册中心、配置中心、API网关那样独立部署,但它几乎存在于每个SpringCloud微服务中。包括为Fegin提供的声明式服务调用也是基于ribbon实现的

Ribbon 默认提供很多种负载均衡算法,轮询、随机、最小并发等等,还可以自定义负载均衡算法

在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例

负载均衡不同方案

目前主流的负载均衡可分为两类: (๑‾ ꇴ ‾๑)

集中式负载均衡(服务器级别)

在consumer和provider之间使用独立的负载均衡设施(硬件F5,软件Ngnix),由设施负责把访问请求通过某种策略转发至Provider

在这里插入图片描述

进程内负载均衡(客户端级别)

把负载均衡逻辑集成到 consumer,consumer从注册中心拉取服务列表,在列表里选出一个合适的provider

Ribbon属于后者,它是一个类库,集成于consumer进程,consumer通过它获取provider地址

在这里插入图片描述

Ribbon 负载均衡策略

  • 轮询(默认)

对应类名RoundRobinRule

每次都按顺序取下一个provider,像时钟一样,每到点钟就取几

  • 权重轮询

对应类名WeightedResponseTimeRule

按provider响应时间分配一个权重,响应时间越长,权重越小,被选中的几率就低

第一轮为轮询策略,同时开启一个计时器,每 30 秒 收集一次每个 provider 的平均响应时间,当信息足够时,给每个 provider 附上一个权重,并按权重随机选择 provider

  • 随机

对应类名RandomRule

从 provider 列表随机选择一个

  • 最少并发数

对应类名BestAvailableRule

谁最闲就找谁,除非这个 provider 正在熔断

  • 重试

对应类名RetryRule

当轮询策略不可用的时候,重试策略会尝试选择集群中其他节点

  • 可用性敏感

对应类名AvailabilityFilteringRule

过滤掉 eureka 中一直处于连接失败的 provider和过滤掉繁忙的 provider

  • 区域敏感性

对应类名ZoneAvoidanceRule

按“片”找,如果这个IP区域内有一个或者多个实例不可达或者响应慢,会降低该“片”内其他IP被选中的权重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值