首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >套接字编程、Java、Tomcat 6、扩展

套接字编程、Java、Tomcat 6、扩展
EN

Stack Overflow用户
提问于 2010-08-01 03:59:54
回答 1查看 901关注 0票数 1

我对web编程非常陌生,目前正在为一个移动应用程序开发一个web后端。目前,我让用户使用servlet交互登录,一旦他们拥有对应用程序的完全访问权限,我就需要打开一个套接字连接,以便能够提供服务器推送。现在我遇到的问题是人们如何处理数以千计的并发套接字连接。我遇到过很多人在谈论ThreadPools,它看起来很容易实现和NIO。有没有什么框架可以让我的服务器至少处理20-30k的并发连接?我也可以忘记TCP连接,转而使用长轮询,但据我所知,TCP是资源方面的最佳选择。

@Steve -我看的是前者:一个服务器套接字,有数千个连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-01 12:21:35

我会立即研究web端的集群,并将其用作您的主要扩展机制。30k的连接是相当多的,在达到某种服务器限制之前,您没有太大的增长空间。如果I/O本身不是繁重的,我将只使用大量的线程和服务器,具有大量的马力和内存。让它以这种方式工作,以便您可以发布,并有一个备用计划,以便在性能或可伸缩性成为问题时切换到多路复用NIO,但需要注意的是,这是一次彻底的大修,编程复杂性大约是java.net的十倍。经过几年的考虑,我越来越想知道节省线程的NIO是否真的值得:它本身增加了几个新问题,例如需要推式解析;如果有工作线程需要更改通道的注册状态,则与选择器的同步问题;有许多方法会导致代码出错;以及调度开销从操作系统转移到您的应用程序的事实,在应用程序中,您只有线性集合迭代器数据结构来处理它,除非您参与到另一个复杂级别。值得记住的是,select()是为Unix发明的,目的是为了节省开销很大的进程。线程真的很便宜,它提供了一个非常简单的编程模型,带有内置的上下文来处理单个连接。NIO几乎不能做到这一点,除非通过严格使用选择键附件,更不用说自然了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3379608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档