redis实战--redis cluster的原理分析

why redis cluster

之前我们以前了解过主从复制,读写分离的架构,他就能够支持一定数据量的场景;为什么我们还需要搭建redis cluster的集群呢?

如果我们的缓存数据量只有几个G ,那么基于单master的主从架构是足够满足我的需求,可以搭建一主多从的架构,通过搭建sentianl集群来保证redis主从架构的高可用性;后续可以通过增加从节点的数量来保证读的性能。

但是如果我们是海量数据的场景,还需要支持高可用,高并发啊,那么之前说的架构是有单机的瓶颈(即存储的数据量不能超过master所在服务器的物理内存)。所以说无法支持海量数据的高并发以及高可用的场景,这时候就需要redis cluster出马。

什么是redis cluster

概括来说就是通过hash slot算法,将数据切割到每个master节点上;通过内置的高可用支持,部分master不可用的时候,整个集群还可以继续work。
在redis cluster架构中,每个redis需要开发2个端口,一个用来与客户端通信;另外一个就是用来与各个节点间通信的,也就是cluster bus(集群总线)

redis的hash slot算法:
其实是一致性hash的加强版,将redis的key空间分割为16384个槽位,然后计算每个key的CRC16值,然后对16384取模,获取到key对应的hash slot。

reids cluster中的每个master都持有部分slot;会将16384个槽位(slot)几乎平均分配到几个master中,如果新增一个master,那么会将其他master的hash slot移动过去;如果是减少master,会将该master的hash slot移动到其他的master中。

总结:

redis cluster 支持master和slave主从复制,读写分离;另外他们也可以支持高可用和主备切换;多个master支持基于hash slot算法的分布式数据存储。

你可能感兴趣的:(Redis)