假设我有一个带有 lot 节点的P2P网络。如果我想更新P2P客户端,我做的一件事不想做:更新每个节点。
现在我可以想象更新一个节点,并且每个节点不时检查它当前与之交互的节点是否是较新版本 - 如果是,则从该节点获取更新。
通过这种方式,更新将通过P2P网络找到自己的方式,您所要做的就是更新一个节点。此外,您不会依赖中央服务器。
是否存在(某处某处;-))这种更新场景的概念?
这种方法的优点/缺点是什么?
答案 0 :(得分:1)
优点:如果出于任何其他原因,讨论和谈论真的很酷。
缺点:
可能是一个安全漏洞。如果我能把一个流氓同行放在P2P上 网络,我的代码可以宣传实际上是病毒的更新。您 至少应该确保包括某种代码签名在内的更新 和认证片。
如果P2P协议或更新代码中存在任何类型的错误, 那么你可以进入一个只能升级所有子集的状态 节点
更好的方法可能是让客户从集中位置获取更新。混合方法是通过中央服务器通知对等方更新,该中央服务器通告URL和文件散列。如果节点可以从对等端获取更新(并验证哈希和代码签名),那么很好。但总是有“从中央服务器下载”作为后备。
您可能还想考虑如何合并“分阶段部署”,以便只有有限数量的对等体接收更新。因此,在将其推送给所有其他同行之前,您可以在较小的集合上验证更新是否正常。