我当时正在研究Facebook使用的基础设施,当时我正在为一个大学项目开发一个基于社交互动的网站。
Facebook正在使用龙卷风服务器作为其可伸缩、无阻塞的web服务器,但它是为Python编写的。我试图为Java找到类似的东西:我应该看什么?您在Java非阻塞web服务器方面有哪些经验?
发布于 2011-10-06 20:09:36
Netty是一种高性能的事件驱动网络框架,它支持HTTP和其他公共协议。Netty使用非阻塞I/O,但它的使用级别很低。
Play Framework是一个面向Java和Scala的现代web框架。它有一个非常短的开发周期-只是保存您的文件和更新您的浏览器。它受到Rails的启发。Play Framework默认基于Netty (嵌入式),但它也可以作为war文件在Java容器中使用。
几个月来我一直在使用Play Framework。这是一个易于使用的框架,它具有很好的性能,因为它是基于Netty的。如果您已经做了一些GUI编程,例如使用Swing,那么您以前也做过事件驱动的编程,这是相同的原则:在后台线程中执行所有长时间运行的处理,否则您的服务器将被阻塞,就像当线程被错误地使用时会阻塞GUI一样。
发布于 2011-10-06 18:32:49
您可以在java容器前面使用ngnix作为代理。龙卷风和ngnix解决的问题是,套接字上的io是事件驱动的,而不是阻塞的,这将您的站立连接限制在大约10,000。在java环境中,您可以使用ngnix作为一个或多个java容器的反向代理/负载均衡器,并实现类似的可伸缩性。jboss的奈蒂等项目已经开始为java空间解决这个问题,但我不确定是否有任何商业实现使用它。
发布于 2011-10-07 14:59:42
在围绕构建服务器的活动上有一些阿帕奇米娜,但我不知道它有多远。该网页目前是相当轻的细节。
https://softwareengineering.stackexchange.com/questions/112818
复制相似问题