Redis的三种模式
一、cluster的架构变化
1、单机redis:redis单机模式,保证了数据的一致性而牺牲了可用性,即不能够实现高可用,只是保证了用户可以看到相同的数据和当网络通信出问题是能够保证隔离的子系统能够继续运行,因为在单机模式中master与slave之间不存在通信问题 所以当master节点挂掉以后子节点不能保证能够正常的提供服务
2、哨兵redis:哨兵在单机redis上做了些许改动增加一个sentinel也就是哨兵来实现redis的可用性,让单机的redis的master和slave之间存在通信,实现了故障转移从而实现了高可用性,不过哨兵的缺点也显而易见,那么redis作为一个内存服务器每个节点的数据都是全量复制,哨兵的存储受限于内存最小的节点,并且在故障转移的过程中存在一瞬间的访问瞬断情况,只有一个数据节点对外服务无法应对高并发的访问,而且单个节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。
3、集群模式:集群模式才采用数据分片的方式存储,即采用虚拟槽分区所有的键值根据哈希算法映射到数据槽内,每个节点负责维护一部分的槽及槽锁映射的键值数据,这使得redis由一个单纯的nosql内存数据库变为一个分布式的nosql数据库使redis具有了分区容忍性,并且实现了负载均衡,当某个节点挂了以后数据在其他节点上具有备份并且这个节点马上就可以投入使用,实现了高可用性也正是因为这一点redis失去了数据的强一致性
4、CAP理论:
Redis单机模式:实现了数据的一致性Consistency(一致性)
redis哨兵模式:实现了数据的一致性和高可用性 Consistency(一致性)、Availability(可用性)
redis 集群模式:实现了分区容忍性和高可用性 Availability(可用性)、Partition Tolerance(分区容错性)
分区容忍性:指分布式系统中的节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信,在分布式系统中,分区容忍性必不可少,因为需要总是假设网络是不可靠的。因此,CAP 理论实际上是要在可用性和一致性之间做权衡。
二、集群模式的原理
1、基本通信原理:gossip协议Goosip协议维护集群数据更新
Goosip协议也可以叫流言协议Gossip 过程是由种子节点发起,当一个种子节点有状态需要更新到网络中的其他节点时,它会随机的选择周围几个节点散播消息,收到消息的节点也会重复该过程,直至最终网络中所有的节点都收到了消息。这个过程可能需要一定的时间,由于不能保证某个时刻所有节点都收到消息,但是理论上最终所有节点都会收到消息,因此它是一个最终一致性协议。
2、 存储原理:Redis Cluster 采用虚拟哈希槽分区,所有的键根据哈希函数映射到 0 ~ 16383 整数槽内,计算公式:slot = CRC16(key) & 16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐