云设计模式之节流模式


节流模式是控制应用程序实例、特定租户或整个服务随时间推移对资源的使用。

根据服务模式的不同,云应用会暴露在不同的负载下。它可以处理发送到你的SaaS应用的请求,如果是PaaS,则托管服务,或者在你的IaaS设置中运行虚拟机。

其中一个例子是当涉及到应用时的多样化的负载。它通常是随时间变化的,即在营业日,在一天/周/月的开始和结束时,等等,并且可以显著增加,这意味着应用程序必须容易受此影响,并且能够处理增加的流量。此外,系统必须同时能够保持SLA的要求,并确保没有系统节点劫持可用资源的使用。

为了满足这些期望,云基础设施必须能够处理不同水平的流量和相关费用,以确保最大的可用性和服务水平协议。

选择适当的节流策略对于充分满足系统的特定需求至关重要。

处理负载最明显的策略是自动缩放。根据消费者的需求,系统资源会自动调整到一定程度,以满足消费者和提供者之间生成的负载的预期。然而,这种方法并非没有缺点,因为自动缩放容易受到延迟的影响。因此,由于响应和自动缩放的延迟,系统负载的极快增加可能会造成瓶颈。

解决此类问题的第二种方法是设置一个允许的阈值。如果系统的某些部分超过它,它将被限制。被节流可以通过多种方式表现出来:

  • 拒绝访问 API 次数过多的消费者的请求,
  • 通过搁置请求的处理,换句话说,故意延迟请求的处理并通知消费者稍后可以尝试发送请求,
  • 适当停用不太重要的服务,以增加对系统基本功能必不可少的服务的请求能力,
  • 使用基于队列的负载均衡模式,
  • 使用优先队列模式。

一个合适的解决方案可能是以设置阈值的形式与自动缩放组合的节流。这样,当系统进行自动缩放时,设置的阈值允许系统保持响应能力。
应该记住,这种允许自动缩放的组合对于经常遇到流量增加问题的系统是有意义的。用于处理非常不频繁增加的流量的自动缩放只会导致维护系统的成本不必要地增加。但是,这不是规则,因为如果系统实现了关键目的,最好将其永久扩展到资源需求之上,以便它始终能够快速满足消费者需求。