我们有SaaS应用程序,我们有成千上万的客户。当我们的客户网站获得流量时,我们也会获得与跟踪客户网站访问者活动相同的流量。
由于客户网站上的流量,我们无法确定在什么时候突然出现峰值,当我们突然出现请求峰值时,我们所有的服务器都会停机。为了解决这个问题,我们配置了当CPU或内存使用率超过60%时进行扩展。这意味着我们要为未使用的资源支付40%的额外费用。如果我们将其设置为90%,那么由于突然的负载和资源使用,我们的所有服务器都变得没有响应。
我们希望利用至少90%的资源,而不是60%的规模。是否有更好的方法以经济高效的方式进行扩展?
注意:我们正在使用AWS ElasticBeanstalk以及谷歌云的Kubernetes引擎服务。
我们希望利用支付的至少90%的资源,而不是60%的规模
90%是一个相当高的要求。然后,您需要将缩放阈值设置为90%级别。显然,如果你无法足够快地扩展或无法估计预期负载,你就会看到问题。60%听起来是安全的方法(而且更昂贵(。不过,玩门槛有什么错?
为了与负载完全一致,您可以使用无服务器(AWS和GCP都提供了某种无服务器功能(。在高永久负载下,它们可能会更贵,但如果你的问题是不断变化的负载和过度规划,那么这些功能就是巧妙的答案。
另一种方法是使用异步处理,如队列或流,并使用现有资源以自己的速度处理数据。您可能会在接收数据和生成结果之间引入一些延迟,但在大多数情况下这可能是可以接受的。