Redis Cluster(Redis 3.X)设计要点

转载 2015年11月19日 14:21:21
Redis Cluster设计要点:

架构:无中心

Redis Cluster采用无中心结构,每个节点都保存数据和整个集群的状态
每个节点都和其他所有节点连接,这些连接保持活跃
使用gossip协议传播信息以及发现新节点
node不作为client请求的代理,client根据node返回的错误信息重定向请求

数据分布:预分桶

预分好16384个桶,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中
每个Redis物理结点负责一部分桶的管理,当发生Redis节点的增减时,调整桶的分布即可
例如,假设Redis Cluster三个节点A/B/C,则
Node A 包含桶的编号可以为: 0 到 5500.
Node B 包含桶的编号可以为: 5500 到 11000.
Node C包含桶的编号可以为: 11001 到 16384.

当发生Redis节点的增减时,调整桶的分布即可。
预分桶的方案介于“硬Hash”和“一致性Hash”之间,牺牲了一定的灵活性,但相比“一致性Hash“,数据的管理成本大大降低

可用性:Master-Slave

为了保证服务的可用性,Redis Cluster采取的方案是的Master-Slave
每个Redis Node可以有一个或者多个Slave。当Master挂掉时,选举一个Slave形成新的Master
一个Redis  Node包含一定量的桶,当这些桶对应的Master和Slave都挂掉时,这部分桶对应的数据不可用

Redis Cluster使用异步复制
一个完整的写操作步骤:
1.client写数据到master
2.master告诉client "ok"
3.master传播更新到slave
存在数据丢失的风险:
1. 上述写步骤1)和2)成功后,master crash,而此时数据还没有传播到slave
2. 由于分区导致同时存在两个master,client向旧的master写入了数据。
当然,由于Redis Cluster存在超时及故障恢复机制,第2个风险基本上不可能发生

数据迁移

Redis Cluster支持在线增/减节点。
基于桶的数据分布方式大大降低了迁移成本,只需将数据桶从一个Redis Node迁移到另一个Redis Node即可完成迁移。
当桶从一个Node A向另一个Node B迁移时,Node A和Node B都会有这个桶,Node A上桶的状态设置为MIGRATING,Node B上桶的状态被设置为IMPORTING
当客户端请求时:
所有在Node A上的请求都将由A来处理,所有不在A上的key都由Node B来处理。同时,Node A上将不会创建新的key

多key操作

当系统从单节点向多节点扩展时,多key的操作总是一个非常难解决的问题,Redis Cluster方案如下:
1. 不支持多key操作
2. 如果一定要使用多key操作,请确保所有的key都在一个node上,具体方法是使用“hash tag”方案
hash tag方案是一种数据分布的例外情况

二:redis3.x-cluster集群于spring整合

本篇主要介绍下redis3.x-cluster集群于spring整合 主要依赖的jar包(spring,junit其他相关的略) redis.clients ...

一:redis3.x cluster集群

redis-cluster集群适用于缓存数据量比价大,需要分片存储的场景 下面记录了下测试实验过程 安装环境: centos6.6,redis3.x redis-cluster集群架构图2、red...

windows-x64下redis-cluster集群环境的搭建(一)

1.安装必备的软件Redis 下载最新的redis版本,链接地址为:https://github.com/MSOpenTech/redis/releases 下载后将其解压到指定路径,可得到如下r...

Redis3Cluster的学习笔记

redis3集群模式下的一些好处这是官方给出的:RedisCluster提供了数据在多个redis实例中分片的方式,automatically sharded across multiple Redi...

Redis3自带的ruby脚本和cluster命令的使用

Resharding the cluster所谓的对集群数据进行分片,就是把实例节点的一些hash桶转移到其他实例节点。我们使用ruby脚本进行分片: ./redis-trib.rb reshar...

Redis3缓存集群(cluster)搭建

Redis3以后支持Cluster特性:1.节点自动发现;2.slave->master 选举,集群容错;3.Hot resharding:在线分片;4.进群管理:cluster xxx;5.基于配置...

redis 3.0 cluster 要点

因为是实验性质,所以我是使用一个虚拟机创建了6个redis实例.分别是运行在本机的7001,7002,7003,7004,7005,7006 6个端口上,为3主3从结构1.创建redis-cluste...

redis-cluster 注意点记录

redis cluster注意的问题 : ‘cluster-require-full-coverage’参数的设置。该参数是redis配置文件中cluster模式的一个参数,从字面上基本就能看出它的作...
  • SirLZF
  • SirLZF
  • 2015年12月03日 16:51
  • 4072

Redis-x64-3

  • 2017年11月07日 23:11
  • 4.02MB
  • 下载

Windows下安装部署redis cluster

  • 2016年11月25日 12:02
  • 41.01MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Redis Cluster(Redis 3.X)设计要点
举报原因:
原因补充:

(最多只允许输入30个字)