分布式学习 1.2 限流设计

限流的策略:

1. 拒绝服务

2. 服务降级一一停掉不重要的服务,或只返回部分数据

3. 特权请求

4. 延时处理一一缓冲队列

5. 弹性伸缩

实现方式:

1. 计数器

2. 队列算法(带权队列)一一不能做push方式,建议用pull

3. 漏斗算法(TCP)

4. 令牌桶算法

漏斗算法会以一个稳定的速度转发,而令牌桶算法平时流量不大时在“攒钱”,流量大时,可以一次发出队列里有的请求,而后就受到令牌桶的流控限制。

基于响应时间的动态限流:能够动态地感知系统的压力来自动化地限流。可以参考设计典范, TCP 协议的拥塞控制的算法。

限流设计目的:

1. 为了向用户承诺 SLA。我们保证我们的系统在某个速度下的响应时间以及可用性。

2. 可以用来阻止在多租户的情况下,某一用户把资源耗尽而让所有的用户都无法访问的问题。

3. 为了应对突发的流量。

4. 节约成本。

限流设计要点:

1. 限流应该是在架构的早期考虑。当架构形成后,限流不是很容易加入。

2. 限流模块性能必须好,而且对流量的变化也是非常灵敏的,否则太过迟钝的限流,系统早因为过载而挂掉了。

3. 限流应该有个手动的开关,这样在应急的时候,可以手动操作。

4. 当限流发生时,应该有个监控事件通知。

5. 当限流发生时,对于拒掉的请求,我们应该返回一个特定的限流错误码。

6. 限流应该让后端的服务感知到。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 如何编写好的测试 为我们的软件编写测试是非常好的一件事。但事实上,目前为止,编写好的测试有时候同样重要。通过以下一...
    良口三三阅读 424评论 0 0
  • 人生总是这样,一边失去,一边得到。 人与人之间的相遇,是一种美丽的缘份,正如张爱玲所说: “于千万人之中遇见你所遇...
    态度1988阅读 248评论 0 1
  • 中午回家吃了饭,田坤妈说叫我以后别读父母规了,读这个,她也不知从哪里抄下来的,并且叫田坤监督着我,读了三遍! ...
    田坤爸爸阅读 883评论 19 13
  • 001 寝室网不好,我灵光一现便说:“巴啦啦能量,联网吧!” l便说:“古娜拉黑暗之神,断网吧!”…… 我想说我到...
    轶呀轶阅读 253评论 0 0

友情链接更多精彩内容