目前线上redis使用的架构是一主一从+一个哨兵。这个架构很稳定,主从切换做的也很好。但缺点是扩展性不高,会有性能的瓶颈,并且主从切换的速度还不够快。官方出了redis-cluster的方案,自认为感觉不错。可扩展性不说了,其引入了数据槽分片的概念。扩容性做到了,性能也就自然而然上去了。主从切换的速度也加快了。
目前实验环境我用的是3主+3从的概念。如果用官方集群,肯定是要为每个主各分配一个从的。因为数据分片后,每个主节点的是数据不一样的,如果主节点挂掉,没有从节点的话,整个集群就会失效。下面先给出我搭建集群后得到的几个结论。
1.一套主从节点挂掉的话,集群将不可用,这应该是一部分数据丢失的原因;此事重启的话,要先启动主节点。
2.任意一个主挂掉没有问题,并且主从切换的时间在1s之内;
3.3个从节点都挂掉,没有问题;
4.如果你连接了一台从节点去写数据,集群会自动调度到主上面去写数据;
5.3个主节点,数据做分片是不重复的。
下面给出集群搭建的过程。
从官方下载最新的redis包,redis-5.0.3.tar.gz。因为是测试环境,这里我用的是最新的5.0版本。下载后进行解压,并进行make。