首页 > 解决方案 > 多服务器中的laravel队列

问题描述

我要做UGC项目。我有一个主服务器(应用程序)和 4 个编码器服务器(用于转换视频)和一个存储服务器(用于托管视频)。我想在 laravel 队列中使用数据库驱动程序,我的目标数据库是作业。对于每个上传的视频,我有 5 个将视频转换为 240p、360p、480p、720p 和 1080p 的工作。但jobs没有指定属于哪些Encoder服务器。例如,在 Encoder Server #4 中上传了一个视频,但 Encoder Server #2 尝试启动作业并失败,因为文件在 Encoder Server #4 中,我该如何解决这个问题?

标签: laravelarchitecturequeuejobs

解决方案


正如@apokryfos 所说,将文件上传到共享存储,如 Amazon S3/谷歌云存储/数字海洋空间)......随便......

让处理作业从中央存储下载它,对其进行处理,然后将结果上传到另一个中央存储。

如果您将单个作业绑定到单个工作人员(如您所说的(编码器服务器)),这没有任何意义,而且它永远不会可扩展,并且几乎注定会遇到问题。

这样做,您可以在需要时增加工人的数量。你甚至可以自动缩放它们。

考虑使用 Kubernetes 部署,以允许轻松(自动)扩展。


推荐阅读