redis高可用cluster

redis3之后有了集群功能。

0.解决问题
redis单点问题,单台redis容量上限问题。
1.解决思路
无中心选举,多组master/slave架构。
2.请求set流程/请求get流程
客户端保留redis集群相应结点ip,port及其它信息。
一个set请求,首先会对key做hash,得到一个int值,再找到对应结点。
然后做set操作。

请求get流程类似,用JedisCluster客户端slave只做冷备。

3.slot数量
共16383个。

4.稳定架构
多组master/slave,至少3组才能使集群有效。
其中如果某组的master挂了后,
在设置的参数:cluster-node-timeout  超时后,剩余的master会进行选举对应挂掉的master的slave。
提升这个挂掉的master下属的哪个slave,就是一个一致性值的问题。
当超过半数集群组数的master同意某个slave成为leader,则最终这个slave会提升为leader。

5.redis cluster优缺点
优点是可以保证消除单点的问题上,解决分片问题,简化架构,性能相比sentinal或codis方案高。
并且原先sentinal本身是一个独立进程。

传统的redis要消除单点问题就要引入sentinal,多了层中间代理。
分片传统一般用twemproxy,相当于又多了个代理层。
cluster分片在客户端进行,基于类似一致性hash。
twemproxy 不支持运行时水平扩容,需要重启。
sentinal用的是raft选举。

而缺点就是其中某组master/slave不可用则会出现整个集群不可用。

猜你喜欢

转载自blog.csdn.net/zhaozhenzuo/article/details/77131146