2010-04-24 82 views
3

我需要一個將用於靜態文件服務/上傳的可伸縮且高性能的HTTP應用程序/服務器。所以我只需要支持GETPUT操作。用於靜態內容的輕量級HTTP應用程序/服務器

不過,也有我需要一些額外的功能:

  • 自定義身份驗證:我需要 支票憑證對每個請求的數據庫。因此,我必須能夠整合專有數據庫交互 。
  • 支持 簽名的接入鍵:通過PUT到 資源的訪問應該使用像http://uri/?key=foo A鍵則包含了如MD5的要求,讓我阻止不需要的請求信息(用戶+通道+祕密)簽署 。應用程序/服務器應該允許我檢查這個。
  • 表現:我想盡可能避免管道內容。否則,整個應用程序可以在Perl/etc中實現。在CGI的幾行中。

Perlbal(的Web服務器模式)看起來不錯,但單線程模型不適合我的數據庫查找,它也不支持查詢字符串。

Lighttp/Nginx/...有一些模塊用於這些任務,但將所有內容放在一起而不寫出自己的擴展/模塊是不可行的。

那麼你會如何解決這個問題?是否有其他的輕量級網絡服務器可用於此? 我應該在web服務器(即CGI)中實現一個應用程序嗎?如何避免/加快網絡服務器與我的應用程序之間的管道內容。

在此先感謝!

回答

4

看一看的NodeJS http://nodejs.org/

有靜態Web服務器和數據庫接口幾個模塊: http://wiki.github.com/ry/node/modules

您可能需要編寫自己的文件上傳處理程序,或使用一個從這個例子

+0

起初我對使用JavaScript編寫服務器組件有點懷疑,但是node.js似乎很有趣。謝謝! – 2010-04-25 10:32:43

3

nginx + spawn-fcgi + fcgi使用C + memcached + sqlite編寫的應用程序可以很好地處理類似的任務,對於來自同一本地網絡的小數據和快速連接,延遲大約爲20-30毫秒。據我所知,生產服務器每秒處理大約100-150個請求,沒有問題。在測試服務器上,我每秒達到20k個請求,再次沒有問題,平均延遲約爲60毫秒。積極的緩存和UNIX域套接字是關鍵。

不知道如何配置將頻繁PUT請求,在我們的任務,他們是非常罕見的,通常批處理。