首页> 数据库> Redis> 正文

redis cluster集群介绍

发布: 2020-05-18 09:06:30
转载
1781 人浏览过

不同于master-salve 或者 哨兵模式 cluster与他们最大的区别就是 前两种是全量存储 内存消耗大,且存在木桶效应而 cluster集群则是分布式存储 即每台Redis存储不同的内容。

redis cluster集群介绍

redis-cluster被设计为一共有16384个hash slot可用,每个master分得一部分的slot 其分布算法为:【hash_slot = crc16(key) mod 16384】 如果有{}则取{}的可用key,否则整个可以是可用key。集群至少要3主3从,且每个实例使用不同的配置文件。

1.jpg

  1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

  2. 节点的fail是通过集群中超过半数的节点检测失效时才生效。

  3. 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

  4. redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

redis-cluster投票:容错

1、投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉.

2、什么时候整个集群不可用(cluster_state:fail)?

如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态.

redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态。

在redis-cluster架构中,redis-master节点一般用于接收读写,而redis-slave节点则一般只用于备份,其与对应的master拥有相同的slot集合,若某个redis-master意外失效,则再将其对应的slave进行升级为临时redis-master。

在redis的官方文档中,对redis-cluster架构上,有这样的说明:在cluster架构下,默认的,一般redis-master用于接收读写,而redis-slave则用于备份,当有请求是在向slave发起时,会直接重定向到对应key所在的master来处理。

但如果不介意读取的是redis-cluster中有可能过期的数据并且对写请求不感兴趣时,则亦可通过readonly命令,将slave设置成可读,然后通过slave获取相关的key,达到读写分离。

更多redis知识请关注redis入门教程栏目。

以上是redis cluster集群介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:oschina.net
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!