上篇文章《Redis主从复制》中我们说到可以对Redis单节点数据进行备份实现Redis高可用,但是如果master节点宕机并不会自动做故障切换等,导致项目中更可能需要接入多数据源,编写代码实现故障切换非常麻烦,Redis考虑到这个问题提供了哨兵模式,也就是Redis Sentinel!
Redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片等特性,集群模式没有中心节点,可水平扩展,根据官方文档称可以线性扩展到上万个节点,但是水平扩展相对比较麻烦,接下来带大家看看如何做Redis高可用集群水平扩展。
在redis3.0之前, 要实现集群一般是通过哨兵sentinel工具来监控master节点的状态, 如果master节点出现异常, 则会出现主从切换, 将一台slave作为master, 哨兵的配置略为复杂, 并且性能和高可用等方面表现的一般, 特别是在主从切换的那十几秒访问是中断的, 而且哨兵模式只有一个主节点对外提供服务, 无法支持很高的并发, 并且单个主节点内存也不宜设置过大, 否则会持久化文件过大, 影响数据恢复或者主从同步的效率.