第一幕数据分片与路由

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

一、数据分片相关:

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

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

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

缺点:数据一致性

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

二级映射:

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、

时间: 2024-10-27 02:25:44

第一幕数据分片与路由的相关文章

带着问题学习分布式系统之数据分片

在前文中,提出了分布式系统(尤其是分布式存储系统)需要解决的两个最主要的问题,即数据分片和数据冗余,下面这个图片(来源)形象生动的解释了其概念和区别: 其中数据即A.B属于数据分片,原始数据被拆分成两个正交子集分布在两个节点上.而数据集C属于数据冗余,同一份完整的数据在两个节点都有存储.当然,在实际的分布式系统中,数据分片和数据冗余一般都是共存的. 本文主要讨论数据分片的三个问题: (1)如何做数据分片,即如何将数据映射到节点 (2)数据分片的特征值,即按照数据中的哪一个属性(字段)来分片 (3

数据分片

数据分片 在分布式存储系统中,数据需要分散存储在多台设备上,数据分片(Sharding)就是用来确定数据在多台存储设备上分布的技术.数据分片要达到三个目的: 分布均匀,即每台设备上的数据量要尽可能相近: 负载均衡,即每台设备上的请求量要尽可能相近: 扩缩容时产生的数据迁移尽可能少. 数据分片方法 数据分片一般都是使用Key或Key的哈希值来计算Key的分布,常见的几种数据分片的方法如下: 划分号段.这种一般适用于Key为整型的情况,每台设备上存放相同大小的号段区间,如把Key为[1, 10000

大数据图数据库之数据分片

节选自<大数据日知录:架构与算法>十四章,书籍目录在此 对于海量待挖掘数据,在分布式计算环境下,首先面临的问题就是如何将数据比较均匀地分配到不同的服务器上.对于非图数据来说,这个问题解决起来往往比较直观,因为记录之间独立无关联,所以对数据切分算法没有特别约束,只要机器负载尽可能均衡即可.由于图数据记录之间的强耦合性,如果数据分片不合理,不仅会造成机器之间负载不均衡,还会大量增加机器之间的网络通信(见图14-5),再考虑到图挖掘算法往往具有多轮迭代运行的特性,这样会明显放大数据切片不合理的影响,

高级开发不得不懂的Redis Cluster数据分片机制

Redis 集群简介 Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求. Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点.三个主节点会分配槽,处理客户端的命令请求,而从节点可用在主节点故障后,顶替主节点. 如上图所示,该集群中包含 6 个 Redis 节点,3主3从,分别为M1,M2,M3,S1,S2,S3.除了主从 Redis 节

26. ClustrixDB 分布式架构/数据分片

数据分片 介绍 共享磁盘vs.无共享 分布式数据库系统可分为两大类数据存储架构:(1)共享磁盘和(2)无共享. Shared Disk Architecture Shared Nothing Architecture 共享磁盘方法在协调对单个中心资源的访问时受到几个固有的体系结构限制.在这样的系统中,随着集群中节点数量的增加,协调开销也随之增加.虽然一些工作负载可以通过共享磁盘很好地扩展(例如,由大量读操作控制的小型工作集),但是大多数工作负载的扩展能力都很差——尤其是具有大量写负载的工作负载.

Redis Cluster 的数据分片机制

上一篇<分布式数据缓存中的一致性哈希算法> 文章中讲述了一致性哈希算法的基本原理和实现,今天就以 Redis Cluster 为例,详细讲解一下分布式数据缓存中的数据分片,上线下线时数据迁移以及请求重定向等操作. Redis 集群简介 Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求. Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节

Redis Cluster 集群数据分片机制

复制粘贴自: https://www.e-learn.cn/content/redis/2344485, 点击链接访问原文 仅供个人学习参考之用, 高级开发不得不懂的Redis Cluster数据分片机制 Redis 集群简介 Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求. Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点.三个主

Android 自定义Adapter 但listview 只显示第一条数据

楼主让这个问题郁闷了一晚上.....在logcat里明明显示adapter的getview方法里的list大于一条数据 ,但posotion却一直是0.....运行后也只显示list[0]里面的数据....最后的最后原来错误出在布局文件上 我以前的是这样的; <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- listv

MyCat 学习笔记 第十一篇.数据分片 之 分片事务处理

1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150:  3307 MYCAT 1.5 服务部署在宿主机上 MYCAT 192.168.31.207 :8806[SQL执行端口] / 9066[管理端口] 2 应用场景 2.0 MYCAT配置 schema.xml <schema name="TESTDB" checkSQLschema=&quo