【问题标题】:Lightweight HTTP application/server for static content用于静态内容的轻量级 HTTP 应用程序/服务器
【发布时间】:2011-02-11 21:20:40
【问题描述】:

我需要一个可扩展且高性能的 HTTP 应用程序/服务器,用于静态文件服务/上传。所以我只需要支持GETPUT 操作。

但是,我需要一些额外的功能:

  • 自定义身份验证:我需要 针对每个请求检查数据库的凭据。 因此,我必须能够整合专有 数据库交互。
  • 支持 签名访问密钥:访问 应通过PUT 签署资源 使用http://uri/?key=foo 之类的密钥然后该密钥包含有关请求的信息,例如 md5(user + path + secret),它允许我阻止不需要的请求。应用程序/服务器应该允许我对此进行检查。
  • 性能:我想尽可能避免管道内容。否则整个应用程序可以在 Perl/etc 中实现。几行 CGI。

Perlbal(在网络服务器模式下)看起来不错,但是单线程模型不适合我的数据库查找,也不支持查询字符串。

Lighttp/Nginx/... 有一些模块用于这些任务,但是如果不编写自己的扩展/模块就将所有东西放在一起是不可行的。

那么你将如何解决这个问题?是否有其他可用的轻量级网络服务器? 我应该在网络服务器(即 CGI)中实现应用程序吗?如何避免/加速网络服务器和我的应用程序之间的管道内容。

提前致谢!

【问题讨论】:

    标签: webserver nginx lighttpd apache static-content


    【解决方案1】:

    看看nodejshttp://nodejs.org/

    有几个用于静态 Web 服务器和数据库接口的模块: http://wiki.github.com/ry/node/modules

    您可能必须编写自己的文件上传处理程序,或使用此示例中的一个 http://www.componentix.com/blog/13

    【讨论】:

    • 起初我对用 JavaScript 编写服务器组件有点怀疑,但 node.js 似乎真的很有趣。谢谢!
    【解决方案2】:

    用 C + memcached + sqlite 编写的 nginx + spawn-fcgi + fcgi 应用程序可以很好地完成类似的任务,对于来自同一本地网络的小数据和快速连接,延迟约为 20-30 毫秒。据我所知,生产服务器每秒处理大约 100-150 个请求没有问题。在测试服务器上,我达到了每秒 20k 请求的峰值,同样没有问题,平均延迟约为 60 毫秒。积极的缓存和 UNIX 域套接字是关键。

    不知道该配置在频繁的PUT 请求中会如何表现,在我们的任务中它们非常罕见并且通常是批处理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-30
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      相关资源
      最近更新 更多