降级、熔断、限流
降级:
服务降级,服务器压力激增时为了保证核心服务可用性,可以选择一些降低部分功能可用性或者直接关闭部分功能,例如一个一个社区软件,在服务器压力激增时,可以关闭评论,话题等服务,保证帖子服务正常,用户可以正常浏览内容。
另外一种是核心服务崩溃,例如推荐服务,会专门为这种服务留一个推荐降级服务,推荐降级服务只提供部分内容(基本上是固定的一批内容),主要为了防止主推荐流刷不出来内容,前段时间小红书app崩溃,主推荐页用户反馈都是些看过的内容或者不是自己喜欢的内容,应该就是走的这种降级方案。
熔断:
其实有一点类似降级里的核心服务崩溃,只是熔断的处理方式不太一样,熔断是直接不在请求,直接返回错误,当下游服务压力过大或出现崩溃时,主服务在请求不到内容时就会不断请求,进一步增加下游服务压力,进而也影响主服务的请求响应,最后可能导致主服务崩溃。在针对一些核心功能也需要考虑熔断机制。
例如在获取帖子详情页时,拉取评论详情时,(假如因为什么原因导致没刷出来,可能数据索引或者代码本身有漏洞),虽然服务之间本身有超时机制,不会因为挂了而导致刷不出来帖子内容,但是用户可能会因看不到内容刷详情次数增加,这时候主要主服务还在源源不断的给评论服务发请求,进一步加剧评论服务压力,可能导致评论服务崩溃而导致评论其他功能也无法使用。
熔断机制就是在下游子服务超时或者报错达到一定比例,直接返回错误,不再请求下游服务,再经过一定时间再重试,如果成功再正常请求,这样就给了下游服务重复的恢复时间,假设真的是因为数据库索引的问题导致的,完全可以避免下游服务崩溃。
限流:
降级和熔断还会简单处理请求,限流就直接不再处理部分请求,在一定时间内只接受多少量的请求,通过降低qps降低服务器压力,进而保证服务正常运行,一般限流在高qps场景应用,比如抽奖这种情况。
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/13472348.html