zoukankan      html  css  js  c++  java
  • 云计算DHT分布式存储

    因为DHT包含多种存储模式,因为学习需要,这里暂时只讲解chord,这个也是相对比较简单的

    首先使用的hash格式数据<key,value>

    key是关键字,用来作为寻找节点,即通过K=hash(key),然后查找K来找出存储节点信息表

    value是包含了数据存储的具体节点信息,例如IP等

    接下来是看是如何查找的:

    1、有以下节点N1,N8,N14,N21,N32,N38,N42,N48,N51,N56,每个节点都存有一张大小为8的finger表,前面三个指向附近节点,后面指向远处节点

    2、我们要查找K54(即K=hash(key)=54)

    3、初始查找节点为N8

    4、记住,节点查找规则是由远及近,首先对于newnode=N8+32---->42节点,符合8<newnode<54,所以跳到当前节点,继续查找(注,这里的大小符号仅仅指范围,并非真的只是数字大小)

    5、newnode=N42+32----->14,显然不符合42<newnode<54,继续newnode=N42+16----->1,依旧不符合,再继续newnode=N42+8---->51,符合,调到51节点继续查找

    6、最终发现在N51节点到N56节点之间,所以节点信息在N56查找到Value,再通过value上的信息直接找到数据存储的物理位置。

    关于删增节点

    最重要的是维护好后继节点,与前序节点

    这里暂不详述。

  • 相关阅读:
    存储过程
    C++学习总结
    Android快速开发系列 10个常用工具类
    SimpleHttpServer的学习之总体架构
    SimpleHttpServer的学习之UML
    SimpleHttpServer的学习(1)
    map用法
    idea 中resources下于java包名相同的包不能导入XML文件问题
    leetcode621
    Yukari's Birthday 枚举+二分 过程注意数据的溢出问题 HDU4430
  • 原文地址:https://www.cnblogs.com/gambler/p/9148974.html
Copyright © 2011-2022 走看看