熔断、限流和服务降级是微服务架构中常见的三种重要的容错机制
熔断
熔断是什么
- 熔断是一种保护机制,当某个服务调用的响应时间过长或者出现异常时,为了防止整个系统出现雪崩,暂时切断对该服务的调用
- 熔断器会监控服务调用的状况,当检测到某个服务调用异常时,会拒绝访问该服务,快速返回一个错误响应
熔断器的状态
CLOSED
:默认状态。断路器观察到请求失败比例没有达到阈值,断路器认为被代理服务状态良好。OPEN
:断路器观察到请求失败比例已经达到阈值,断路器认为被代理服务故障,打开开关,请求不再到达被代理的服务,而是快速失败。HALF OPEN
:断路器打开后,为了能自动恢复对被代理服务的访问,会切换到半开放状态,去尝试请求被代理服务以查看服务是否已经故障恢复。如果成功,会转成CLOSED
状态,否则转到OPEN
状态限流
- 限流是为了保护系统,防止其被突发的流量冲击而导致服务不可用。
- 限流通过对并发请求数或访问频率进行控制,来保护系统,避免被瞬时的流量高峰冲垮。
限流指标
QPS
:服务端每秒能够响应的客户端查询请求数量HPS
:每秒请求数,指每秒钟服务端收到客户端的请求数量TPS
:系统吞吐量
限流处理方式
- 直接拒绝:直接返回错误信息,如HTTP 429 Too Many Requests。
- 排队等待:将请求放入消息队列等待处理。
- 服务降级:返回兜底数据。
限流架构
- 网关层限流:在网关层进行限流,如Nginx、Spring Cloud Gateway。
中间件限流:使用Redis等中间件进行分布式限流。
降级
- 服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降低服务级别。
- 以此释放服务器资源以保证核心服务可用。服务降级一般会在保证核心功能的情况下,对非核心功能进行有策略的降级。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。