熔断,限流,负载均衡
- 微服务熔断、限流、负载均衡的作用和原理讲解
- 微服务API网关介绍
- 熔断、限流、负载均衡代码实现
熔断(hystrix-go)介绍
微服务熔断的作用
- 什么是服务雪崩效应?
- 熔断目标
- 阻止故障的连锁反应
- 快速失败并迅速恢复
- 回退并优雅降级
- 提供近实时的监控与警告⚠️
- 熔断使用过程中的一些原则
- 防止任何单独的依赖耗尽资源(线程)
- 过载立即切断并快速失败,防止排队
- 尽可能提供回退以保护用户免受故障
- 通过近实时的指标,监控和告警,确保故障被及时发现
熔断 Hystrix 原理
- 请求原理
- 熔断器的状态
CLOSED
关闭状态:允许流量通过。OPEN
打开状态:不允许流量通过,即处于降级状态,走降级逻辑。HALF_OPEN
半开状态:允许某些流量通过,如果出现超时、异常等情况,即进入OPEN
状态,如果成功,那么将进入CLOSED
状态。
- 重要的字段
Timeout
:执行command的超时时间,默认时间是1000毫秒MaxConcurrentRequests
:最大并发量,默认值是10SleepWindow
:熔断打开后多久进入再次尝试,默认值5000毫秒RequestVolumeThreshold
:10秒内的请求量,默认值20,判断是否熔断ErrorPercentThreshold
:熔断百分比,默认值50%,超过启动熔断
- 熔断计数器
- 每一个 Command 都会有一个默认统计控制器
- 默认的统计控制器 DefaultMetricCollector(收集)
- 保存熔断器的所有状态,调用次数,失败次数,被拒绝次数等信息
- 熔断计数器的原理
- 上报状态信息原理
Docker 安装 hystrix-go 控制面板
http://zhuanlan.zhihu.com/p/540217601
限流(uber/limit)
限流的作用
- 限制流量,在服务端生效
- 保护后端服务
- 与熔断互补(熔断是客户端的方案,当发现请求窗口期的计数器超过策略,客户端就要执行降级逻辑。)
限流的原理
- uber/limit 漏桶算法原理
负载均衡作用和原理
- 提高系统扩展性
- 支持:HTTP、HTTPS、TCP、UDP 请求
- 主要算法:循环算法和随机算法,默认是随机算法