11.11 Redis 哨兵机制和集群有什么区别
难度:★★★
重点:★★
白话解析
前面的题目都是Redis的原理,接下来就是实际使用的问题了,首先Redis为了保证高可用,在微服务场景下必须是部署集群的,而Redis的集群部署通常就两种方式:主从和Redis Cluster。
参考答案
1、主从模式只能是一主一从或者一主多从,没办法多主多从的。它的特点就是:
-
主节点负责读写,从节点负责读。
-
主节点发生写操作会通过异步线程更新到从节点。
-
主从模式下,没有容错和恢复功能的,一旦主节点挂了,不会自动在从节点中选择主,导致后续客户端所有写请求直接失败。为了解决这个问题才引出了哨兵。
-
哨兵的功能就是为了监听主节点是不是还正常,如果不正常了,会从从节点里面选择一个新的主。但是哨兵模式也有问题,它无法做到分片的功能,依然是一个主,没办法多主同时写,这个时候才引出了Redis Cluster
2、Redis Cluster:多主多从,通过虚拟槽实现不同的数据写入不同的主以达到分片的思想。
-
分片:分片要做的事情就是要把不同的数据放到不同的Redis服务器上去。分的方式是通过取模,先得到key的hash值,然后取模,假如有3台主,那么取模后得到0-2的值,每个值代表一台主节点。
但是这种取模有一个问题,假如我做了主的扩容与缩容,那么全部数据要进行迁移。假如我之前是3台