【问题标题】:How to build an image web server?如何搭建图片网络服务器?
【发布时间】:2009-06-09 21:45:45
【问题描述】:

我正在尝试构建一个网络图像服务器。它同时为许多客户(10 000+)提供图像。 (如果客户端较少,问题会更容易。)有什么好的方法,时间延迟越小越好。

我是这个领域的新手。欢迎提出任何建议。

【问题讨论】:

标签: image


【解决方案1】:

一定要四处寻找优质的送货服务。 Akamai 是最著名的。

如果您真的想自己做,请忘记 Apache/IIS。 更合适的是“轻量级”网络服务器。两个非常好的是lighthttpNginX (wiki)。尤其是 NginX,性能非常可靠。

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

【讨论】:

    【解决方案2】:

    如果您想设计速度最快、延迟最低的静态文件网络服务器,我会这样做。

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

    这本质上是 IO 完成端口减去文件缓存。此模型适用于 Windows 和 Solaris。

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


    (来源:microsoft.com

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 所有图片都是即时生成的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多