限速和背压有什么区别?

What is the difference between rate limiting and back pressure?

限速和背压有什么区别?主要是限速是客户端自己降速,背压是服务丢包请求降速吗?

速率限制检测到某些操作在某个时间范围内发生的次数太多,并阻止它再次发生,直到该时间范围结束。

例如,假设我有一个应用程序,每次发生错误时都会发送一封电子邮件。应用程序与每秒轮询多次的队列对话。因此,如果队列配置错误,则应用程序可以在一小时内生成数千封电子邮件。添加速率限制可以跟踪在一个时间范围内发送的错误电子邮件的数量,并在计数足够高时停止发送电子邮件。或者应用程序可以在一段时间内停止轮询队列。

背压意味着系统拒绝承担更多的工作。与速率限制不同,没有设置应用程序恢复工作的时间,这取决于应用程序检测到它有容量。

如果我有一个通过固定大小的阻塞队列接收工作的应用程序,那么一旦队列填满,任何试图将新条目放入队列的东西都会等待,直到队列可以为它腾出空间。这样,应用程序就不会承担超出其管理能力的工作,从而导致 运行 内存不足或进入错误状态。