RabbitMQ的流量控制策略

您所在的位置:网站首页 限制流量的应用 RabbitMQ的流量控制策略

RabbitMQ的流量控制策略

#RabbitMQ的流量控制策略| 来源: 网络整理| 查看: 265

RabbitMQ的流量控制策略 什么是流量控制RabbitMQ中的流控制

什么是流量控制

流量控制,是一个在计算机网络和网络软件中已存在数十年的概念。本质上,它是一种向发送者施加背压来避免接收者过载的机制。

通常来讲,接收者会以缓冲数据包(或者消息)的方式来处理超过其处理能力的请求。比如网络线程会将接收到的请求数据,push到业务线程的线程队列中,业务线程从自己的线程队列获取请求消息进行处理。业务线程因需要进行大量的计算,每秒只能处理1000个请求消息,而网络线程业务高峰期时每秒接收了2000个来自客户端的请求,无法及时得到处理的请求消息,都被缓存在线程队列中。

但是内存有限制,接收者的缓冲区不可能永远增长,因此,要么发送速率暂时超过接收者处理能力(突发流量),或者发送者必须降低发送速度(背压策略)。

流量控制是一种对发送者施加背压,使其减慢发送速度的方式,使接收者的缓冲区不会溢出,并且延迟不会变得太大。在发送者/接收者数据链路中,这种背压可以沿调用链向上传播到流量的起点。在更为复杂的连接链路图中,流量控制可以平衡快速发送者和慢速发送者之间的入口流量,避免过载,即使在发送者数量不同、速率不同、负载模式不同(稳定或突发)的情况下,系统仍然可以达到最高利用率。

RabbitMQ中的流控制

RabbitMQ看起来很像一个网络。内部的每个RabbitMQ代理都通过Actor模型实现,Actor模型是指,不同的组件之间通过消息传递相互通信,有时通过本地通信,有时通过网络通信。通过网络,生产者将消息发布给代理,消费者从代理接收消息。 消息流的简单描述 在消息流转链路图的任一时间点,都有可能出现瓶颈,导致拥塞。拥塞会导致缓冲区和端口使用完,磁盘上的数据会增长,而硬件资源消耗很少(可以理解为此时在等待IO,系统负荷会比较高,但CPU使用率不一定高)。如果不加控制,RabbitMQ可能会耗尽所有可用内存,从而导致崩溃或被操作系统杀死。

从整个系统的角度来看,我们有四种可用的流量控制机制:

基于信任的流控机制内存告警发布者confirms消费者confirms和预取机制

原文: Quorum Queues and Flow Control – The Concepts



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3