【问题标题】:Tomcat 8.5 threading modelTomcat 8.5 线程模型
【发布时间】:2018-07-28 12:24:05
【问题描述】:

我的应用程序通过 Tomcat 8.5 (servlet 3.1) 的 JSR 356 实现使用 Web Sockets。根据 JSR,它应该使用 NIO,但我不确定是否理解。

当客户端请求 Web Socket 连接时,客户端和服务器之间会创建一个永久对话。在这种情况下,我想知道客户端或服务器的每个请求是否由 Tomcat 池的不同线程处理,或者同一线程是否始终专用于此连接。

此外,该线程如何处理请求?例如,它是等待 JDBC 调用(阻塞 IO)还是在这种情况下释放(NIO)?与众所周知的仅使用 NIO 的 Netty 相比,Tomcat 线程模型在 websocket 案例中有何不同/相似?

【问题讨论】:

    标签: websocket netty threadpool tomcat8 servlet-3.1


    【解决方案1】:

    当有数据要处理时,从池中分配一个线程来处理 WebSocket 连接上的传入数据。一旦完成,线程将返回到池中。有可能(实际上很可能)每次都使用不同的线程。

    传出消息将使用阻塞或非阻塞 IO,具体取决于使用 API 的哪一部分。

    JDBC 调用通常是阻塞的,但由 JDBC 驱动程序控制。应用程序如何处理 JDBC 调用以及与 WebSocket 消息的关系(如果有)取决于应用程序。

    【讨论】:

    • 谢谢。您是否发现与 Netty 的 websockets 有一些不同?
    • Netty 不是 Apache 产品。我从来没用过。
    猜你喜欢
    • 2019-06-09
    • 2012-07-12
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多