应对过载-客户端限流算法

google sre

服务端过载保护存在的问题

之前有介绍服务端过载保护 ,当某个请求超过服务端超过资源的配额时,服务端会立即返回一个过载错误,该错误会比真正的业务逻辑 消耗的资源少的多。

但是,返回过载错误仍然会消耗一定数量的资源。 如果发送过载错误的数量很多,那么消耗的资源仍可能很大。

客户端的过载保护可以很好的解决这个问题。
 

一 客户端拒绝请求计算公式

  • requests :客户端尝试请求的次数
  • accepts:服务端接受的请求次数
  • K:可调参数,可用来调节系统的激进程度。(K值要大于1)


客户端任务记录的最近一段时间内的以requests和accepts信息,当客户端检测到其最近的大部分请求返回“过载”错误时,客户端会开始自动调节请求量。超过上限的请求客户端直接失败,请求不会到达服务端。

在正常情况下,request 和accepts值是相等的。当后端开始拒绝流量,数量accepts开始小于数量requests

客户端可以继续向后端发出请求,当requests大于K倍的accepts。概率计算公式开始大于0,客户端开始自我调节,新的请求在本地被拒绝。

举例

K值设置成1.1。当服务正常时,过去1分钟内,客服端发送了100条请求,并且服务端都接受了该请求。 此时客户端计算拒绝概率是0,客户端不会拒绝请求。
当过去一分钟客户端发送了100条请求,被服务端拒绝请求了10条,只接受了90。
此时客户端计算得到拒绝概率是 (100-1.1*90)/101 =  1/101 。客户端开始自我调节,直接拒绝发送请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值