Redis选主可用性为先(redis选主时可用性)
Redis作为一款常用的高性能key/value存储器,具有运行灵活、格式灵活、易于扩展几大特点,适合用来做缓存、队列、唯一性校验等大量的场景。在Redis的高可用的实践中,引入master-slave的节点模型一般用于支撑Redis的可用性。
Redis的master-slave模式,在实际运行中,由于slave节点延迟、同步耗时、复制问题等原因,会影响业务中数据最终一致性,为了提高数据一致性,Redis引入了Sentinel和cluster模式以保障Redis的高可用性。
当Redis服务处于Sentinel模式或者Cluster模式时,Sentinel和Cluster节点便成为选择读写的居中点,Sentinel节点完成选主切换的相关工作,在redis集群失去一台主节点时,Sentinel会自动的把备份节点切换为主节点。
redis主节点挂掉之后,Sentinel会实时的发现监控的主节点与从节点的数据一致性问题,此时它会进行数据角色的切换,将从节点切换为主节点;
Sentinel会根据复制所用的网络带宽和复制期间slave节点可用性考虑,给出最佳的择主结果;
在主从切换过程中,Sentinel会检查新的主节点是否健康可用,并向客户端广播从节点地址,从而保证数据最终一致性。
redis选主要用于解决Redis可用性问题,在切换主从节点时,Sentinel会自动完成选主切换的工作,同时考虑复制带宽、数据一致性及新主节点的可用性等,从而最终来保证数据最终一致性。