我的应用程序是用 django f/w 编写的,它使用 celery 和 redis 来执行异步任务。我想根据队列中的消息负载/数量自动缩放工作人员。为此,我想利用 AWS 提供的不同选项。
Celery 和 Redis 的 AWS 基础设施可以替代什么?
ElastiCache 是 Amazon 的内存数据存储托管服务。 Elasticache 允许您使用 Redis 或 Memcached 作为基础来配置提供高性能数据存储功能的服务。
我个人没有使用过 Celery,但我知道它是否像 RabbitMQ 一样作为消息队列。在这种情况下,可能的托管服务替代方案是AmazonMQ。 AmazonMQ 在底层使用 Apache ActiveMQ,但 API 层应该为您抽象出大部分差异。
如果您愿意,您可能可以在 AWS 上运行 Celery,而不使用他们的 AmazonMQ 服务。您可以简单地在 EC2 实例 上或使用 ElasticBeanstalk 执行安装过程。或者甚至在 Linux Container 上运行它,例如 ECS 或 Fargate。
如果您要使用 EC2,您甚至可能可以使用现有的 community Marketplace AMI ,并且 Celery 已经配置好,并且可以使用 cloud-init 数据进行配置。
以下是人们在 AWS 上设置基于 Celery 的队列时提出的博客文章和其他问题:
希望这有帮助!如果您需要有关此问题的任何其他信息或支持,请随时联系您可能有的任何问题!
有一篇关于 aws 的有趣文章,介绍了如何使用 AWS 批处理以及 celery 工作人员以这种方式进行批处理。
https://aws.amazon.com/blogs/hpc/run-celery-workers-for-compute-intense-tasks-with-aws-batch/
总结一下