Concurrency 高性能(但不是哑的)web服务器

Concurrency 高性能(但不是哑的)web服务器,concurrency,webserver,node.js,threadpool,eventlet,Concurrency,Webserver,Node.js,Threadpool,Eventlet,我正在尝试编写一个非常简单的web服务器,它可以执行以下操作: 收到请求 用一个小文件回应;关闭连接 处理请求数据 换句话说,响应不依赖于请求信息,但请求信息仍然很重要。数据将被持久化,然后用于分析 我曾尝试使用一些事件驱动的网络框架来实现这一点,但它们似乎都会保持连接,直到处理代码返回。这是有意义的,因为一般来说,服务器在响应后不必做任何工作,但在我的情况下,不需要这种特殊的处理方式 理想情况下,服务器应保持对请求的响应,同时将请求数据添加到堆栈中,该堆栈在持久化时清空 我们期望每秒处理数千个

我正在尝试编写一个非常简单的web服务器,它可以执行以下操作:

  • 收到请求
  • 用一个小文件回应;关闭连接
  • 处理请求数据
  • 换句话说,响应不依赖于请求信息,但请求信息仍然很重要。数据将被持久化,然后用于分析

    我曾尝试使用一些事件驱动的网络框架来实现这一点,但它们似乎都会保持连接,直到处理代码返回。这是有意义的,因为一般来说,服务器在响应后不必做任何工作,但在我的情况下,不需要这种特殊的处理方式

    理想情况下,服务器应保持对请求的响应,同时将请求数据添加到堆栈中,该堆栈在持久化时清空

    我们期望每秒处理数千个请求。事件驱动编程真的是要走的路吗,还是我应该坚持使用(传统的)线程?哪种语言或框架更适合此类工作

    谢谢。

    您考虑过使用吗?它允许您使用javascript快速、轻松地编写面向http的服务器程序。它似乎非常适合您的需要,因为它的行为是可定制的,据说它的伸缩性非常好


    您可能想考虑阅读一些教程。

    < P>我意识到,不是使用回调(或绿色线程,如果您愿意)来做任何实际的工作,我最好把委托数据委托给一个独立的应用程序。对此进行的一些研究表明,我使用了beanstalkd和RabbitMQ等工作队列


    beanstalkd似乎比竞争对手更轻、速度更快,所以我可能会坚持下去。

    您现在使用的是哪种平台和语言?看看
    nginx
    是免费的,您可以查看源代码。我现在正试图用Python来做这件事,但语言并不是特别重要。(虽然我真的不想在C中做任何事情:)一个用户可能会快速连续地执行多个请求,还是更像是许多用户都在执行一个请求?@thirtydot,许多用户都在执行一个请求。他们可能会要求一张gif图像,谷歌分析风格;检查问题的标签。Node.js看起来很不错,但据我所知,它不支持Thrift/Cassandra(我在这个项目中使用的数据库)。我也不确定它是否能够在处理函数中“返回前响应”。哦,我没注意到。所以,您的问题基本上是“是否使用node.js”?或者,您是否已经将这种方法抛到了窗外,正如您在上面所说的“我正试图用Python实现这一点”?如果是这样,为什么?缺乏Cassandra集成是一个阻碍,我想也许我应该坚持线程。我是网络编程新手,所以我试图从不同的角度去理解。和。在node.js中,您可以非常轻松地在处理请求数据之前发送响应。一直这样做:)