Php 如何处理视频和图像上传到存储服务器?
我正在开发一个应用程序(在Go或可能在PHP中),用户需要上传照片和图像 我在不同的位置安装了两台ZFS(镜像)存储服务器,但我对如何让用户最好地上传文件表示怀疑。ZFS处理配额和预订 我在所有服务器上运行一个复制的Galera数据库,既为了安全,也为了方便从每个服务器访问用户帐户。换句话说,每台服务器始终都有数据库的本地副本。所有用户仅为虚拟用户 到目前为止,我已经测试了以下设置选项: 解决方案1 在具有虚拟用户的存储服务器上运行SFTP(带模块的ProFTPD)或FTPS(带TLS的纯FTPS) 这使人们可以使用类似Filezilla的客户端直接访问存储服务器。同时,用户还可以使用我们的web GUI从主web服务器上传 这种设置的一个优点是FTP服务器可以处理虚拟用户。我们的web应用程序还将通过SFTP或FTPS发送文件 一个缺点是FTP很简单,对防火墙来说很烦人。我更喜欢FTP而不是SSH(SFTP),而不是FTP而不是TLS(FTP)。然而,只有ProFTPD有一个SSH模块,但是与PureFTPd相比,使用它确实是一件很痛苦的事情(许多配置选项不工作,文件权限错误),但是PureFTPd只支持TLS 使用真正的SSH/SCP帐户运行并使用PAM不是一个选项 解决方案2 使用NFS或CIFS将存储服务器本地装载到web服务器上(Samba非常擅长在出现故障时自动恢复) 在此设置中,用户只能通过主web服务器上传。然后,web服务器应用程序以及在存储服务器上运行的应用程序需要支持可恢复的上载。我一直在研究使用tus协议 上述两种设置的缺点是需要以某种方式管理存储容量。当存储服务器1达到其最大用户数时,应用程序需要知道这一点,然后只为存储服务器2、3等创建虚拟用户 我计算了每个存储服务器可以容纳多少用户,然后让web应用程序与虚拟用户一起检查数据库,以确定何时需要将新创建的用户移动到下一个存储服务器 这是一个相当古老的学校,但它的工作 解决方案3 与解决方案2相同(无FTP),但将我们的web应用程序上载内容克隆到每个存储服务器,然后重定向用户(或为他们提供指向存储服务器s1.example.com、s2.example.com等的物理链接) 此设置的优点可能是用户直接上传到分配给他们的存储服务器,而不是通过我们的主web服务器(防止它成为可能的瓶颈) 解决方案4 在存储服务器上使用GlusterFS并构建一个易于扩展的集群。我已经测试了GlusterFS,它在这方面工作得非常好 这种设置的优点是,我实际上不需要关心文件在哪些存储服务器上的物理位置,而且我可以通过向集群添加更多服务器来轻松扩展存储 然而,这里的缺点是我们的主web服务器可能再次成为瓶颈 我还考虑添加一个负载平衡器,然后使用多个web服务器,以防我们的主web服务器成为上传文件的瓶颈 无论如何,我更喜欢保持简单!我不喜欢加东西。从长远来看,我希望它易于维护 任何想法、建议和建议都将不胜感激Php 如何处理视频和图像上传到存储服务器?,php,go,data-storage,zfs,Php,Go,Data Storage,Zfs,我正在开发一个应用程序(在Go或可能在PHP中),用户需要上传照片和图像 我在不同的位置安装了两台ZFS(镜像)存储服务器,但我对如何让用户最好地上传文件表示怀疑。ZFS处理配额和预订 我在所有服务器上运行一个复制的Galera数据库,既为了安全,也为了方便从每个服务器访问用户帐户。换句话说,每台服务器始终都有数据库的本地副本。所有用户仅为虚拟用户 到目前为止,我已经测试了以下设置选项: 解决方案1 在具有虚拟用户的存储服务器上运行SFTP(带模块的ProFTPD)或FTPS(带TLS的纯FTP
如何做到这一点?如果我们谈论的是文件存储,那么web应用程序应该不知道底层存储;关注点分离 (S) 另一方面,FTP不是一种存储方法。这是一个通信协议。这并不妨碍您拥有共享存储。见上文 ZFS不包括共享存储功能,因此您基本上可以选择以下选项: