应用容错的概念
应用错误-雪崩效应
定义: 服务雪崩效应是一种因“服务提供者的不可用”(原因)导致“服务调用者不可用”(结果),并将不可用逐渐放大的现象。
服务雪崩的过程可以分为三个阶段:
服务提供者不可用。
重试加大请求流量。
服务调用者不可用。
应用错误-雪崩效应示意
应用容错
所谓容错是指在故障存在的情况下计算机系统不失效,仍然能够正常工作的特性。容错即是Fault Tolerance,确切地说是容故障(Fault),而并非容错误(Error)。
容错解决方案
设置超时时间:
比如为每次请求设置响应时间为1S,只要释放的快,就不容易死掉。
限流:
经过评估,最大的的请求量为1000,可以设置成800,通过限制流量的进入,使服务达到不饱和状态。
仓壁模式:
不把鸡蛋放在一个篮子里,在应用程序中,使每个服务有自己独立的线程池。
断路器模式:
在微服务中,监控每个API的错误率、错误次数,达到一定的预值,就断开,不去调用远方的API。
断路器三态转换
应用容错的产品
解决问题:
多样化的流量控制,提供安全可用的服务。
提供对服务的熔断与降级,保证系统正常运行。
系统的负载保护,在高并发、高请求的状态下,保护系统。
提供实时的监控和控制台,可方便的对线上系统进行容错策略的调整。
选择应用容错的产品:
Hystrix是Spring Cloud官方集成的,但目前已经停止更新维护,所以我们就放弃。
Hystrix停止维护后,Spring Cloud推荐使用resilience4j,但在功能上,对容错的支持并不如Sentinel。
Sentinel是阿里推出的容错产品,目前已经开源给Apache,被Spring Cloud Alibaba集成,并且经受着每年的购物狂欢的考验,有方便的控制台和监控系统。