gpt4 book ai didi

python - 多台服务器上的 django-celery 基础设施,代理是 redis

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:26 26 4
gpt4 key购买 nike

目前我们在单个云服务器上设置了所有内容,包括:

  • 数据库服务器
  • Apache
  • celery
  • redis 作为 celery 和其他一些任务的代理
  • 等等

现在我们正在考虑将主要组件分解为单独的服务器,例如独立的数据库服务器,媒体文件的独立存储,负载平衡器后面的网络服务器。原因是不为一台重型服务器付费,而是使用负载均衡器按需创建服务器以降低成本并提高整体速度。

我真的只对 celery 感到困惑,有没有人在负载均衡器后面的多个生产服务器上使用过 celery?任何指导将不胜感激。

考虑一个小用例,目前它是如何在单个服务器上完成的(令人困惑的是当我们使用多个服务器时如何完成):

  • 用户上传一个abc.pptx文件->引用存储在数据库中->存储在服务器磁盘上
  • 任务(将文档转换为 pdf)被创建并进入 redis(代理)队列
  • 在同一台服务器上运行的 celery 从队列中选择任务
    • 读取文件,使用名为 docsplit 的软件将其转换为 pdf
    • 在服务器磁盘上创建一个文件夹(稍后将用作静态内容)放置pdf文件及其缩略图和纯文本以及原始文件

考虑到上述用例,您如何设置可以执行相同功能的多个网络服务器?

最佳答案

将大大简化您的处理的是一些共享存储,可从所有协作服务器访问。通过这样的设计,您可以将工作分配给更多的服务器,而不必担心下一个处理步骤将在哪台服务器上完成。

使用 AWS S3(或类似的)云存储

如果您可以使用某些云存储,例如 AWS S3,请使用它。

如果您的服务器也运行在 AWS 上,则您无需为同一地区的流量付费,而且传输速度非常快。

主要优点是,您的数据可从所有服务器使用相同的存储桶/ key 名称获得,因此您不必担心谁在处理哪个文件,因为所有服务器都在 S3 上共享存储。

注意:如果您需要删除旧文件,您甚至可以在给定的存储桶上设置一些策略文件,例如删除超过 1 天或 1 周的文件。

使用其他类型的共享存储

有更多选择

  • 桑巴舞
  • 中央文件服务器
  • FTP
  • Google 存储(与 AWS S3 非常相似)
  • Swift(来自 OpenStack)
  • 等等

对于小文件,您甚至可以使用 Redis,但出于充分的理由,此类解决方案很少见。

关于python - 多台服务器上的 django-celery 基础设施,代理是 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com