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。