简单的可伸缩性方程式:利特尔定律 -Vlad Mihalcea

20-05-24 banq

排队理论使我们能够预测队列长度和等待时间,这是最重要的容量规划。对于架构师来说,这是一个非常方便的工具,因为队列不仅仅是消息传递系统的工具。

为了避免系统过载,我们使用节流阀。每当传入请求的数量超过可用资源时,我们基本上都有两种选择:

  • 丢弃所有溢出的流量,因此降低了可用性
  • 对请求进行排队并等待(直到超时阈值)等待繁忙的资源可用

此行为适用于每个请求线程的Web服务器,批处理处理器或连接池。

Agner Krarup Erlang是排队论和流量工程学之父,是第一个提出供应电信网络所需的数学模型的人。

Erlang公式是针对M / M / k队列模型建模的,这意味着系统的特征是:

Erlang公式为我们提供以下服务的可能性:

这并不严格适用于线程池,因为请求没有得到适当的服务,服务时间并不总是遵循指数分布。

适用于任何稳定系统(到达率不大于离开率的系统)的通用公式是利特尔定律

  1. L –平均客户数量
  2. λ–长期平均到达率
  3. W –请求在系统中花费的平均时间

从购物者队列到Web请求流量分析,您几乎可以将其应用于所有地方。

这可以看作是一个简单的可伸缩性公式,为使传入流量增加一倍,我们有两个选择:

  1. 减少一半的响应时间(因此提高了性能)
  2. 使可用服务器增加一倍(因此增加容量)

利特尔定律采用长期平均值进行操作,因此可能不适合各种流量突发模式。这就是为什么指标在进行资源供应时非常重要。

队列很有价值,因为它为我们赢得了更多时间。它不会影响吞吐量。吞吐量仅对性能提高或更多服务器有意义。

但是,如果吞吐量恒定,则排队将达到流量突发级别,但代价是延迟了溢出请求的处理。

FlexyPool允许您分析所有流量数据,以便对连接池的内部运作有最佳的了解。对于初始配置假设不再成立的情况,故障转移策略是安全的机制。

 

                   

猜你喜欢