redis的几种集群方式
一 单机版
分析:
无论多少用户,都访问这一台服务器 。服务器一旦挂了,所有用户都无法访问。风险很大,一般不会有人使用。
二 主从模式(master/slaver)
分析:
主从模式中,
无论多少用户,都访问这一台服务器。主服务器有读写的能力,从服务器一般只有读的能力。从服务器会定时或在满足一定条件时同步主服务器的数据。这样可以保证数据的安全性。
主服务器一旦崩溃。将不再向用户提供服务。从服务器如果崩溃,将不会影响主服务器和其他从服务器的正常运行。
三 sentinel模式
分析:
哨兵服务器作用:
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
通俗一点将:就是将上面的主从模式加了一个或多个监工(哨兵服务器),哨兵服务器会定时监测各台服务器的运行状态,一旦有服务器下线了,哨兵会将其标记为主观下线。当
一定数量的哨兵都监测到此主机下线后,哨兵们会进行一次投票。重新选举出一个主服务器。并修改各个redis服务器的配置信息。
四 cluster模式
分析:
首先需要引入一个叫【槽位】的名词,槽位的范围是0~16384。每个key都会通过计算规则得到唯一的槽位值。
如上图所示,redis一共有两台主服务器,每台主服务器有两台从服务器。
redis1的槽位值为0~100,redis2的槽位值为101~16384。
举个例子 ,用户做了sey(k1,v1);的操作。 服务器的处理过程是:先计算k1的槽位置,得到结果为4568。根据此槽位置所处的服务器。服务器会将此操作分配到Redis2的主服务器上。所以redis2上会执行sey(k1,v1)的操作,redis2下面的从服务器会进行同步数据的操作。
其他分析:
此模式支持灵活扩展,可以添加或移除redis主服务器。主服务器之间不允许存在相同的槽位值。所有主服务器槽位值的并集应该是0~16384;
每台redis主服务器和其从服务器都是一个小集群。当一台主服务器崩溃时。系统会选择一个从服务器将其升级为redis主服务器。