Ribbon

定义

  • Ribbon是基于Http和TCP的客户端的负载均衡工具
  • 它不像spring cloud服务的注册中心,配置中心,API 网关那样独立部署,但是它几乎存在于每个spring cloud微服务中,包括feign提供的声明式的服务调用也是基于Ribbon实现的
  • ribbon默认提供很多种负载均衡的算法
  • 注释:客户端是基于服务端的,是调用服务端的微服务

负载均衡解决方案

集中式负载均衡

  • 即在consumer 和provider之间 使用独立的负载均衡的设施(硬件F5,软件nginx),由该设施将请求通过某种策略转发至provider

进程内的负载均衡

  • 将负载均衡逻辑集成到consumer进程中,consumer从注册中心中获取有哪些地址可以用,再从地址中获取一个合适的provider。
  • 注释:从注册中心中获取合适的服务
    Ribbon

负载均衡方式

  • 轮询:按顺序访问服务
  • 权重轮询策略:根据每个provider相应的时间分配一个权重,相应时间越长,权重越小
    原理:一开始是轮询策略,并开启一个计时器,每30秒收集一次每个provider的相应时间
  • 随机策略:从provider列表中随机选择一个provider
  • 最少并发: 选择正在请求的并发数最小的provider,除非这个provider在熔断中