管理多个传出TCP连接

时间:2011-02-22 09:42:37

标签: java tcp connection

我的程序需要将数据发送到多个(约50个)“客户端”站。必须通过TCP发送重要的数据位以确保到达。这些连接大多是固定的,并且在程序的单个活动期间不会发生变化。

您认为最好的架构是什么?我听说通常不建议每个连接创建一个新线程,但是当连接预计不会改变时,这个建议是否有效?可扩展性会很好,但不会引起太大关注,因为客户站的数量预计不会增长。

如果重要的话,程序是用Java编写的。

谢谢,

亚历

4 个答案:

答案 0 :(得分:2)

如果不考虑可扩展性,吞吐量和内存使用率,那么使用50个线程是一个合适的解决方案。它的优点是简单,简单是一件好事。

如果您希望能够扩展,或者您担心内存使用(N个线程意味着N个线程堆栈),那么您需要考虑使用NIO选择器的架构。但是,最好的架构可能取决于:

  • 每个客户工作站需要执行的工作量,
  • 工作是否均匀分布(平均),
  • 工作是否涉及其他I / O,访问共享数据结构等
  • 聚合工作与单个处理器饱和的接近程度。

答案 1 :(得分:1)

50个线程很好,去吧。这几乎不重要。超过200个线程,开始担心..

答案 2 :(得分:0)

无论如何我都会使用线程池。根据您的线程池配置,它将根据您的需要创建尽可能多的线程,但此解决方案更具可扩展性。它不仅适用于50个客户端,也适用于5000个客户端。

答案 3 :(得分:0)

为什么不使用类似连接池的东西来限制线程数?