如何构建图像Web服务器?

问题描述 投票:11回答:4

我正在尝试构建一个Web图像服务器。它同时为许多客户(10万+)提供图像。 (如果客户端较少,这将是一个更容易的问题。)这样做的好方法是,尽可能减少时间延迟。

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

image
4个回答
8
投票

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

如果你真的想自己做,那就别忘了Apache / IIS。更轻松的'轻型'网络服务器。两个非常好的是lighthttpNginXwiki)。特别是NginX,具有非常可靠的性能。

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


3
投票

如果您想设计具有最低延迟的最快的静态文件网络服务器,我就是这样做的。

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

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

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

alt text (来源:microsoft.com


2
投票

有了这么多客户,您可能需要考虑使用内容交付网络(例如Akamai)。表面上看起来似乎很昂贵,但如果你真的看到维护硬件的成本,特别是带宽成本,它开始具有经济意义。


1
投票

如何提供图像?图像是否即时生成?或者它们是静态的并以.jpg或其他格式存储在文件系统中?

无论哪种方式,我都使用ASP.NET .ashx(泛型处理程序)并使用System.Drawing类。

您还需要为每个http://support.microsoft.com/kb/323431设置TCP / IP网络负载平衡

© www.soinside.com 2019 - 2024. All rights reserved.