`

Redis Cluster原理

阅读更多

Redis Cluster 是Redis的集群实现,内置数据自动分片机制,集群内部将所有的key映射到16384个Slot中,集群中的每个Redis Instance负责其中的一部分的Slot的读写。

 

集群客户端连接集群中任一Redis Instance即可发送命令,当Redis Instance收到自己不负责的Slot的请求时,会将负责请求Key所在Slot的Redis Instance地址返回给客户端,客户端收到后自动将原请求重新发往这个地址,对外部透明。一个Key到底属于哪个Slot由crc16(key) % 16384 决定。

 

 

  关于负载均衡,集群的Redis Instance之间可以迁移数据,以Slot为单位,但不是自动的,需要外部命令触发。

 

 

  关于集群成员管理,集群的节点(Redis Instance)和节点之间两两定期交换集群内节点信息并且更新,从发送节点的角度看,这些信息包括:集群内有哪些节点,IP和PORT是什么,节点名字是什么,节点的状态(比如OK,PFAIL,FAIL,后面详述)是什么,包括节点角色(master 或者 slave)等。

 

 

  关于可用性,集群由N组主从Redis Instance组成。主可以没有从,但是没有从 意味着主宕机后主负责的Slot读写服务不可用。一个主可以有多个从,主宕机时,某个从会被提升为主,具体哪个从被提升为主,协议类似于Raft,参见这里。如何检测主宕机?Redis Cluster采用quorum+心跳的机制。从节点的角度看,节点会定期给其他所有的节点发送Ping,cluster-node-timeout(可配置,秒级)时间内没有收到对方的回复,则单方面认为对端节点宕机,将该节点标为PFAIL状态。通过节点之间交换信息收集到quorum个节点都认为这个节点为PFAIL,则将该节点标记为FAIL,并且将其发送给其他所有节点,其他所有节点收到后立即认为该节点宕机。从这里可以看出,主宕机后,至少cluster-node-timeout时间内该主所负责的Slot的读写服务不可用。

分享到:
评论

相关推荐

    Redis Cluster的实现机制和原理

    Redis Cluster主要特性和设计,Redis Cluster主要特性和设计

    redis 集群原理

    redis 集群原理 redis 集群原理 redis 集群原理 redis 集群原理

    25_你能聊聊redis cluster集群模式的原理吗?.zip

    https://mp.csdn.net/console/uploadResources?spm=1011.2124.3001.4171

    Redis Cluster集群数据分片机制原理

    Redis Cluster数据分片机制 Redis 集群简介 Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求。 Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能...

    RedisCluster分区实现原理

    这篇文章通过了解这些问题来认识RedisCluster分区实现原理。RedisCluster是由多个同时服务于一个数据集合的Redis实例组成的整体,对于用户来说,用户只关注这个数据集合,而整个数据集合的某个数据子集存储在哪个...

    03-Redis Cluster集群运维与核心原理剖析.zip

    03-Redis Cluster集群运维与核心原理剖析.zip

    Redis连接池的介绍和原理.go

    Redis连接池介绍和原理

    Redis Cluster Guide

    介绍了redis集群的原理和内部实现的流程,有助于进行redis集群的部署

    Redis Cluster添加、删除的完整操作步骤

    主要给大家介绍了关于Redis Cluster添加、删除的完整操作步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习下吧。

    redis cluster

    一、redis cluster数据切片 1、最老土的哈希: 2、一致性哈希: 此哈希算法存在同一个master内可能有太多的数据,可以用虚拟节点解决。 3、哈希slot算法: 此算法也是为了解决同一个master内有大量的数据。 二、...

    Tomcat7基于Redis的Session共享

    <Valve className="com.usky.tomcat7rediscluster.RedisSessionHandlerValve"/> <Manager className="com.usky.tomcat7rediscluster.RedisSessionManager" host="127.0.0.1" port="6379" database="0" ...

    redisStudy.zip

    基本回答:Rediscluster是一个高可用集群,它基于分片(对key进行crc16,然后对16384取余)的原理,可以把他理解为是由多组哨兵集群组成,但是它不依赖哨兵 6.缓存穿透 缓存穿透指的是使用不存在的key进行大量的...

    learning-notes:学习一些东西

    learning-notes分布式1.Lambda表达式Java基础JVM设计模式数据库并发微服务消息队列1.RabbitMq缓存1.Redis集群方式(主从复制,哨兵模式和Redis-Cluster集群)2.Redis内存回收机制3.Redis笔记4.Redis Cluster原理5....

    Tomcat8基于Redis的Session共享

    <Manager className="com.sophy.tomcat8rediscluster.RedisSessionManager" host="127.0.0.1" port="6379" database="0" maxInactiveInterval="60" /> 3.自定义部分 如果自己想定义存储的话,可以继承代码...

    Redis从入门到高可用分布式

    第1章 Redis初识 ...第7章 Redis复制的原理与优化 第8章 Redis Sentinel 第9章 初识Redis Cluster 第10章 深入Redis Cluster 第11章 缓存设计与优化 第12章 Redis云平台CacheCloud 第13章 课程总结

    Redis从入门到高可用视频.zip

    目录网盘文件永久链接 ...第7章 Redis复制的原理与优化 第8章 Redis Sentinel 第9章 初识Redis Cluster 第10章 深入Redis Cluster 第11章 缓存设计与优化 第12章 Redis云平台CacheCloud 第13章 课程总结

    高效异步redis客户端aredis优劣势原理解析

    背景 aredis 是一款由同步的 redis 客户端 redis-py 改写而成的高效的异步 ...具体姿势可以参阅项目文档和例子,接口向下兼容 redis-py,支持 Python 3.5 及以上版本,在最新的 1.0.7 版本中也支持 redis cluster,

Global site tag (gtag.js) - Google Analytics