DHT
把网络上资源的存取像Hashtable一样,可以简单而快速地进行put、get,该思想的诞生主要是受第一代P2P(Napster)网络的影响。DHT更强调的是资源的存取,而不管资源是否一致。
DHT算法
- 将内容索引抽象为<K,V>对:K是内容关键字的Hash摘要,K = Hash(key),V是存放内容的实际位置,例如节点IP地址等。
- 所有的<K,V>对组成一张大的Hash表,该表存储了所有内容的信息。
- 每个节点都随机生成一个标识(ID),把Hash表分割成许多小块,按特定规则(即K和节点ID之间的映射关系)分布到网络中去,节点按这个规则在应用层上形成一个结构化的重叠网络。
- 给定查询内容的K值,可以根据K和节点ID之间的映射关系在重叠网络上找到相应的V值,从而获得存储文件的节点IP地址。
定位(Locating):节点ID和其存放的<K, V>对中的K存在着映射关系,因此可以由K获得存放该<K, V>对的节点ID。
路由(Routing):在覆盖网上根据节点ID进行路由,将查询消息最终发送到目的节点。每个节点需要到其邻近节点的路由信息,包括节点ID、IP等。
网络拓扑:
拓扑结构由节点ID和其存放的<K, V>对中的K之间的映射关系决定
拓扑动态变化,需要处理节点加入/退出/失效的情况