假设我们有一个有 n 个节点的网络,并且选举了一个协调员来向节点发送命令。我们进一步假设协调者的带宽(上传速度)非常糟糕,他想在 o(n) 的假设时间内在节点中发送一个 10 GB 的大文件。
我现在优化性能的想法是使用纠删码技术将大文件分成 block 并为每个节点发送一个 block ,以便稍后节点在 o(n^2) 假设时间内相互通信以检索整个街区。因此,验证者之间共享带宽,因此领导者不需要上传大量数据并限制他的带宽和共识的性能。这会带来更高的吞吐量性能吗?或者我在水中打一个洞?
使用纠删码的另一个优点是,如果某些节点被视为恶意/拜占庭节点并拒绝通信和发送其 block ,则非故障节点仍然能够利用纠删码的功能检索具有较小块的消息
最佳答案
与客户端协调以监听本地网络上的多播流。一旦您确定接收 10 GB 文件所需的每个人都在收听,send the file as a multicast .
优点是 IP multicast can send information to a group of interested本地网络上的听众通过单次传输。它是您问题的理想解决方案。
您将需要处理某种形式的流量控制,以 catch 传输过程中丢失的数据包。
有一些注意事项:
- 消费级网络设备可能不支持多播。
- 确保您的 WiFi 基础设施支持 WiFi 组播。例如,Cisco Meraki支持组播。
- 对于涉及多个交换机的网络,您需要启用多播路由。
关于c++ - 将使用纠删码将 block 分割成 block ,从而提高网络吞吐量性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75173304/