multithreading - TCP 分布式系统上的多路复用与多线程
问题描述
在设计一个包含 30 多个应用程序的分布式系统时,每个应用程序有 4 个线程用于通信,因此 120 个线程总共有 30 个应用程序。我们使用使用 Linux 套接字的 ZeroMQ。
这个数量的线程会对网络造成严重的压力吗?
多处理/多路复用对减轻网络压力有什么好处吗?
链接到资源会很棒。
谢谢你的帮助,
感谢
解决方案
我不能说 ZeroMQ 的细节,但通常网络拥塞与使用网络的线程数量无关。网络比在 CPU 中执行的代码要慢得多,因此如果您想使计算机的出站带宽饱和,通常只需要一个线程。我在 100 Mbps 以太网中看到了这一点,对于 1 Gbps 来说这可能是正确的。不能说 10 Gbps+ 的解决方案,因为我从未使用过它们。
多线程与多路复用通常可以解决其他问题。当您拥有的线程数量取决于您服务的客户端数量时,您应该更喜欢线程内多路复用。你说每台机器已经有固定数量的线程(4),所以它已经非常完美了。
因此,请使用您喜欢的任何固定数量的线程。如果要使网络瘫痪,那么减少线程将无济于事。如果 TCP 无法适应,并且您的网络具有不可接受的服务质量,则您需要以其他方式限制您的应用程序。
推荐阅读
- android - 不能嵌套Relativelayout吗?
- excel - 在 VBA 中使用 xLookUp 返回值的范围
- javascript - 在反应中映射数组的空检查
- java - 如何在 Wso2 ei 中编写自定义调解器以将列表有效负载的 json 列表转换为单个列表
- python - 如何在 Django 中创建两个小时之间的时隙间隔
- dart - dart 中的 JSString 和 JSInt 类是什么?
- c# - SortedDictionary 与排序字典的性能
- sql - SQL - 如何查找列组合之前是否发生过?
- vb.net - Google 搜索 URL 并添加 Listbox C# vb.net
- ios - 当来自后台时,CMSampleBuffer 的音频格式会发生变化