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

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

  1. 服务器必须提供中等大小的二进制文件(大约1 MB)
  2. 文件的最大生存时间是5分钟
  3. 文件将被上传10个左右的服务器
  4. 文件将被大约10个不同的服务器读取
  5. 一个给定的文件只能被一个服务器上传,并且只能被一个服务器读取
  6. 一个给定的文件可以在第一次成功读取后被销毁
  7. 服务器必须只使用非特权端口(无FTP或NFS)
  8. 服务器必须工作,没有任何root权限
  9. 服务器必须在Linux上工作
  10. 该服务器必须在局域网上可访问
  11. 客户端(上传和下载)只有Linux服务器(客户端代码必须也可以使用任何root权限)
  12. 我不需要正式的持久性(我可以接受在崩溃后丢失一些文件)
  13. 服务器必须只使用开源组件
  14. 它一定非常快!

我正在考虑两个解决scheme:一个REDIS实例(没有虚拟机,没有持久性) – 一个带DAV模块的NGINX服务器(PUT命令上传)

但我真的对其他解决scheme开放;-)

如果您可以使用FreeBSD解决scheme而不是Linux,则FreeNAS是一个非常棒的NAS选件,易于安装和configuration,并且具有大量的连接和访问控制选项。 还有一个Linux版本的项目正在进行,但我不确定它是如何function完整的。

Linux方面也有OpenFiler ,但是我们发现FreeNAS更适合我们的各种需求(这听起来听起来有点不同于你们)。

编辑:听起来像你需要一些现有的Linux服务器上运行,而不是自己的硬件。 如果这是必要的,我会考虑在KVM或Xen下运行其中的一种虚拟机。

你可以试试你的运气与memcached或coauchdb 。 都是重要的价值商店,第一个是“内存”types。 可以使用它吗? 我不知道 – 这取决于消费者是否可以“猜出”产品所存储的数据。

也许memcached模块的Nginx正是你所需要的? 与它一起,您将获得RESTful HTTP接口到您的内存数据库。

你也可以考虑一些排队机制 – 从你在mysql中实现的简单fifo开始,到像rabbitmq或者activemq这样的东西。

只要在一个非标准的端口上运行NFS,使你的磁盘为tmpfs,我从这个声音中推断出来,总大小很小? 这应该接近线速(经典nfs要同步写入,但与tmpfs,这不会是一个问题。

tmpfs是一个基本上是你的交换文件/内存的块。 所以没有坚持通过重新启动任何forms,但写入内存的速度。

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

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

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

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

4)一些智能服务器过期内容不再需要

虽然HTTP是一个明显的select(1和2被很好地覆盖,而3和4只需要在perl / php / whatever中很容易实现的几行代码),这听起来像是一个asynchronous消息队列系统。 你没有说交易完整性有多重要,但2&12表明这不是什么大问题。 所以我会build议使用电子邮件 – 通知是隐含的,它将存活临时中断,您可以轻松地configuration在非特权端口上运行的系统上的第二个SMTP服务器,大多数将允许您指定重试间隔,超时等。在接收端添加触发代码 – 这是使用procmail微不足道的。

HTH

C。