P2P通信方式



我一直在尝试服务器-客户端应用程序编程,并想探索P2P。我不知道从何说起。

我在想一个方法,(每个用户被称为一个节点)

每个节点由一个服务器和连接到其他节点的服务器的不同客户端实例组成。所以基本上node1是node2和node3的服务器和客户端,node2是node1和node3的服务器和客户端,node3是node1和node2的服务器和客户端。节点通过向中央服务器提交信息来了解彼此。

我不确定这是否是一种盗版方法,因为如果节点数量增加,我认为这可能真的不起作用。

我正在寻找的是资源或其背后方法的基本概念,或者我是否在正确的轨道上。

每个节点由一个服务器和不同的客户端实例组成连接到其他节点的服务器。所以node1是一个服务器客户端到node2和3,node2是服务器,客户端到node1和3Node3, Node3是node1和node2的服务器和客户端。和节点将通过向a提交信息来了解彼此中央服务器。

通常,人们谈论两种类型的对等体:边缘对等体(=你所说的客户端对等体)和超级对等体(=你所说的服务器对等体)。通常,超级对等点是一个具有额外功能的边缘对等点,以支持P2P网络的结构。

所以,你不能(也不应该)让一个给定的对等体作为一些对等体的服务器而作为另一些对等体的客户端。应该是edge with everyone或者super with everyone。

您需要发布一组种子(即超级对等点的位置),而不是中央服务器。然后,边缘对等体获取这些种子并开始连接到其中一个超级对等体。在P2P网络中没有中央服务器这样的东西,而是一组超级对等体。

您可能想看看ZeroMQ库和相关指南-其中有一些关于设计这样的分布式系统的有用内容,以及您将发现的一些相关问题。

最新更新