在排队理论使我们能够预测队列长度和等待时间,这是最重要的容量规划。对于架构师来说,这是一个非常方便的工具,因为队列不仅仅是消息传递系统的工具。 为了避免系统过载,我们使用节流阀。每当传入请求的数量超过可用资源时,我们基本上都有两种选择:
- 丢弃所有溢出的流量,因此降低了可用性
- 对请求进行排队并等待(直到超时阈值)等待繁忙的资源可用
Agner Krarup Erlang是排队论和流量工程学之父,是第一个提出供应电信网络所需的数学模型的人。 Erlang公式是针对M / M / k队列模型建模的,这意味着系统的特征是:
Erlang公式为我们提供以下服务的可能性: 这并不严格适用于线程池,因为请求没有得到适当的服务,服务时间并不总是遵循指数分布。 适用于任何稳定系统(到达率不大于离开率的系统)的通用公式是利特尔定律。- L –平均客户数量
- λ–长期平均到达率
- W –请求在系统中花费的平均时间
- 减少一半的响应时间(因此提高了性能)
- 使可用服务器增加一倍(因此增加容量)
利特尔定律采用长期平均值进行操作,因此可能不适合各种流量突发模式。这就是为什么指标在进行资源供应时非常重要。 队列很有价值,因为它为我们赢得了更多时间。它不会影响吞吐量。吞吐量仅对性能提高或更多服务器有意义。 但是,如果吞吐量恒定,则排队将达到流量突发级别,但代价是延迟了溢出请求的处理。 FlexyPool允许您分析所有流量数据,以便对连接池的内部运作有最佳的了解。对于初始配置假设不再成立的情况,故障转移策略是安全的机制。