TCP 分布式系统上的多路复用与多线程
Multiplexing vs Multithreading on a TCP Distributed System
在设计一个有 30 多个应用程序的分布式系统时,每个应用程序有 4 个线程用于通信,所以 30 个应用程序总共有 120 个线程。我们使用 ZeroMQ,它使用 Linux 个套接字。
这个线程数是否会对网络造成严重压力?
multiprocessing/multiplexing 对减轻网络压力有什么好处吗?
Link要资源就好了。
感谢您的帮助,
感谢
我不能说 ZeroMQ 的具体细节,但通常网络拥塞与使用网络的线程数无关。网络比 CPU 中执行的代码慢得多,所以如果你想使一台计算机的出站带宽饱和,你通常只需要一个线程。我在 100 Mbps 以太网上看到了这个,这可能适用于 1 Gbps。不能说 10 Gbps+ 解决方案,因为我从未使用过它们。
多线程与多路复用通常可以解决其他问题。当您拥有的线程数量取决于您服务的客户端数量时,您应该更喜欢线程内多路复用。你说你每台机器已经有固定数量的线程(4),所以它已经非常完美了。
因此,使用您喜欢的固定数量的线程。如果要使网络瘫痪,那么减少线程也无济于事。如果 TCP 无法适应,并且您的网络具有不可接受的服务质量,您将需要以其他方式限制您的应用程序。
在设计一个有 30 多个应用程序的分布式系统时,每个应用程序有 4 个线程用于通信,所以 30 个应用程序总共有 120 个线程。我们使用 ZeroMQ,它使用 Linux 个套接字。
这个线程数是否会对网络造成严重压力?
multiprocessing/multiplexing 对减轻网络压力有什么好处吗?
Link要资源就好了。
感谢您的帮助,
感谢
我不能说 ZeroMQ 的具体细节,但通常网络拥塞与使用网络的线程数无关。网络比 CPU 中执行的代码慢得多,所以如果你想使一台计算机的出站带宽饱和,你通常只需要一个线程。我在 100 Mbps 以太网上看到了这个,这可能适用于 1 Gbps。不能说 10 Gbps+ 解决方案,因为我从未使用过它们。
多线程与多路复用通常可以解决其他问题。当您拥有的线程数量取决于您服务的客户端数量时,您应该更喜欢线程内多路复用。你说你每台机器已经有固定数量的线程(4),所以它已经非常完美了。
因此,使用您喜欢的固定数量的线程。如果要使网络瘫痪,那么减少线程也无济于事。如果 TCP 无法适应,并且您的网络具有不可接受的服务质量,您将需要以其他方式限制您的应用程序。