复述,集群集群数据分片机制是什么

介绍

小编这次要给大家分享的是复述,集群集群数据分片机制是什么,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

<强>复述,集群数据分片机制

<强>复述,集群简介

是复述,复述,集群的分布式解决方案,在3.0版本正式推出,有效地解决了复述分布式方面的需求。

复述,集群一般由多个节点组成,节点数量至少为6个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点。三个主节点会分配槽,处理客户端的命令请求,而从节点可用在主节点故障后,顶替主节点。

复述,集群集群数据分片机制是什么

如上图所示,该集群中包含6个复述,节点,3主3从,分别为M1, M2, M3, S1, S2、S3。除了主从复述,节点之间进行数据复制外,所有复述,节点之间采用八卦协议进行通信,交换维护节点元数据信息。

一般来说,主复述,节点会处理客户的读写操作,而从节点只处理读操作。

<强>数据分片策略

分布式数据存储方案中最为重要的一点就是数据分片,也就是所谓的分片。

为了使得集群能够水平扩展,首要解决的问题就是如何将整个数据集按照一定的规则分配到多个节点上,常用的数据分片的方法有:范围分片,哈希分片,一致性哈希算法和虚拟哈希槽等。

范围分片假设数据集是有序,将顺序相临近的数据放在一起,可以很好的支持遍历操作。范围分片的缺点是面对顺序写时,会存在热点。比如日志类型的写入,一般日志的顺序都是和时间相关的,时间是单调递增的,因此写入的热点永远在最后一个分片。

复述,集群集群数据分片机制是什么

对于关系型的数据库,因为经常性的需要表扫描或者索引扫描,基本上都会使用范围的分片策略。

复述,集群采用虚拟哈希槽分区,所有的键根据哈希函数映射到0 ~ 16383整数槽内,计算公式:槽=CRC16(关键),16383年。每一个节点负责维护一部分槽以及槽所映射的键值数据。

复述,虚拟槽分区的特点:

解耦数据和节点之间的关系,简化了节点扩容和收缩难度。节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据支持节点,槽和键之间的映射查询,用于数据路由,在线集群伸缩等场景。

复述,集群集群数据分片机制是什么

复述,集群提供了灵活的节点扩容和收缩方案。在不影响集群对外服务的情况下,可以为集群添加节点进行扩容也可以下线部分节点进行缩容。可以说,槽是复述,集群管理数据的基本单位,集群伸缩就是槽和数据在节点之间的移动。

下面我们就先来看一下复述,集群伸缩的原理,然后再了解当复述,节点数据迁移过程中或者故障恢复时如何保证集群可用。

<强>扩容集群

为了让读者更好的理解上线节点时的扩容操作,我们通过复述,集群的命令来模拟整个过程。

复述,集群集群数据分片机制是什么

当一个复述,新节点运行并加入现有集群后,我们需要为其迁移槽和数据。首先要为新节点指定槽的迁移计划,确保迁移后每个节点负责相似数量的槽,从而保证这些节点的数据均匀。

1)首先启动一个复述,节点,记为M4。

2)使用集群满足命令,让新复述,节点加入到集群中。新节点刚开始都是主节点状态,由于没有负责的祝辞槽,所以不能接受任何读写操作,后续我们就给他迁移槽和填充数据。

3)对M4节点发送集群setslot{槽}{sourceNodeId}进口命令,让目标节点准备导入槽的数据。

4)对源节点,也就是M1, M2, M3节点发送集群setslot{槽}{targetNodeId}迁移命令,让源节祝辞点准备迁出槽的数据。

5)源节点执行集群getkeysinslot{槽}}{计数命令,获取数个属于槽{槽}的键,然后执行步骤祝辞六的操作进行迁移键值数据。

6)在源节点上执行{targetNodeIp}“迁移;“;{0}{超时键键……null

复述,集群集群数据分片机制是什么