我有一个处理来自多个客户端的登录的java服务器。服务器为每个tcp/ip套接字侦听器创建一个线程。数据库访问由服务器创建的另一个线程处理。在java中实现异步消息队列
目前,我已经连接到服务器的客户端数量很低(< 100),所以我没有真正的性能问题,但我正在研究如何在未来处理更多的客户端。我担心的是,有很多客户端,我的服务器和数据库线程会因客户端线程对其方法的不断调用而陷入困境。
具体来说就数据库而言:目前每个客户端线程都访问其服务器父级上的公共数据库线程并执行数据访问方法。我认为我应该做的是拥有某种客户端线程可以将其数据请求放入其中的消息队列,并且数据库线程在接收到数据时将执行该消息队列。如果有数据要从数据访问调用中返回,那么它可以将它放在队列中供客户端线程使用。所有这些都不会触及主服务器代码或任何其他客户端线程。
因此,我认为我想实现一个异步消息队列,客户端线程可以将消息放在上面,并且数据库线程将从中取出。这是正确的方法吗?任何想法和链接到我可以阅读有关实施的地方,将不胜感激。
不是一个答案,因此评论...你可能会想要Google上的“Java C10K问题”。基本上每个TCP/IP连接一个线程不会因为您怀疑而削减它。你写的问题不一定是*“constant calls”*,但是一旦客户端数量变高(如果每个客户端使用一个线程),就会在巨大数量的线程之间不停地交换数据。 – SyntaxT3rr0r 2010-12-02 14:43:16