redis-cluster

来源:本站原创 Linux 超过210 views围观 0条评论

一,为什么要用redis-cluster

1.并发问题
redis官方生成可以达到 10万/每秒,每秒执行10万条命令
假如业务需要每秒100万的命令执行呢?

2.数据量太大

一台服务器内存正常是16~256G,假如你的业务需要500G内存,你怎么办?解决方案如下

  1. 配置一个超级牛逼的计算机,超大内存,超强cpu,但是问题是。。。。

2.正确的应该是考虑分布式,加机器,把数据分到不同的位置,分摊集中式的压力

二,客户端分片

redis实例集群主要思想是将redis数据的key进行散列,通过hash函数特定的key会映射到指定的redis节点上

数据分布

顺序分区

哈希分区(redis-cluster用的是哈希分区)

节点取余

 

计算示例 

节点  0 1 2

对1到6取余

1  1/3 =1  对应 节点1

2  2/3 =2 对应 节点2

3  3/3 =0  对应 节点0

4  4/3 =1

5  5/3 = 2

6  6/3 = 0

 

 

 

例如按照节点取余的方式,分三个节点

1~100的数据对3取余,可以分为三类

  • 余数为0
  • 余数为1
  • 余数为2

那么同样的分4个节点就是hash(key)%4

节点取余的优点是简单,客户端分片直接是哈希+取余

一致性哈希

客户端进行分片,哈希+顺时针取余

 

是个封闭 环

 

虚拟槽分区
每一个数据的键被哈希函数映射到一个槽位,redis-cluster规定一共有16384个槽位

三,搭建集群

单机模式

分布式架构

分布式架构

多个服务端,负责读写,彼此通信,redis指定了16384个槽,ruby的脚本自动就把分配槽位这事做了

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文标题:redis-cluster
本文链接:http://www.jdccie.com/?p=4190转载请注明转自CCIE那点事
如果喜欢:点此订阅本站