当前位置:编程学习 > JAVA >>

求助:TCP长连接常流量的服务器架构该如何设计

各位大侠:

我要设计一个TCP服务器,用于TCP长连接。每个用户上来后的流量是突发的,比如是2-3秒/4-5秒会有10-20KB的数据突发过来,并发用户数最多在3000-5000这个量级。我们现在的想法是一个用户一个线程,但是据说这样很快就会把服务器资源耗尽。那该如何设计更高效呢?在网上看各位大侠的帖子,很纠结,不知道该用什么样的架构更合理。我现在的想法是3种方案:

1. 继续我们现在的一个用户一个线程的架构。可行性没有问题,但关键是scalability。
2. 用线程池。Socket建立之后,每次用户的数据来了,去池中取一个空闲线程处理完再释放。但这样的问题是对于我们这样频繁的数据流,是否切换开销太大?甚至是否可行,因为线程释放了,TCP的长连接Socket会处于什么状态(是否不存在这个问题)?
3. 用一个线程处理。所有Socket打包放在一个线程中,哪个socket有数据来了就处理该事件。

请给支个招,先给各位高人谢过了。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,