微服务入门(四) | 五大核心组件之Ribbon

目录

定义

实现原理

负载均衡-客户端负载均衡

工作步骤

IRule 负载均衡规则

根据特定算法中从服务器列表中选取一个要访问的服务

七种默认算法

可自实现 IRule

Reference


  • 定义

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。

Ribbon主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完整的配置项,如:连接超时、重试等。在配置文件中列出 LoadBalancer(简称LB:负载均衡)后面所有的服务器后,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等等)去连接这些服务器。

  • 实现原理

    • 负载均衡-客户端负载均衡

    • 工作步骤

      • 选择 Eureka Server(优先选择在同一个区域内负载较少的)
      • 根据用户指定的策略(IRule),在上一步选择的 Eureka Server取到的服务注册列表中选择一个地址
    • IRule 负载均衡规则

      • 根据特定算法中从服务器列表中选取一个要访问的服务

      • 七种默认算法

        • RoundRobinRule
          • 轮询
        • RandomRule
          • 随机
        • AvailabilityFilteringRule
          • 先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务
          • 对剩余的服务列表按照轮询策略进行访问
        • WeightedResponseTimeRule
          • 根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大被选中的概率越大
          • 刚启动时如果统计信息不足,则使用轮询策略,等统计信息足够,会切换到响应权重策略
        • RetryRule
          • 先按照轮询策略获取服务
          • 如果获取服务失败则在指定时间内进行重试,获取可用的服务
        • BestAvailableRule
          • 先过滤掉由于多次访问故障而处于断路器跳闸状态的服务
          • 选择一个并发量最小的剩余的服务
        • ZoneAvoidanceRule【默认】
          • 复合判断Server所在区域的性能和Server的可用性选择服务器
          • 在没有Zone的环境下,类似于轮询
          • 为Ribbon默认的算法
      • 可自实现 IRule

        • 注意:自定义规则的配置类不要在启动类所在的包内,要跟启动类所在的包同级的包内,例如配置类MyRule在 com.example.myrule/MyRule.class,启动类在 com.example.application/SpringApplication.class
  • Reference

  • spring官方文档

https://spring.io/projects/spring-cloud-netflix

  • 【狂神说Java】SpringCloud最新教程IDEA版

https://www.bilibili.com/video/BV1jJ411S7xr

  • Ribbon,负载均衡简介,Ribbon架构,IRULE的7种默认算法

https://www.pianshen.com/article/17531074984/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值