基于Chord的结构化P2P平台
Chord协议阐述了怎样找到给定值的存储位置,新结点怎么样加入系统以及怎么样从已有结点的失败(或离开)中恢复。Chord的核心在于提供了一个快速的分布式的Hash功能计算,把值映射到存储它们的结点上去。Hash功能可以平衡负载,而且,当第N个结点加入(离开)网络时,只有O(1/N)部分值被移到了不同的地方。Chord可以使得每个结点并不需要知道其他所有的结点,改进了连续Hash的可扩展性。一个Chord结点只需要一小部分关于其他结点的路由信息。因为这些信息都是分布式的。一个结点需要通过与一些结点的通信来解析Hash函数的。在稳定状态下,在一个有N个结点的系统中。每个结点只需要维持O(logN)条关于其他结点的信息,解析所有的搜索也只需要O(logN)条信息。
为了搭建这一平台,实现Chord层的结点路由以及定位。本文设计了如下六个类:
1. doc类:该类主要描述了所有关于文档的操作。实现了文档的生成,查找,插入,删除,移动等功能。
2. event类:该类主要描述了事件及事件栈的操作。实现了事件栈的初始化,新事件的生成,删除,插入,返回。
3. node类:该类主要描述了所有关于网络中结点的操作以及连续hash函数的构造。实现了新结点的加入,删除,打印以及哈希表的构造和结点随机返回等功能。
4. finger类:该类主要描述了结点finger表的相关操作。实现了结点finger表的创建,删除,更新,打印以及寻找结点前驱,后继结点等功能。
5. request类:该类主要实现了新请求创建,插入挂起列表,请求处理,打印请求列表,复制后继结点的finger表等功能。
6. fun类:该类实现了结点的加入,离开以及因此带来的网络自我调整等功能。
上述类中具体算法实现请参见程序部分,在接下来的几节中,作者将描述一个基本的Chord协议,包括了连续hash函数的