简单的可伸缩性方程

排队论

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

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

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

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

对我们有什么好处?

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

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

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

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

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

latex.php

哪里

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

Littlelaw

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

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

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

一个真实的例子

一个简单的例子是超市等待线。 当您到达队伍时,您必须注意到达速度(例如λ= 2人/分钟)和队列长度(例如L = 6人),以找出要花费的时间服务(例如W = L /λ= 3分钟)。

设置示例

假设我们要配置一个连接池以支持给定的流量需求。
连接池系统的特征在于以下变量:

Ws =服务时间(连接获取和保持时间)= 100 ms = 0.1s
Ls =服务中请求(池大小)= 5

假设没有排队(Wq = 0):

latex3.php

我们的连接池每秒最多可以发送50个请求,而无需排队任何传入的连接请求。

每当流量高峰时,我们都需要依靠队列,并且由于我们施加了固定的连接获取超时,因此队列长度将受到限制。

littlelawqueue2

由于系统被认为是稳定的,因此到达率与实际服务一样都适用于队列条目:

latex1.php

这种排队配置仍然每秒发送50个请求,但是它也可以将100个请求排队2秒钟,因此可持续处理1秒的150个请求的流量突发是可管理的,因为可以在第一秒内处理50个请求,而其他100个请求可以处理在接下来的2秒内。

翻译自: https://www.javacodegeeks.com/2014/05/the-simple-scalability-equation.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值