大约 1 分钟
reids的集群的脑裂是什么(双主或多主)
主从集群中,同时存在两个或多个主节点,它们都能接收写请求。
客户端不知道应该往哪个主节点写入数据,导致数据不一致或者数据丢失。
产生的原因
- 网络问题:leader无法通信,哨兵将从节点升级为主节点,
- 哨兵配置异常。(导致将多个从节点提升为主节点)
如何避免脑裂
- 配置合理的哨兵参数: min-slaves-to-write:这个配置项设置了主库能进行数据同步的最少从库数量,即至少要保证N个从库能进行数据同步; min-slaves-max-lag:这个配置项设置了主从库间进行数据复制时,从库给主库发送 ACK 消息的最大延迟(以秒为单位)
主库连接的从库中至少有 N 个从库,数据复制时 ACK 消息延迟不能超过 T 秒,否则,主库就不会再接收客户端的请求了。
保证了有N个从库并且T秒内从库回应主库,才会写数据
- Redis Cluster模式可以避免脑裂的发生:Redis Cluster模式:Redis Cluster模式是一个去中心化的模式,没有leader节点,因此不会发生脑裂