跳转至

redis 集群篇

Redis群集

我们日常在对于redis的使用中,经常会遇到一些问题:

  • 高可用问题,如何保证redis的持续高可用性。
  • 容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。
  • 并发性能问题,redis号称单实例10万并发,但也是有尽头的。

Redis cluster介绍

Redis cluster 是redis的分布式解决方案,在redis3.0版本中正式推出的采用的是hash slot(hash槽),可以将多个Redis实例整合在一起,形成一个集群,也就是将数据分散到集群的多台机器上。有效的解决了redis分布式方面的需求,当遇到单机内存、开发、流量等瓶颈时,可以采用cluster架构达到负载均衡的目的。

redis-cluster的优势:

  • 1.官方推荐,毋庸置疑。
  • 2.去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。
  • 3.管理方便,后续可自行增加或摘除节点,移动分槽等等。
  • 4.简单,易上手。

Redis数据分布

分布式数据库主要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。常见的分区规则有哈希分区和顺序分区。Redis cluster采用哈希分区规则,因此接下来会讨论哈希规则,常见的哈希分区有以下几种:(redis cluster采用虚拟槽分区)

  • 1.节点取余
  • 2.一致性哈希分区
  • 3.虚拟槽分区

虚拟槽分区

虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定的范围内的整数集合。Redis Cluster槽的范围是0-16383。槽是集群数据管理和迁移的基本的单位。采用大范围槽的主要目的是为了方便数据的拆分和集群的扩展(同时这也是redis的优点),使每个节点负责一定数量的值。

Redis集群原理

Redis cluster是一个无中心的结构,其每一个节点都会保存着数据和整个集群的状态。每个节点都会保存其他节点的信息,知道其它节点所负责的槽,并且会与其他节点定时发送心跳信息能够及时感知整个集群中异常的节点。

回到页面顶部