zoukankan      html  css  js  c++  java
  • 第一幕数据分片与路由

    ---恢复内容开始---

    一、数据分片相关:

    数据分片:系统水平扩展。数据分片存的各个机器上

    数据复制:保证数据的高可用性,保证读操作的效率,客服端从多个备份数据中选择物理距离较近的读取,提高单次读取效率

    数据路由:分片后找到某条记录的存储位置

    缺点:数据一致性

    二、数据分片和路由的抽象模型

    二级映射:

    1、key - partation:数据分到数据分片,1对多:一个分片包涵多条数据

    2、partation--machine:数据分片到物理机中,1对多:一个物理机包涵多个分片

    路由:获得某条记录的值,先通过k-p找到数据分片,再通过p-m找到对应的machine,通过key找到对应的value

    数据分片类型:

    • 哈希分片:k-p,支持点查询,大多的KV存储系统支持这种
    • 范围分片:点查询和范围查询

    三、哈希分片(Hash Partition)方法

    1、Round Robin:

      H(key) = hash(key)mod(K),表示:物理机k个,以key为主键的某条记录所在的机器。

    优点:简单

    缺点:缺乏灵活性,新增物理机时,之前的物理机之间的映射关系被打乱。需要重新分配

    原因:将k-p,p-m两个映射合为一体,由同一个哈希函数决定;k作为参数,造成机器个数与映射函数造成紧耦合。

    2、虚拟桶:两层映射

      k-p:数据通过哈希函数映射到虚拟桶,1对多,一个虚拟桶存多条记录

      p-m:虚拟桶通过查表方式映射到物理机,1对多,一个机器存多个桶

    优点:扩展灵活。将数据之间映射到机器,解耦成两级映射

    新增机器时,p-m的表只需修改个别条目

    3、一致性哈希:

      分布式哈希表(DHT)是一种技术概念,实现有多种,比如Chord(和弦)系统中提出的一致性哈希算法。

      一致性哈希算法:将哈希数值空间按照大小组成收尾相连的环,每台机器映射到哈希值上,这台机器负责落在一段有序哈希值范围的数据。同时机器记录环中的先驱和后继节点,使之成为有向环。

     路由问题:

    1. 低效率的方法:根据key的hash判断是否是本节点管辖范围,若是返回value,不是就转给其他节点继续查找,循环。

       2. 高效方法:每个节点配置存储m条路由信息的路由表,第i项表示距离当前节点2^i的哈希空间节点。设计三个节点Np(前驱)、Nc(当前)、Ns(后继)。

    该算法有两个步骤:

    1、c< j <= s,key在C的范围内,返回值

    2、不在,找路由表,找到比j小的最大编号节点Nh,让Nh去找,(j > c + 2^i,i对应的节点h)递归进行这两部.

    1)当新增节点情况:

    Nnew节点先指向Nx(网络中的节点),根据路由算法查询Nnew对应的H(Nnew) = new,找到new的后继ns,ns的前驱是np.

    第一:改变np,nnew,ns直接的映射关系,构建新网络(需要稳定性检查)

    第二:将ns上的小于new的迁移到new上

    2)稳定性检查,对Nc进行检查,

    • 假设ns为nc的后继,nc向ns询问ns的前驱np,答复分四部,
    • 如果 s<p<c,则告诉nc,p就是c的后继
    • 条件不满足,设nx为当前的后继节点。nx <-- null 或者 x < c <p,则告诉c,x是c的后继
    • 数据迁移到nc上

    3)当nc离开网络时,正常离开和异常离开,都只影响后继节点的数据

    • 正常离开:通知相应的节点,更新前驱和后继,将本身的数据迁出到后继接单,更新其他机器路由表。
    • 异常离开:机器故障,可通过主备份机器获得

    一致性哈希算法缺点:机器节点位置随机,导致负载不均衡。将所有机器视为均等,造成低配置高负载。

    4、虚拟节点:将物料节虚拟成若干虚拟节点,分别映射到环状结构的不同位置。使得负载更加,兼顾机器异质性问题

    四、范围分片:

    主键排序,划分分片,保存分片的映射表,记录最小主键和对应的物理机地址。物理机的管理LSM树。

    ---恢复内容结束---

    一、数据分片相关:

    数据分片:系统水平扩展。数据分片存的各个机器上

    数据复制:保证数据的高可用性,保证读操作的效率,客服端从多个备份数据中选择物理距离较近的读取,提高单次读取效率

    数据路由:分片后找到某条记录的存储位置

    缺点:数据一致性

    二、数据分片和路由的抽象模型

    二级映射:

    1、key - partation:数据分到数据分片,1对多:一个分片包涵多条数据

    2、partation--machine:数据分片到物理机中,1对多:一个物理机包涵多个分片

    路由:获得某条记录的值,先通过k-p找到数据分片,再通过p-m找到对应的machine,通过key找到对应的value

    数据分片类型:

    • 哈希分片:k-p,支持点查询,大多的KV存储系统支持这种
    • 范围分片:点查询和范围查询

    三、哈希分片(Hash Partition)方法

    1、Round Robin:

      H(key) = hash(key)mod(K),表示:物理机k个,以key为主键的某条记录所在的机器。

    优点:简单

    缺点:缺乏灵活性,新增物理机时,之前的物理机之间的映射关系被打乱。需要重新分配

    原因:将k-p,p-m两个映射合为一体,由同一个哈希函数决定;k作为参数,造成机器个数与映射函数造成紧耦合。

    2、虚拟桶:两层映射

      k-p:数据通过哈希函数映射到虚拟桶,1对多,一个虚拟桶存多条记录

      p-m:虚拟桶通过查表方式映射到物理机,1对多,一个机器存多个桶

    优点:扩展灵活。将数据之间映射到机器,解耦成两级映射

    新增机器时,p-m的表只需修改个别条目

    3、

  • 相关阅读:
    linux unzip
    ASP.NetViewState的实现方案
    周鸿袆:从程序员创业谈起
    程序员不是神,心态决定一切
    35岁以前成功的12条黄金法则
    Web的系统测试方法 (转载)
    Assembly反射机制错误解决之道
    利用ViewState保存Html控件状态
    触发器与@@IDENTITY的
    基于SQL Server 2005新特性的分页存储过程
  • 原文地址:https://www.cnblogs.com/lingli-meng/p/7376714.html
Copyright © 2011-2022 走看看