超级节点

在讲超级节点之前,先讲两个故事:

1、两军问题

古代两军交战,同盟的将军如何让信使传话相约攻城呢?

常规的假设是A将军可以先发送一个消息:“6月1日凌晨发起攻击”。但是,一旦消息发送出去,A将军并不知道B将军是否收到了这个消息。这种不确定性使得A将军攻击之前非常犹豫,因为有独自发起攻击的危险。

为了让A将军放心,B将军可能要发送一个确认的返回信息给A将军:“我已经收到了你消息,我会在6月1日凌晨发起攻击”。可是,这个给A将军的确认消息也面临着被守卫军截获的可能,B将军也犹豫了,如果A将军没有收到确认信息,那么A将军很有可能停止此次攻击。

这就是两军问题。

2、拜占庭将军问题

拜占庭将军问题(Byzantine failures)本质是一个协议问题。拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。

叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。

拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。

 

本质都是如何解决“共识机制”的问题?

在P2P软件中,每个用户就是一个节点,数据传输通过节点进行,不需要很多的中央服务器,但为了保证数据传输质量,P2P软件会自动分析每个节点的硬件资源,让有较大带宽和高速计算机担任它的“超级节点”。一定数量的超级节点,数千万的小节点,共同组成了P2P网络,这个用户越多就越强大的奇异的P2P网络。