主从复制
image.png- 通过slaveof ip port 设置主从关系。
- 通过psync命令发送已经同步的信息(源id:runid,同步数据的offset),master接收到信息判断源id是否为当前master,则根据offset同步增量数据,否则master生成rdb,全量同步。
- 可以应用在读写分离场景。
哨兵机制
image.png- 哨兵发现主从节点信息。
- 哨兵负责决定客户端连接到哪个服务器,只在master不可用时做重新选择时工作。
- 哨兵集群一个节点不可用,则连接下一个节点。
- 哨兵服务器监控主从服务器的健康状态,发现节点不可用,则询问其他节点监控结果。
- 哨兵集群,一定数量节点(通过配置设置需要确认的数量)确认master不可用,选举一个执行故障转移的哨兵节点。
- 哨兵间通过pub/sub机制(_sentinel_:hello)发布自己信息,订阅其他哨兵节点信息。
- 采用raft算法选举执行故障转移的节点。
- salve选举master节点,首先通过配置的优先级,再则通过offset值最新,再则通过runid按字典序比较。选举后slaveof NO ONE,其他slaveof选举的新master节点。
Redis Cluster
image.png- 启动redis服务实例,通过redis-cli启动集群模式。
- 集群中数据分片存储。
- 通过计算key的hash值确定存储的位置。
- 集群分片默认平均,可以通过reshard指定实例分片数量。
- 节点故障转移过程中存在数据丢失的可能。
- 扩容服务实例,需要通过reshard分配存储信息。
网友评论