P2P网络设计
P2P network design
我正在尝试设计一个 P2P 网络,其中所有对等点共享相同的数据,并对其进行更改。没有进入共识部分(即假设一次只有一个节点会更改数据)。
我如何确保所有对等点都以容错方式连接到其他对等点?我只能想到一种方法,那就是每个对等点都可以从另一个对等点请求更多对等点,但是我如何确保连接尽可能均匀地分布,而不是一个对等点在 TCP 连接上过载,而另一个对等点可能勉强有什么联系吗?甚至我怎样才能防止所有同行分成两个独立的组?
像 bittorrent 的 canonical peer priority (github link) 通过将两个端点的标识符散列在一起来计算偏好顺序的东西应该允许节点达到覆盖的伪随机布局,同时避免节点 "left out"。将两个身份散列在一起会导致从每个对等点的角度来看不同但全局一致的排序,从而构建随机布局。随着每个节点边数的增加,网络分裂的可能性将迅速趋向于零。
并且您可以限制每个对等点接受的连接数,一旦连接饱和,这将迫使其他人去别处寻找。
我正在尝试设计一个 P2P 网络,其中所有对等点共享相同的数据,并对其进行更改。没有进入共识部分(即假设一次只有一个节点会更改数据)。
我如何确保所有对等点都以容错方式连接到其他对等点?我只能想到一种方法,那就是每个对等点都可以从另一个对等点请求更多对等点,但是我如何确保连接尽可能均匀地分布,而不是一个对等点在 TCP 连接上过载,而另一个对等点可能勉强有什么联系吗?甚至我怎样才能防止所有同行分成两个独立的组?
像 bittorrent 的 canonical peer priority (github link) 通过将两个端点的标识符散列在一起来计算偏好顺序的东西应该允许节点达到覆盖的伪随机布局,同时避免节点 "left out"。将两个身份散列在一起会导致从每个对等点的角度来看不同但全局一致的排序,从而构建随机布局。随着每个节点边数的增加,网络分裂的可能性将迅速趋向于零。
并且您可以限制每个对等点接受的连接数,一旦连接饱和,这将迫使其他人去别处寻找。