redis cluster

redis replication,单master数据容量有限,要支撑海量数据,只能使用redis cluster。

  • hash算法

来了一个key,计算hash值,对节点数量取模。缺陷:只要任一master宕机,那么剩下三分之二的数据都要重新哈希计算。这个很不好。在上述过程没完成前,几乎缓存100%不可用。

  • 一致性hash算法+虚拟节点

哈希环,保证任何一个master宕机,只有之前在master上的数据会受到影响,因为照着顺时针走,全部在之前master上找不到了,master宕机了,会走到下一个master上去,但是也找不到。使用虚拟节点,均匀分布在哈希环中,避免某区间数据全部落在单个节点上。

  • hash slot算法

来了一个key,计算hash值,对hash slot取模。而hash slot是分配到不同的redis 实例中的,当某台实例宕机后,只有该实例上的那部分数据会丢失,而不会像哈希算法一样出现全部缓存不可用的情况。

  • redis cluster节点通信

采用gossip,与集中式的快速感知不同,它降低了集中式的压力,但是元数据更新有所延时。

  • smart jedis

在JedisCluster初始化的时候,会随机选择一个node,初始化hashslot->node映射表,同时为每个节点创建一个JedisPool连接池,每次基于JedisCluster执行操作,首先JedisCluster都会在本地计算key的hashslot,然后在本地映射表找到对应的节点,如果那个node正好还是持有那个hashslot,那么就ok;如果说进行了reshard这样的操作,可能hashslot已经不在那个node上,就会返回moved,此时Jedis API会借助该节点更新自己的本地映射表。

  • 高可用性与主备切换原理

主观宕机;客观宕机;从节点过滤,如果超过cluster-node-timeout * cluster-slave-validity-factor,那么就没有资格成为master;从节点选举,按slave priority;offset;run id进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值