什么是Kademlia
是DHT的一个实现算法,类似的还有 Chord,Pastry 等,在2002年被提出,它的使用场景包括 Storj V3 network, Ethereum, BitTorrent, Swarm, 和IPFS等等
主要术语
Node 就是DHT网络的参与节点
pair (KV) DHT以KV的形式来存储数据
Lookup 通过对应的KEY来寻找对应的value
Data/Content DHT存储的数据
为什么使用Kademlia而不是其它DHT算法呢
- 它可以使节点之间的交流信息最小化
- 一些配置信息会根据其它的lookup消息一起传送
- 每一个节点其它节点是知道的,这样的话路由延迟就很小
- 它使用的是异步查询
- 可以抵御DOS攻击
Key
Kademlia使用key来区分节点和数据,key的长度是160bit
每个参与的计算机都有一个key,就是nodeId
每条数据也都有一个key
原理
每个节点都需要保存全网所有节点的一个子集
在Kademlia中,因为是160bit,所以也就是有160个子树,而且每个节点至少知道它每个子树至少一个节点,这样我们就可以找到任意一个节点,上面四个子树,每个都是一个K-Buc