Asynchronous 在一个氛围中实施一个对客户做出响应的后台流程+;网络/码头应用
我们需要支持10k+用户,每个用户都会发起请求并等待服务器的响应(响应可能需要20-30秒)。这只是来自客户端的一个请求,经过服务器的长时间处理后,将传输响应,然后断开连接。 在后台,服务器将执行一些数据库搜索,并等待其他后台进程在响应客户端之前完成通知 在做了一些研究之后,我发现我们需要使用类似于atmosphere的框架来支持WebSocket/sse事件/长轮询,以及类似于netty(=>nettosphere)或jetty的异步服务器。 至于我的经验——主要是JavaEE世界和Tomcat服务器 我的问题是:Asynchronous 在一个氛围中实施一个对客户做出响应的后台流程+;网络/码头应用,asynchronous,websocket,jetty,netty,atmosphere,Asynchronous,Websocket,Jetty,Netty,Atmosphere,我们需要支持10k+用户,每个用户都会发起请求并等待服务器的响应(响应可能需要20-30秒)。这只是来自客户端的一个请求,经过服务器的长时间处理后,将传输响应,然后断开连接。 在后台,服务器将执行一些数据库搜索,并等待其他后台进程在响应客户端之前完成通知 在做了一些研究之后,我发现我们需要使用类似于atmosphere的框架来支持WebSocket/sse事件/长轮询,以及类似于netty(=>nettosphere)或jetty的异步服务器。 至于我的经验——主要是JavaEE世界和Tomca
我相信AKKA框架将处理这种需求。我正在考虑使用它来处理扩展问题,可能是通过RabbitMQ来帮助将工作卸载到其他服务器,这些服务器可能会在以后根据需要添加以进行扩展。也要考虑一下。关于您的#3+#4评论,我想我们需要大气来处理连接。关于#2-我不需要生成大量线程来处理请求吗?或者我可以将asyncServlet保存在缓存中,并在后台进程访问服务器时访问它吗?您对线程的担忧是错误的,线程只处于活动状态,并根据实际的活动处理进行分配。换一种说法。。。线程数!=Servlet 3.0 Async处于混合状态时的连接计数。要知道,使用Atomosphere和Comed时,长持续时间请求/响应是通过其他连接类型(http流、http长轮询、websocket等)处理的。如果在web浏览器上,来自这些类型连接的响应将必须由您自己以javascript进行处理,然后在浏览器中显示您想要的方式。这可能会帮助您了解Bayeux协议、BOSH等。您将很快了解到,所有这些技术都将在请求/响应的生命周期中使用不止一个连接(使用各种javascript端管理),以实现它们的目标。