一 点睛
过载保护是在系统过载的时候,对已有的系统进行保护——保证系统尽力提供服务,保证系统承载的正常请求时正常的,丢弃非正常请求,让服务始终对外维持在最大服务能力的范围内。
二 什么是过载
1 正常情况
系统正常时,一个包从客户端发出,到返回给客户端的全部顺风顺水。
2 过载情况
系统单位时间内只能处理 n 个包,但客户给单位时候内给系统发送的包大于 n,久而久之,各级缓存会出现丢包现象,出现客户端请求超时现象,如果该服务还存在上下游服务,过载会导致更严重的级联失败的现象——雪崩。
在分布式系统中,由于某个节点故障或过载,形成请求堆积,最后导致整个系统都不可用的现象被称为雪崩。就像一个小雪球,越滚越大,最后形成雪崩现象。
当服务端的模块过载时,会导致其他调用该模块的系统也跟着级联超时,最终导致整个大系统都不能正常提供服务。
三 过载现象
在实际的项目中,过载会导致系统处理的包都超时,同时还会导致系统本身处理的性能下降。
过载主要有以下两种情况:
1 过多的请求导致服务器的处理能力下降
一般在发生过载时,系统是不堪重负的。由于前端会产生大量的超时请求,如果超时重试机制设置不当,触发超时重试,则导致请求数量变得更大,加重了过载的程度。除了程序自动重试,有时如果产品对用户的用到不合理,也会让用户产生很多无效的重试操作。
请求数量的增加会打破系统的平衡。例如,服务器收包的程序被频繁调用,占用了大量内存,内存不足又会使用 Swap 分区写磁盘等,最终导致服务器的 CPU