我正在构建一个基于Java的web服务(使用JSON作为数据编码),它将需要每秒处理多达2,000个HTTP请求。每个请求所需的处理几乎可以忽略不计( HashMap.put()方法调用),解析JSON可能是主要的开销。
我想知道一个高内存四倍超大型EC2实例(68GBRAM,8核,64位)是否能够每秒处理多达2,000个HTTP请求?
我意识到很难得到确切的答案,我只是想知道这是否在可能的范围内,或者我是否在吸食可口可乐。
我目前正在使用SimpleWeb web框架,尽管我注意到它目前似乎还没有得到维护。人们能推荐适合这种大容量使用的替代嵌入式HTTP服务器吗?
发布于 2014-08-31 17:54:22
每秒2000个请求(或2 krps)应该在Java servlet的能力范围内,前提是您不会引入巨大的瓶颈,并且您正在使用的框架不会太糟糕。鉴于您显然没有访问任何后端,该任务应该是CPU绑定的,并且具有很好的伸缩性。
Web Framework基准测试的JSON serialization测试显示,许多Java框架提供了非常好的结果;即使使用20 database queries,结果仍然远远超过2krps。在亚马逊上,他们使用的m1.large实例比你计划使用的实例(我估计是c3.4xlarge)要小。
您可以尝试使用well maintained的Undertow,它提供了一个方便的servlet API。Netty是另一种可能,尽管它有自己的API。
注意:我意识到这个问题有点老了,但是这个问题应该仍然有效。
发布于 2014-08-31 18:23:31
这绝对是可能的,根据this question的说法,Netty每秒可以处理超过10万次交互。一些JSON解析器可以将请求字符串转换为JSON对象,或者您甚至可以使用它一个二进制变体BSON,如下所述(如果消息很长或非常复杂)。从this question上看,一台安装了最新操作系统的服务器可以处理的连接数量超过了30万,远远超过了您的任务所需的数量。
当然,这也取决于您需要采取哪些操作来处理可能是限制因素的请求。
https://stackoverflow.com/questions/7755211
复制相似问题