Redis集群介绍

大家好,我是IT修真院上海分院第6期学员,一枚正直善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务1中,jdbc数据库连接池的原理及分析。

一、背景介绍

redis简介:

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库,是目前最流行的NoSQL数据库。众多语言都支持Redis,因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。

为什么使用redis集群?

1、大型网站应用,热点数据量往往巨大,单台redis实例不能满足需求。

2、单台服务主机的内存资源往往是有限制的,通过横向可伸缩扩展,使用多台主机提供服务,能够获得更好的效果。

3、单redis服务一旦宕机、对系统服务会造成性能巨大损失。为了在大流量访问下提供稳定的业务,集群化是存储的必然形态。

二、知识剖析

关于redis的集群化方案,目前有三种:

1、Twitter开发的twemproxy。

2、豌豆荚开发的codis。

3、redis官方的redis-cluster。

twemproxy架构简单,就是用proxy对后端redis server进行代理,但是由于代理层的消耗性能很低,而且通常涉及多个key的操作都是不支持的,而且本身不支持动态扩容和透明的数据迁移,而且也失去维护,Twitter内部已经不使用了。

使用hash slot方式,将16348个hash slot覆盖到所有节点上,对于存储的每个key值,使用CRC16(KEY)&16348=slot,得到他对应的hash slot,并在访问key时就去找他的hash slot在哪一个节点上,然后由当前访问节点从实际被分配了这个hash slot的节点去取数据。

节点之间使用轻量协议通信,减少带宽占用,性能很高,自动实现负载均衡与高可用。

codis使用的也是proxy思路,但是做的比较好,是这两种之间的一个中间级,而且支持redis命令是最多的,有图形化GUI管理和监控工具,运维友好。


redis-cluste集群原理:

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

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

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

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


Redis集群中内置了16384个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。


Redis Cluster主从模式

redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

这样就算主节点挂掉,redis集群也会选择从节点作为新的主节点,保证能够正常提供服务。


redis-cluster投票:容错

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

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

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

可以修改cluster-require-full-coverage参数为true,打开集群兼容部分失败。

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


redis集群搭建:

1、下载安装redis

2、ruby环境

3、配置多个redis节点

4、创建集群

三、常见问题及解决方案

若想使用redis自带的脚本搭建集群,ruby版本必须在2.2以上


四、编码实战

五、拓展思考

六、参考文献

https://www.cnblogs.com/yingchen/p/6763524.html

七、更多讨论

PTT连接:PTT

视频连接:视频

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

直接点击此连接:http://www.jnshu.com/login/1/10985551



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值