Redis-Cluster集群原理
一、redis-cluster
官方推荐的 redis 集群解决方案,优点在于去中心化, 去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。理论上最大可以有 16384 个节点,性能随着节点的增加而增加。后续可自行增加或者删除节点,移动槽( slot 一共16384 个槽 )等等。
需要注意的是:必须要3个或以上
的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。
二、redis-cluster 架构图
1、所有 redis 集群彼此互联,通过 ping-pong 命令确定彼此的健康状态,内部使用二进制协议优化传输速度和带宽。
2、客户端与 redis 集群连接,不需要中间 proxy 层,客户端不需要连接集群所有节点,连接集群中任何一个节点即可。
三、redis-cluster 投票容错机制
当黄色节点通过 ping-pong 命令,发现红色节点挂了,就会向其他节点广播。其他节点通过 ping-pong 命令去检测红色节点。当多数节点都 ping 不通红色节点的时候,该集群系统就会认为红色节点挂了。红色节点的备份节点就会自动顶上来。如果没有备份节点,或者备份节点也都挂了,该集群就挂了。
1、节点的 fail 状态是通过集群集群中超过半数的节点检测失效时才生效的。
2、redis-cluster 把所有的物理节点映射到槽( slot )上。
redis 集群中内置了 16384 个哈希槽,当需要在 redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的 hash 槽上,redis 会根据节点的数量大致均等的将 hash 槽映射到不同的节点上
Redis-Cluster集群原理的更多相关文章
- Redis cluster集群:原理及搭建
Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...
- redis cluster集群的原理
redis集群的概述: 在以前,如果前几年的时候,一般来说,redis如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有.有一些red ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- Redis Cluster集群搭建与应用
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
- Redis Cluster集群知识学习总结
Redis集群解决方案有两个: 1) Twemproxy: 这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前很多应用者都在采用的解决方案.Twem ...
- Redis Cluster集群搭建<原>
一.环境配置 一台window 7上安装虚拟机,虚拟机中安装的是centos系统. 二.目标 Redis集群搭建的方式有多种,根据集群逻辑的位置,大致可以分为三大类:基于客户端分片的Redis ...
- redis集群与分片(2)-Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- Redis Cluster 集群使用(3)
简介 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用(HA),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Shar ...
- Ubuntu 16.04下Redis Cluster集群搭建(官方原始方案)
前提:先安装好Redis,参考:http://www.cnblogs.com/EasonJim/p/7599941.html 说明:Redis Cluster集群模式可以做到动态增加节点和下线节点,使 ...
随机推荐
- iOS 8 中 UIAlertView 和 UIActionSheet 河里去了?
iOS 8 中 UIAlertView 和 UIActionSheet 河里去了? 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...
- [Oracle]行列转换(行合并与拆分)
使用wmsys.wm_concat 实现行合并 在 Oracle 中, 将某一个栏位的多行数据转换成使用逗号风格的一行显示.能够使用函数 wmsys.wm_concat 达成. 这个在上一篇 or ...
- Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft.Build.En
错误具体信息: Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft. ...
- 面向对象的三大特性之二——继承(含super的使用)
1.继承的语法:class 子类 extends 父类 例1: class Person { int age; String name; public void print1() { System.o ...
- oc21--super
// // Phone.h #import <Foundation/Foundation.h> typedef enum { kFlahlightStatusOpen, kFlahligh ...
- 高效管理 Elasticsearch 中基于时间的索引——本质是在利用滚动模式做数据的冷热分离,热索引可以用ssd
高效管理 Elasticsearch 中基于时间的索引 转自:http://stormluke.me/es-managing-time-based-indices-efficiently/ 用 Ela ...
- P4396 [AHOI2013]作业 分块+莫队
这个题正解是莫队+树状数组,但是我个人非常不喜欢树状数组这种东西,所以决定用分块来水这个题.直接在莫队维护信息的时候,维护单点同时维护块内信息就行了. 莫队就是这几行核心代码: void add(in ...
- JPA设置表名和实体名,表字段与实体字段的对应
转自:https://blog.csdn.net/LQW_java_home/article/details/53079363 首先 你的jpaProperties配置项中要有 <prop ke ...
- [jqpolt] formatString 日期格式化列表
// 年 %Y 2008 %y 08 // 月 %m 09 %#m 9 %B September %b Sep // 日 %d 05 %#d 5 %e 5 %A ...
- if,elif,else的关系 input print int的用法
qian=input("找劳保网是什么网站?:")if qian=="zhaolaobaowang.com": print("正确")els ...