2009-06-09 40 views
11

我正在尝试构建一个Web图像服务器。它为大量客户(10万以上)同时提供图像。 (如果客户数量较少,这将会是一个更容易的问题。)这样做的好方法是什么,时间延迟尽可能小。如何建立一个图像网络服务器?

我是这个领域的新手。任何建议都会受到欢迎。

+0

有你使用现有的图像服务器考虑? http://en.wikipedia.org/wiki/Image_server – 2012-08-03 16:31:55

回答

7

绝对四处寻找一个良好的送货服务。 Akamai是最出名的。

如果你真的想自己做,忘记Apache/IIS。 很多更适合的是'轻'网络服务器。两个很好的是lighthttpNginXwiki)。尤其是NginX,表现非常稳固。

编辑:内容分发网络(CDN)在过去几年蓬勃发展,找到更简单,更便宜的内容更容易。特别是,将静态内容放入Amazon S3并使用CloudFront非常简单。

1

如何提供图像?图像是否即时生成?或者它们是静态的并以.jpg或其他格式存储在文件系统上?不管怎样,我会使用ASP.NET .ashx(通用处理程序)并使用System.Drawing类。

您还需要为每http://support.microsoft.com/kb/323431

+0

所有的图像都是即时生成的。 – Lily 2009-06-09 22:17:57

+0

为什么投票反对? – Nate 2010-11-16 22:01:07

2

安装有TCP/IP网络负载平衡有了很多客户,你可能要考虑使用一个内容分发网络(如Akamai的)。从表面上看,它可能看起来很昂贵,但如果真的看维护硬件的成本,特别是带宽成本,它开始具有经济意义。

2

如果你想设计最低延迟的最快的静态文件网络服务器,下面是我该怎么做。

  1. 使用一个事件循环检测哪个套接字准备
  2. 把那些插座在队列
  3. Create(对于每个核心1)的堆叠的线程来处理套接字。完成后,将它们放回堆叠。
  4. 将工作分配给线程。
  5. 缓存内存中的所有图像文件。

这实质上是IO完成端口减去文件的缓存。该模型在Windows和Solaris中可用。

http://technet.microsoft.com/en-us/sysinternals/bb963891.aspx

alt text