java - 设计网络应用程序 : where should business logic reside?

标签 java multithreading performance tomcat

有一个Web应用程序的设计,我不确定如何评价它的好坏。
思路如下:
您在接受客户端请求的 Tomcat 中部署了一个 Web 应用程序(非常重要)。我猜负载可能是 Tomcat 可以处理的量。
现在实际处理不是在容器内部完成,而是委托(delegate)给另一个进程,它通过单个 TCP 连接进行连接。所以这里本质上发生的是多路复用。
IE。客户端请求由客户端并发发送,这些请求作为消息发送到另一个进程进行处理(我猜进程本身是多线程的)但是通过一个连接
我从一位同事那里听说类似的设计(在另一个平台上)性能非常好,但从我的角度来看,这在使用单个 TCP 连接方面存在瓶颈。
尽管我在多线程方面经验丰富,但我并不真正了解或使用过异步方法(nio 等),我想知道这是否属于此类。
有没有人将多路复用用作大项目的一部分(至少以这种方式)?这是一个好的选择吗?

最佳答案

我同意你的看法。这是一个瓶颈和糟糕的设计。如果第二个 TCP 服务器可以是多线程的并且一次处理多个客户端,那么您当然应该以这种方式实现它,就像另一个 TCP 服务器(例如 Tomcat 本身)一样,并使用多个连接。

关于java - 设计网络应用程序 : where should business logic reside?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516325/

相关文章:

java - com.google.gson.JsonPrimitive 无法转换为 com.google.gson.JsonObject

java - 如何加载 VBO 并在单独的 Java 线程上渲染它?

asp.net - 从数据库加载对象列表以实例化单个对象的有效方法

java - 在 Maven Java 项目中直接使用 Jolokia JVM 代理

java - java中十进制数字的8位表示

multithreading - 使用多线程加载 spring 上下文

c++ - 在 C++ 中测试和测试并设置

.net - SQL Server 查询仅在第一次运行时确实很慢

javascript - 如果鼠标快速移动,jQuery 照片库错误

java - Spring JPA/Hibernate 存储库 findOne 方法返回 null