Skip to content

熔断,限流,负载均衡

  • 微服务熔断、限流、负载均衡的作用和原理讲解
  • 微服务API网关介绍
  • 熔断、限流、负载均衡代码实现

熔断(hystrix-go)介绍

微服务熔断的作用

  • 什么是服务雪崩效应? 什么是服务雪崩效应?
  • 熔断目标
    1. 阻止故障的连锁反应
    2. 快速失败并迅速恢复
    3. 回退并优雅降级
    4. 提供近实时的监控与警告⚠️
  • 熔断使用过程中的一些原则
    1. 防止任何单独的依赖耗尽资源(线程)
    2. 过载立即切断并快速失败,防止排队
    3. 尽可能提供回退以保护用户免受故障
    4. 通过近实时的指标,监控和告警,确保故障被及时发现

熔断 Hystrix 原理

  • 请求原理 请求原理
  • 熔断器的状态
    1. CLOSED 关闭状态:允许流量通过。
    2. OPEN 打开状态:不允许流量通过,即处于降级状态,走降级逻辑。
    3. HALF_OPEN 半开状态:允许某些流量通过,如果出现超时、异常等情况,即进入 OPEN 状态,如果成功,那么将进入 CLOSED 状态。
  • 重要的字段
    1. Timeout:执行command的超时时间,默认时间是1000毫秒
    2. MaxConcurrentRequests:最大并发量,默认值是10
    3. SleepWindow:熔断打开后多久进入再次尝试,默认值5000毫秒
    4. RequestVolumeThreshold:10秒内的请求量,默认值20,判断是否熔断
    5. ErrorPercentThreshold:熔断百分比,默认值50%,超过启动熔断
  • 熔断计数器
    1. 每一个 Command 都会有一个默认统计控制器
    2. 默认的统计控制器 DefaultMetricCollector(收集)
    3. 保存熔断器的所有状态,调用次数,失败次数,被拒绝次数等信息
  • 熔断计数器的原理
    熔断计数器的原理
    在区间内的每一秒会得到四种结果状态,按照配置策略判断熔断结果,根据配置区间假设第11秒时,第1秒的就会被销毁,不做参考。
  • 上报状态信息原理
    上报状态信息原理
    上报状态信息原理是通过断路器的,当断路器执行完成之后会上报信息,保存到相应的熔断器里面(以秒为一个Buckets),在以10秒为时间窗口中记录当前秒的状态,然后根据请求的状态判断熔断是否打开。

Docker 安装 hystrix-go 控制面板

  • http://zhuanlan.zhihu.com/p/540217601

限流(uber/limit)

限流的作用

  • 限制流量,在服务端生效
  • 保护后端服务
  • 与熔断互补(熔断是客户端的方案,当发现请求窗口期的计数器超过策略,客户端就要执行降级逻辑。)

限流的原理

  • uber/limit 漏桶算法原理

漏桶算法原理

负载均衡作用和原理

  • 提高系统扩展性
  • 支持:HTTP、HTTPS、TCP、UDP 请求
  • 主要算法:循环算法和随机算法,默认是随机算法

负载均衡原理

微服务API网关