c++ - 将使用纠删码将 block 分割成 block ,从而提高网络吞吐量性能

标签 c++ performance networking distributed-computing consensus

假设我们有一个有 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/

相关文章:

c# - 调用从 c# 返回 char* 的 c++ dll 函数。不能使用 DllImport()

c++ - ifstream、ofstream 和 fstream 之间有什么区别?

mysql select性能(带索引的多变量与带索引的少变量)

php - MySql:保存日期范围与保存单日

java - 系统代理设置检测失败

json - swift 3.0 : Data to JSON [String : Any]

c++ - 为什么无序关联容器不实现小于运算符?

C++:避免​​在重载中将字符串自动转换为 bool 值

jquery - 为什么 CSS Hover 在 IE8 中很慢?

networking - 没有服务器的 TCP P2P