设计可靠服务之合理的限流策略

2022-09-01  本文已影响0人  robot_test_boy

在大规模的微服务应用有时候会出现一些危险的服务使用方式。比如,上游服务在应该调用批量接口发起请求的地方发起多次简单请求;或者调用方对底层资源的调用并不均匀,存在对部分热点资源的大量访问。类似地,还有依赖于第三方外部接口的服务会受限于那些外部服务的强行指定的限制。

一个合适的解决方案是明确地限制一个时间窗口内对协作服务的请求频率或者总有效请求量

这种限制可以是无差别的,超过某个数量以后所有的请求全部被丢弃。也可以设计得很复杂,比如丢弃那些使用频率低的服务客户端的请求、优先处理关键接口的请求、丢弃低优先级的请求。

在设计阶段对服务的所有客户端共用同一套限流策略,但是如果可以在运行时进行控制,就更好了。服务可以向调用方返回一个自定义报头,以告诉消费方剩余的可用请求量。按照这一要求,上游协作方应该将剩余可用请求量这一信息考虑在内,并据此调整发出的请求频率。这种技术也被称作背压(back pressure)。

摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》

上一篇下一篇

猜你喜欢

热点阅读