Redis集群技术架构

1、无中心化

  • Redis Cluster采用无中心架构,每个节点都保存数据和整个集群的节点状态
  • 每个节点都和集群中的其它节点保持连接
  • 使用gossip协议传播信息以及发现新的节点
  • 节点不作为client请求的代理,client应该根据节点返回的错误信息重定向到目标client

2、数据分布(slot)

redis预设16384个slot(槽),集群中的每个master节点负责分管一部份slot,保存数据时,根据CRC16(key) mod 16384的值,决定将一个key放到哪个槽中,从而定位由哪个redis实例存储。当发生Redis节点增减时,调整桶的分布即可,实现了集群的动态扩容功能。同时也间接的说明redis集群最多只能有16384个节点。
例如:假设Redis集群有三个节点A/B/C,在开始创建的时候,集群中节点槽的分配如下:
Node A 分管slot的编号为:0 ~ 5460
Node B 分管slot的编号为:5461 ~ 10922
Node C 分管slot的编号为:10923 ~ 16383
当添加一个新的master节点D,假设为它分配900个slot,你可以从节点ABC三中各取300个分配给D,也可指定从A或B或C中移出900个slot分配给D,或选其中几个节点中各取一部份凑够900个分配给D即可。同样的,如果要将D节点移除,需要先将D节点分管的slot全部分配到其它master节点后才能移除,否则有无效的slot,集群将无法服务。

3、可用性:Master-Slave

  • 为了保证服务的可用性,Redis Cluster采取的方案是Master-Slave机制
  • 每个Redis Master Node可以有一个或者多个Slave Node。当Master Node挂掉时,会从Slave Node中选一个新的Master
  • 每个Master Node都负责分管一定范围的slot,当这些slot对应的Master和Slave都挂掉时,这部份slot对应的数据将不可用
  • 16384个slot必须被全部分配,否则集群将不可用。通过cluster info查看集群状态可以得知。

4、写

Redis Cluster采用异步复制机制
一个完整的写操作步聚:
1. client写数据到master
2. master回复client “OK”
3. master将数据传播更新到slave

存在数据丢失的风险:
1. 上述步聚1)和2)成功后,如果此时master crash,而数据还没有传播到slave。此时slave选主为master,但那部份数据可能就被丢失了。
2. 由于分区导致同时存在两个master,client向旧的master写入了数据
当然,由于Redis Cluster存在超时及故障恢复机制,第2个风险基本上可以忽略不计

5、数据迁移

Redis Cluster支持在线增、减节点。基于slot的数据分布方式大大降低了迁移成本,只需将数据slot从一个redis node迁移到另一个redis node即可完成迁移工作 。

当slot从一个Node A向另一个Node B迁移时,Node A和Node B都会有这个slot,Node A上slot的状态设置为MIGRATING,Node B上的状态被设置为IMPORTING。此时当客户端请求时,所有key在Node A上的请求都由A来处理,所有不在A上的key都由Node B来处理。同时,Node A上将不会创建新的key。

6、客户端操作的一些缺陷

  • 不支持多数据库,默认只有一个0号db,select 0
  • cluster环境下slave默认不接受任何读写操作,在slave执行readonly命令后,可执行读操作。执行readwrite命令后,可执行读写操作。
  • client端不支持多key操作(mget,mset等),但当keys集合对应的slot相同时支持mget操作。

    Redis集群技术架构

文章链接: https://www.mfisp.com/13636.html

文章标题:Redis集群技术架构

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
建站教程投稿分享

Redis集群管理(二)

2022-12-2 0:24:47

建站教程投稿分享

MySQL用户权限管理

2022-12-2 0:33:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
客户经理
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠