拆分树数据结构并将其发送到同一网络上的不同进程的最佳方法

问题描述 投票:0回答:1

我正在尝试提出一种设计,以有效地将树数据结构(每个节点可以有两个以上的分支)发送到套接字/不同的进程等。一次可以发送的数据量似乎有上限消息(1500 字节)。树数据结构可以变得非常大(可能有数百个节点)。我最初考虑的是像数组一样的线性数据结构(例如:[root,顶部节点的数量,node1,node2,node3 ...,下一级节点的数量,node1,node2,node3等等]并将其序列化并通过套接字将其发送到另一个进程。

我正在尝试找出在给定约束的情况下最有效的方法(大树,如何分割给定每条消息的字节数限制)

我还没有探索是否应该使用 Protobuf、XDR、JSON 进行进程间通信

c++ sockets data-structures tree ipc
1个回答
0
投票

最有效的算法将是自定义编写的算法,它确实用完每条消息的 1500 字节。
您的下一个最佳选择是使用 google protobuf 并尝试对序列化消息的大小提出一个好的估计器。然而,对于如此小的消息,您可能会在时域中获得显着的协议开销。
使用像 json 这样的东西,你会添加无用的符号,占用你宝贵的空间。

请注意,如果您仅将节点发送到一个进程,则无需发送完整节点。一个节点可以分为两个数据包。然后接收进程需要能够将节点“缝合”在一起。

请问1500字节的限制从何而来?我知道嵌入式设备有这样的限制,但我想知道为什么要发送一个大的树结构?

© www.soinside.com 2019 - 2024. All rights reserved.