在设计具有30多个应用程序的分布式系统时,每个应用程序有4个线程用于通信,因此120个线程共有30个应用程序。我们使用ZeroMQ,它使用Linux套接字。
是……
我不能说ZeroMQ的具体细节,但通常网络拥塞与使用网络的线程数无关。网络比CPU中执行的代码慢,因此如果要使计算机的出站带宽饱和,通常只需要一个线程。我看到这个用于100 Mbps以太网,这可能适用于1 Gbps。不能说10 Gbps +解决方案,因为我从未与他们合作过。
多线程与多路复用通常可以解决其他问题。当您拥有的线程数取决于您所服务的客户端数量时,您应该更喜欢线内多路复用。你说你已经拥有每台机器固定数量的线程(4),所以它已经非常完美了。
因此,请使用您喜欢的任何固定数量的线程。如果要降低网络,减少线程将无济于事。如果TCP无法适应,并且您的网络具有不可接受的服务质量,则需要以其他方式限制您的应用。