Linux 临时文件服务器的最佳选择?

Linux 临时文件服务器的最佳选择?

对于特定项目,我必须实现一个临时文件服务器:

  1. 服务器必须提供中等大小的二进制文件(约 1 MB)
  2. 文件的最长生存期为 5 分钟
  3. 文件将由大约 10 个不同的服务器上传
  4. 文件将由大约 10 个不同的服务器读取
  5. 给定文件仅由 1 台服务器上传,并且仅由 1 台服务器读取
  6. 第一次成功读取后,指定的文件可能会被销毁
  7. 服务器必须仅使用非特权端口(无 FTP 或 NFS)
  8. 服务器必须在没有任何 root 访问权限的情况下运行
  9. 服务器必须运行在Linux上
  10. 服务器必须可以通过 LAN 访问
  11. 客户端(上传和下载)只能是 Linux 服务器(客户端代码必须能够与任何 root 访问权限兼容)
  12. 我不需要正式的持久性(我可以接受崩溃后丢失一些文件)
  13. 服务器必须仅使用开源组件
  14. 它一定非常快!

我正在考虑两种解决方案: - REDIS 实例(无 VM,无持久性) - 带有 DAV 模块的 NGINX 服务器(使用 PUT 命令上传)

但我确实愿意接受其他解决方案;-)

答案1

如果你可以使用 FreeBSD 解决方案而不是 Linux,自由网络存储是一款出色的 NAS 选项,易于安装和配置,并且具有大量连接和访问控制选项。此外还有该项目的Linux版本正在进行中,但我不确定它的功能是否齐全。

还有开放文件管理器在 Linux 方面,但我们发现 FreeNAS 更适合我们不同的需求(诚然,这听起来与您的需求有很大不同)。

编辑:听起来你需要在现有的 Linux 服务器上运行某些东西,而不是在自己的硬件上运行。如果这是必要的,我会考虑在 KVM 或 Xen 下以 VM 形式运行这些选项之一。

答案2

你可以试试运气memcached或者教练数据库。两者都是键值存储,第一个是“内存中”类型。可以使用它吗?我不知道 - 这取决于消费者是否能“猜测”生产者存储数据的键。

或许nginx 的 memcached 模块正是您所需要的?有了它,您就可以获得内存数据库的 RESTful HTTP 接口。

您还可以考虑一些排队机制 - 从您在 mysql 中实现的简单 fifo 开始,到类似rabbitmq或者主动队列

答案3

只需在非标准端口上运行 NFS,为该 tmpfs 创建磁盘,我推测从这个声音来看,总大小很小?这应该以接近线速的速度运行(传统上,nfs 需要同步写入,但使用 tmpfs,这将不是问题。


tmpfs 是一个 fs,基本上是交换文件/内存的一块。因此,通过任何类型的重启都无法持久保存,但速度与写入内存一样快。

答案4

您的要求表明,除了“服务器”之外,您还需要提供:

1)一些客户端软件将文件放到服务器上

2)从服务器下载的客户端软件

3)上传者和下载者之间的通知通道

4) 服务器上不再需要一些用于过期内容的智能功能

虽然 HTTP 是一个显而易见的选择(1 和 2 已经很好地涵盖了,而 3 和 4 只需要几行代码,就可以在 perl / php / 等等中轻松实现),但这听起来像是一个异步消息排队系统。您没有说事务完整性有多重要 - 但 2 和 12 表明这不是什么大问题。所以我建议使用电子邮件 - 通知是隐式的,它可以承受临时中断,您可以在运行非特权端口的系统上轻松配置第二个 SMTP 服务器,并且大多数服务器允许您指定重试间隔、超时等。至于在接收端添加触发代码 - 使用 procmail 很容易。

高血压

C。

相关内容