繁体   English   中英

这个长时间运行的请求是否是Java异步servlet的有效用例?

[英]Is this long running request a valid use case for java asynchronous servlets?

我一直在阅读有关异步servlet的信息,以尝试查看它是否适合我的用例。

服务器将接收长时间运行的请求,这些请求需要花费一些时间才能从数据库读取并处理每条消息。

这是基本流程:

  1. 客户端请求验证一些数据。
  2. 服务器收到长时间运行的请求(约1-2分钟)
    1. 请求需要与数据库对话(在我的情况下为redis)以批量获取100,000个文档。
    2. 每个文档都会进行处理,如果有效,则会将其写入客户端。 同样,最多可将25个示例文档写入客户端。
    3. 处理完完整的数据集(但最多写入25个文档)时,将计算并发送结果。
    4. 连接成功关闭。

因此,有一个数据库等待,所有类似的请求都将具有,然后在同一个线程中处理每个文档。

在这种情况下,与常规同步servlet相比,切换到异步servlet有什么好处吗?

另外,如果我确实使用异步servlet,那么尝试将文档的处理与线程池并行化还会有任何好处吗? 看来我不会获得任何其他好处,但也想澄清一下。

谢谢你的帮助!

在这种情况下,与常规同步servlet相比,切换到异步servlet有什么好处吗?

是。 实际上,所有使用手册都告诉您“异步servlet为此有用”的用例

另外,如果我确实使用异步servlet,那么尝试将文档的处理与线程池并行化还会有任何好处吗? 看来我不会获得任何其他好处,但也想澄清一下。

无关。 异步servlet只是释放资源,因此即使许多servlet正在等待结果,您的服务器也会继续回答请求。 它与响应异步请求的速度无关。

从优化逻辑中获得的任何好处都将对服务器和用户都有好处,但是如果您正在使用异步servlet或同步servlet,那么这都是有益的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM