我需要在几台服务器上分配越来越多的任务,我是否启动 VPS 并不断添加更多任务?更具可扩展性的东西?
I need to spread an increasing large amount of tasks over a few servers, do I spin up VPSes and add keep adding more? Something more scaleable?
我需要做一堆 HTTP 请求,然后对结果数据进行一堆处理。它变得非常密集,以至于我无法再在一台服务器上可靠地完成它,所以除了主要的 Linode VPS 之外,我还创建了两个 Linode 来分散工作负载。
工作基本上是主服务器向其他服务器发送一堆命令,其中包括 HTTP 请求和如何处理结果,然后其他服务器执行提取、操作数据然后存储它在中央数据库中。
现在可以用了,但是工作量越来越大,我需要尽快启动另一个 VPS,而且配置有点烦人。
有更好的方法吗?一种根据需要自动创建更多服务器的方法,不是很难理解吗?创建新的 VPSes 很容易,只是很耗时。
在 AWS 中,您可以使用 SQS 队列来分离工作负载。这本身可能看起来不是很有用,但您也可以创建一个 EC2 自动缩放组,它会根据 SQS 队列中等待消息的增加或减少进行缩放。这将允许您根据需要启动更多 EC2 实例,但也可以在它们不需要时终止它们,以降低成本。有关更多信息,您可以在这里查看:https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html
如果您的 HTTP 请求和处理时间保持在最低限度(少于 15 分钟),AWS Lambda 是一个不错的选择。需要零 infrastructure/autoscaling 配置,获取代码和 运行ning 非常简单。您只需要使用多种语言之一上传您的代码,然后添加一个触发器来启动您的功能。
另一种选择是使用 AWS Batch 将作业分布到可扩展数量的实例上。您可以使用您希望实例发出的请求填充批处理作业队列。然后通过将 运行 命令传递给一个容器来批处理 运行 一个 "job",该容器 运行 根据您的作业定义自动缩放实例数。
设置批处理环境需要非常少的配置(为 cpu、mem 等设置 max/min 配置值),但它确实需要您的应用程序作为 docker 图片。正确设置批处理环境后,几乎不需要配置和维护。
我需要做一堆 HTTP 请求,然后对结果数据进行一堆处理。它变得非常密集,以至于我无法再在一台服务器上可靠地完成它,所以除了主要的 Linode VPS 之外,我还创建了两个 Linode 来分散工作负载。
工作基本上是主服务器向其他服务器发送一堆命令,其中包括 HTTP 请求和如何处理结果,然后其他服务器执行提取、操作数据然后存储它在中央数据库中。
现在可以用了,但是工作量越来越大,我需要尽快启动另一个 VPS,而且配置有点烦人。
有更好的方法吗?一种根据需要自动创建更多服务器的方法,不是很难理解吗?创建新的 VPSes 很容易,只是很耗时。
在 AWS 中,您可以使用 SQS 队列来分离工作负载。这本身可能看起来不是很有用,但您也可以创建一个 EC2 自动缩放组,它会根据 SQS 队列中等待消息的增加或减少进行缩放。这将允许您根据需要启动更多 EC2 实例,但也可以在它们不需要时终止它们,以降低成本。有关更多信息,您可以在这里查看:https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html
如果您的 HTTP 请求和处理时间保持在最低限度(少于 15 分钟),AWS Lambda 是一个不错的选择。需要零 infrastructure/autoscaling 配置,获取代码和 运行ning 非常简单。您只需要使用多种语言之一上传您的代码,然后添加一个触发器来启动您的功能。
另一种选择是使用 AWS Batch 将作业分布到可扩展数量的实例上。您可以使用您希望实例发出的请求填充批处理作业队列。然后通过将 运行 命令传递给一个容器来批处理 运行 一个 "job",该容器 运行 根据您的作业定义自动缩放实例数。
设置批处理环境需要非常少的配置(为 cpu、mem 等设置 max/min 配置值),但它确实需要您的应用程序作为 docker 图片。正确设置批处理环境后,几乎不需要配置和维护。