【笔记】分布式哈希表(DHT)
Outline
-
主要设计目标:
- 1.去中心化
- 2.可扩展(随节点增加有效扩展)
- 3.容错(处理当有node出现故障的情形)
1.Introduction
- hash table通过key联系数据
- 在分布式哈希表(DHT)中,节点(node)是哈希桶
1.1 可能会出现的问题
-
Problem 1:动态的加减节点
- 解决办法:
- a. 定义一个混合的hash空间
- b. 所有的hash值不依赖于节点数量落入空间
- c. 每个key到达hash空间中与其id最接近的对等节点
- 解决办法:
-
Problem 2:插入和查询数据时需要所有节点
- 解决办法:
- 每个节点只需要知道其相邻的节点
- 信息经邻居节点通过多跳路由发送(overlay routing)
- 解决办法:
1.2 如何设计一个好的DHT呢?
- 1.对于每一个对象,负责该对象的节点应该可以通过一个较短的路径到达。(small diameter);不同的DHTs仅仅在路由方法上不同。
- 2.每个节点的邻居数量应该保持合理(small degree)。
- 3.DHT的路由机制应该是去中心化的(no single point of failure or bottleneck没有单点故障或瓶颈)。
- 4.可以较好的处理节点加入和去除
- a.在现有节点上重新划分受影响的keys
- b.重新组织其邻居节点
- c.引导机制将新的节点连接到DHT上
- 5.DHT必须有低的伸展性(degree不能太大)
2.Content Addressable Network(CAN)
- 思想:用一个虚拟的d维笛卡尔空间协调每一个item,其中每个节点拥有一个子空间。
- Source: S. Ratnasamy, P. Francis, M. Handley, R. Karp, S.Shenker (UC Berkeley and ACIRI). "A Scalable Content-Addressable Network”. ACM SIGCOMM,2001.
2.1 Introduction
- 时间复杂度:
- 一个映射在d-torus上一个区域的节点,称作拥有这个区域。
- 每个文件F通过key 来判别。
- 哈希函数h将一个key映射在d-torus上的[0, 1]中。
- 一个CAN节点维护着坐标路由表,该表有其自身的IP地址和其在d-torus上每一个邻居的虚拟坐标区域。
2.2 CAN: routing algorithm
- 如果d-torus被划分为n个相等的区域,则平均路由路径经过,或。
-
为什么是跳?