为了保证系统本身的稳定,我们就需要把一些承载不了的流量给通过各种手段消化掉,一般的做法有三种
-
限流:通过令牌桶等算法,把一些额外的流量挡在系统外面,不让其访问。
-
降级:由于系统可能已经过载了,此时,我们就放弃处理一些服务和页面的请求或者仅简单处理,比如直接返回一个报错。
-
熔断:有些时候,系统过载过度或者上线出了 bug,降级都解决不了问题。比如,缓存失效了,导致大量请求频繁访问了数据库,而这种频繁访问数据库可能造成了大量的 IO 操作,结果又去影响了数据库所在的操作系统,同时,这个操作系统上又有着别的重要服务,直接也被影响了。对于这种连锁反应,我们称之为雪崩。而为了防止雪崩,我们就会坚决把缓存失效导致数据库被频繁访问的服务给停掉,这就是熔断
当系统出现问题的时候,直接就在这个入口点做相应的操作即可。
-
限流,就直接在这个入口点限制后续请求。
-
降级,就直接在这个入口点判断请求想要访问的服务或者页面,直接报错返回。
-
熔断,就直接在这个入口点,断开所有访问特定服务的请求连接,然后再把后继对特定服务的访问,也统统拦在门外