簡體   English   中英

管理多個傳出TCP連接

[英]Managing multiple outgoing TCP connections

我的程序需要將數據發送到多個(約50個)“客戶端”站。 必須通過TCP發送重要的數據位以確保到達。 這些連接大多是固定的,並且在程序的單個活動期間不會發生變化。

你認為最好的架構是什么? 我聽說通常不建議每個連接創建一個新線程,但是當連接預計不會改變時,這個建議是否有效? 由於預計客戶端站的數量不會增長,因此可擴展性會很好,但並不是很重要。

如果重要的話,程序是用Java編寫的。

謝謝,

亞歷克斯

如果不考慮可伸縮性,吞吐量和內存使用率,那么使用50個線程是一個合適的解決方案。 它具有簡單的優點,簡單是一件好事。

如果您希望能夠擴展,或者您擔心內存使用(N個線程意味着N個線程堆棧),那么您需要考慮使用NIO選擇器的架構。 但是,最好的架構可能取決於以下內容:

  • 每個客戶站需要執行的工作量,
  • 工作是否均勻分布(平均),
  • 工作是否涉及其他I / O,訪問共享數據結構等
  • 聚合工作與單個處理器飽和的接近程度。

50線程很好,去吧。 這幾乎不重要。 超過200個線程,開始擔心..

無論如何我都會使用線程池。 根據您的線程池配置,它將根據您的需要創建盡可能多的線程,但此解決方案更具可擴展性。 它不僅適用於50個客戶端,也適用於5000個客戶端。

為什么不通過使用像連接池這樣的東西限制線程數量?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM