【笔记】分布式哈希表(DHT)

Outline

      • 1.Introduction
        • 1.1 可能会出现的问题
        • 1.2 如何设计一个好的DHT呢?
      • 2.Content Addressable Network(CAN)
        • 2.1 Introduction
        • 2.2 CAN: routing algorithm

  • 主要设计目标
    • 1.去中心化
    • 2.可扩展(随节点增加有效扩展)
    • 3.容错(处理当有node出现故障的情形)
      【笔记】分布式哈希表(DHT)_第1张图片

1.Introduction

  • hash table通过key联系数据
  • 在分布式哈希表(DHT)中,节点(node)是哈希桶

1.1 可能会出现的问题

  • Problem 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

  • 时间复杂度: O ( n 1 / d ) O(n^{1/d}) O(n1/d)
  • 一个映射在d-torus上一个区域的节点,称作拥有这个区域。
  • 每个文件F通过key K F K_{F} KF来判别。
  • 哈希函数h将一个key映射在d-torus上的[0, 1]中。
  • 一个CAN节点维护着坐标路由表,该表有其自身的IP地址和其在d-torus上每一个邻居的虚拟坐标区域。
    【笔记】分布式哈希表(DHT)_第2张图片

2.2 CAN: routing algorithm

【笔记】分布式哈希表(DHT)_第3张图片

  • 如果d-torus被划分为n个相等的区域,则平均路由路径经过 ( d / 4 ) n 1 / d (d/4)n^{1/d} (d/4)n1/d,或 O ( n 1 / d ) O(n^{1/d}) O(n1/d)
  • 为什么是 ( d / 4 ) n 1 / d (d/4)n^{1/d} (d/4)n1/d跳?
    【笔记】分布式哈希表(DHT)_第4张图片
    【笔记】分布式哈希表(DHT)_第5张图片
    【笔记】分布式哈希表(DHT)_第6张图片

你可能感兴趣的:(big,data)