首页 > 解决方案 > TCP 分布式系统上的多路复用与多线程

问题描述

在设计一个包含 30 多个应用程序的分布式系统时,每个应用程序有 4 个线程用于通信,因此 120 个线程总共有 30 个应用程序。我们使用使用 Linux 套接字的 ZeroMQ。

这个数量的线程会对网络造成严重的压力吗?

多处理/多路复用对减轻网络压力有什么好处吗?

链接到资源会很棒。

谢谢你的帮助,

感谢

标签: multithreadingsocketsmultiprocessingzeromqmultiplexing

解决方案


我不能说 ZeroMQ 的细节,但通常网络拥塞与使用网络的线程数量无关。网络比在 CPU 中执行的代码要慢得多,因此如果您想使计算机的出站带宽饱和,通常只需要一个线程。我在 100 Mbps 以太网中看到了这一点,对于 1 Gbps 来说这可能是正确的。不能说 10 Gbps+ 的解决方案,因为我从未使用过它们。

多线程与多路复用通常可以解决其他问题。当您拥有的线程数量取决于您服务的客户端数量时,您应该更喜欢线程内多路复用。你说每台机器已经有固定数量的线程(4),所以它已经非常完美了。

因此,请使用您喜欢的任何固定数量的线程。如果要使网络瘫痪,那么减少线程将无济于事。如果 TCP 无法适应,并且您的网络具有不可接受的服务质量,则您需要以其他方式限制您的应用程序。


推荐阅读