赞
踩
因为数据需要分布存储在不同的节点上,所以数据在进行存储之前需要先分区
数据分区示意图
数据分区方法
分区方式 | 特点 | 典型产品 |
---|---|---|
顺序分区 | 数据分散有倾斜(某些节点有过多热门数据) 可以顺序访问 键与业务有关 | BigTabl HBase |
哈希分区 | 数据分布无倾斜 不能顺序访问 键与业务无关(由哈希函数生成) | Redis Cluster Memcache |
哈希分区的三种方法
节点取分区余法
一致性哈希分区法
原理:先定义Hash的取值范围,令它组成一个环,集群中每个节点负责一区间的Hash值,当一个数据加入集群时,让它加入哈希值按顺时针最近的节点
* 优点:节点伸缩只会影响最近邻近节点
* 缺点:还是具有数据迁移
虚拟槽分区法
原理:预设虚拟槽,每个槽映射一个数据子集,一般比节点数大
优点:不会发生数迁移
经验:redis-cluster使用的数据分区算法是虚拟槽分区法
配置项 | 配置说明 |
---|---|
daemonize yes|no | 是否以守护线程方式启动 |
port | 端口 |
dir | 工作目录 |
logfile | 日志文件名 |
dbfilename | RDB文件名 |
cluster-enabled yes|no | 是否构建集群 |
cluster-config-file | 集群日志文件名 |
cluster-require-full-coverage yes|no | 是否只有当所有节点都可用时,集群才可用 |
概念:当一个节点A与节点B连接时,由于节点数据共享,所以节点B可以自动连接上与节点A进行连接的节点
命令
概念:让某个节点负责某个区间哈希值的槽
节点 | 槽 |
---|---|
A | 0 ~ 5460 |
B | 5461 ~ 10922 |
C | 10923 ~ 16383 |
经验:当集群中未分配完所有的槽(16383)时,节点是不可用的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。