Redis集群功能概述
在单机Redis中介绍过Redis的复制特性以及Redis Sentinel和twemproxy,其中:
复制:可以创建指定服务器的复制品,这些复制品可以用户扩展系统处理读请求的能力;
Redis Sentinel:可以在复制特性的基础上,通过监视主从服务器并在主服务器故障时执行自动故障转移来保证系统的可用性;
twemproxy:使用分片策略来讲数据库划分到多个不同的服务器,以此来扩展系统存储的数据量,并通过将命令请求分散给不同的服务器来处理,以此来扩展系统处理命令请求的能力;
但是以上的特性都是独立的,如果我们需要一个完整地包含复制、高可用和分片特性的Redis服务器集群,那么就需要用到Redis的集群(Cluster)特性;
Redis集群
Redis的分布式数据库实现
分布式
Redis集群是一个由多个Redis服务器组成的分布式网络服务器群,集群中的各个服务器被称为节点(Node),这些节点会相互连接并进行通信;
分布式的Redis集群没有中心节点,所以用户不必当心某个节点会成为整个集群的性能瓶颈;
复制
Redis集群的每个节点都有两种角色可选:主节点(master node)和从节点(slave node),其中主节点用于存储数据,而从节点则是某个主节点的复制品;
当用户需要处理更多的请求时,添加从节点可以扩展系统的读性能。因为Redis集群重用了单机Redis复制特性,所以集群的复制行为和单机复制行为是完全一样的;
下图展示了为每个主节点各添加一个从节点:
节点故障检测和自动故障转移
Redis集群的主节点内置了类似Redis Sentinel的节点故障检测和自动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会注意到这一点,并对已下线的主节点进行故障转移;
集群进行故障转移的方法和Redis Sentinel进行故障转移的方法基本一样,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群不必另外使用Redis Sentinel。
举个栗子:当7000下线时,7001和7002会觉察到这一点,并对7000进行故障转移。
分片
集群使用分片来扩展数据库的容量,并将命令请求的负载交给不同的节点来分担;
集群将使用这个数据库分为16384个槽(slot),所有键都属于这16384个槽的其中一个,计算键key属于哪个槽的公式:slot_number = crc16(key)%16384,其中crc16为16位的循环冗余校验和函数;
集群中的每个主节点都可以处理0到16384个槽,当16384个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求;
举个栗子:
有三个主节点7000,7001和7002,那么:
将槽0到5460指派给节点7000负责处理;
将槽5461到10922指派给节点7001负责处理;
将槽10923到16383指派给节点7002复制处理;
这样就可以将16384个槽平均地指派给三个节点负责处理;
转向
对于一个被指派了槽的主节点来说,这个主节点只会处理属于指派给自己的槽的命令请求;
如果一个节点接收到了和自己处理的槽无关的命令,那么节点会向客户端反馈一个转向错误(redirection error),告诉客户端,哪个节点才是负责处理这条命令的,之后客户端需要根据错误中包含的地址和端口号重新向正确的节点发送命令请求;
Redis集群功能概述的更多相关文章
- Redis集群功能预览
目前Redis Cluster仍处于Beta版本,Redis 3.0将会加入,在此可以先对其主要功能和原理进行一个预览.参考<Redis Cluster - a pragmatic approa ...
- 基于Twemproxy的Redis集群方案(转载)
原文地址:基于Twemproxy的Redis集群方案 概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的 ...
- Redis集群方案(来自网络)
参考: https://www.zhihu.com/question/21419897 http://www.cnblogs.com/haoxinyue/p/redis.html 为什么集群? 通常, ...
- Redis总结(八)如何搭建高可用的Redis集群
以前总结Redis 的一些基本的安装和使用,大家可以这这里查看Redis 系列文章:https://www.cnblogs.com/zhangweizhong/category/771056.html ...
- 就publish/subscribe功能看redis集群模式下的队列技术(一)
Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中 ...
- 峰Redis学习(9)Redis 集群(概述)
第一节:Redis 集群概述 redis cluster是去中心化,去中间件的,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态.每个节点都和其他所有节点 ...
- 详细介绍redis的集群功能,带你了解真正意义上的分布式
Redis 集群是一个分布式(distributed).容错(fault-tolerant)的 Redis 实现, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset). ...
- 一种简单实现Redis集群Pipeline功能的方法及性能测试
上一篇文章<redis pipeline批量处理提高性能>中我们讲到redis pipeline模式在批量数据处理上带来了很大的性能提升,我们先来回顾一下pipeline的原理,redis ...
- Redis集群概述
Redis Cluster与Redis3.0.0同时发布,以此结束了Redis无官方集群方案的时代,目前,Redis已经发布了3.0.7版本. redis cluster是去中心化,去中间件的,也就是 ...
随机推荐
- @media_screen
html,body{ margin:0; padding:0; }body{ background:#0f0;} /* @media screen and (min-width: 800px)and( ...
- Jquery幻灯片焦点图插件
兼容IE6/IE7/IE8/IE9,FireFox,Chrome*,Opera的 jQuery. KinSlideshow幻灯片插件,功能很多 ,基本能满足你在网页上使用幻灯片(焦点图)效果. 下载
- [Hibernate] - Annotations - One To One
Hibernate annotation 一对一的两种实现: 1)幅表中有主表的主键ID做为引用 2)幅表的主键即为主表的ID hibernate.cfg.xml <?xml version=& ...
- linux下的php网站放到Windows服务器IIS下导入 .htaccess文件伪静态规则转换 (wordpress)
需要特别注意的是: 1. .htacdess文件在 wordpress中 是可以生成的 安装 WP Super Cache后,开启该插件>>设置>>高级>>找到并点 ...
- 原生视觉差滚动---js+css;
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content ...
- MVC 安装
mvc 4 支持window xp,window 7,window 8, mvc 4 支持vs2010,vs2012 vs2012中包含mvc4; vs2010中需要安装mvc4 安装包:
- Tomcat的ServletAPI与Jetty的不能混用,否则会出现Serlvt类无法编译
- PLSQL_性能优化工具系列02_SQL Tuning Health-Check Script (SQLHC)
2014-08-23 Created By BaoXinjian
- JAVA类的构造方法
1,构造方法没有返回类型, 定义: []public] 方法名() {} 2,一个构造方法如果想调用同一类中的另一个构造方法,只能调用一个,并且要放在构造方法第一行 3,用this调用,如 publi ...
- Win7玩游戏偶尔自动跳转到桌面的解决办法[转]
新装的win7旗舰版SP1,怎么玩wow (魔兽世界.极品飞车.全屏游戏.按键精灵.挂机)总是过一会就自己返回桌面了.刚开始以为是显卡的毛病,更新了驱动还是一样(在这之前,排除病毒,其他驱动问题).因 ...