2009-06-09 55 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