Redis Cluster 初识

Redis Cluster 解决的问题:

  • 单机已经sentinel 都无法提高 并发量,而Cluster 可以动态的扩充节点增加并发量
  • 单机以及sentinel 本地存储的数据量也是有限的,而Cluster 可以动态的扩充节点存储的数据量

 

数据分布

 

当单机情况无法满足全量数据的存储,这时我们就需要-数据分区

常用的分区方式:  顺序分区 、哈希分区

 

                                                                                    常用分区对比

分布方式特点典型产品
哈希分布

数据分散度高

键值分布业务无关

无法顺序访问

支持批量操作

redis cluster

一致性哈希Memcache

顺序分布

数据分散度易倾斜

键值业务相关

可顺序访问

habse  BigTable

哈希分布-节点取余分区

进行多倍扩容

 

节点取余:

  • 客户端分片:哈希+取余
  • 节点伸缩:数据节点关系变化,导致数据迁移
  • 迁移数量和添加节点数量有关:建议翻倍扩容

哈希分布-一致性哈希

解决了像节点取余时动态添加节点 带来的大量数据迁移的问题。

  1. 首先求出节点的哈希值,并将其配置到02^32的圆(continuum)上。
  2. 然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
  3. 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。

 

    这时动态添加node5节点,这时扩容带来的数据迁移量较小,如下图:

 

一致性哈希:

  • 客户端分片:哈希+顺时针(优化取余)
  • 节点伸缩:只影响临近节点,但是还是有数据迁移
  • 翻倍伸缩:保证最小迁移数据和负载均衡

 

虚拟槽分区:

  • 预设虚拟槽:每个槽映射一个数据子集,一般比节点数大
  • 良好的哈希函数:例如CRC16
  • 服务端管理节点、槽、数据:例如redis cluster

 

分布式构架:

  • 集群中每个节点都对外 提供读写操作

  • 集群中每个节点通过gof 协议进行通信(meet)

  • 集群中节点通过哈希槽进行分配的

  • 集群中每个节点通过也有主从复制,只不过没采用sentinel方式去监控节点,而是通过节点间通信的方式

 

Redis Cluster 特性

1.主从复制

2.高可用

3.分片

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值