连续方程能量方程动量方程
排队论
排队理论使我们能够预测队列长度和等待时间,这对于容量规划至关重要。 对于架构师来说,这是一个非常方便的工具,因为队列不仅仅是消息传递系统的工具。
为了避免系统过载,我们使用节流阀 。 每当传入请求的数量超过可用资源时,我们基本上都有两个选择:
- 丢弃所有溢出的流量,因此降低了可用性
- 对请求进行排队并等待(直到超时阈值)等待繁忙的资源可用
此行为适用于每个请求线程的Web服务器,批处理处理器或连接池。
对我们有什么好处?
Agner Krarup Erlang是排队论和流量工程学之父,他是第一个提出供应电信网络所需的数学模型的人。
Erlang公式是针对M / M / k队列模型建模的,这意味着系统的特征是:
Erlang公式为我们提供以下服务的可能性:
这并不严格适用于线程池,因为请求没有得到合理的服务,服务时间也不总是遵循指数分布。
适用于任何稳定系统(到达率不大于离开率的系统)的通用公式是利特尔定律 。
哪里
L –平均客户数量
λ–长期平均到达率
W –请求在系统中花费的平均时间
从购物者队列到Web请求流量分析,您几乎可以在任何地方应用它。
这可以看作是一个简单的可伸缩性公式,为使传入流量增加一倍,我们有两个选择:
- 减少一半的响应时间(因此提高了性能)
- 使可用服务器增加一倍(因此增加容量)
一个真实的例子
一个简单的例子是超市等待线。 当您到达队伍时,您必须注意到达速度(例如λ= 2人/分钟)和队列长度(例如L = 6人),以找出您要花在等待上的时间服务(例如W = L /λ= 3分钟)。
设置示例
假设我们要配置一个连接池以支持给定的流量需求。
连接池系统的特征在于以下变量:
Ws =服务时间(连接获取和保持时间)= 100 ms = 0.1s
Ls =服务中请求(池大小)= 5
假设没有排队(Wq = 0):
我们的连接池每秒最多可以发送50个请求,而无需排队任何传入的连接请求。
每当流量高峰时,我们都需要依靠队列,并且由于我们施加了固定的连接获取超时,因此队列长度将受到限制。
由于系统被认为是稳定的,因此到达率与实际服务一样都适用于队列条目:
此排队配置仍然每秒发送50个请求,但它也可以将100个请求排队2秒钟,因此可以管理150个持续1秒的请求的流量突发,因为可以在第一秒内处理50个请求,而其他100个请求可以处理在接下来的2秒内。
翻译自: https://www.javacodegeeks.com/2014/05/the-simple-scalability-equation.html
连续方程能量方程动量方程