当前位置: 首页 > article >正文

redis - 集群知识

主从同步

增量同步

主节点会把变更的指令记录在本地的buffer中,然后异步的同步到从节点。从节点同步后会告诉主节点同步的偏移量。

buffer是一个定长的环形数组,如果从节点的同步速度小于主节点的写入速度,buffer会覆盖前面的内容。

此时需要全量同步

快照同步(全量)

其实就是rdb文件。

从节点同步时会清除节点数据后再开始同步。全量同步期间,主节点的修改仍然在进行,如果再次期间,buffer再次被覆盖,会再次触发全量同步。

Cluster

分槽

Cluster 将所有数据划分为16384个槽位,每个节点负责一部分槽位。

client连接集群时,会得到集群的槽位配置信息,保存在本地,下次请求的时候就可以明确节点(对key进行hash运算,然后16384进行取模运算)。

重定向

当客户端向一个错误的节点发送指令后,会收到MOVED的返回指令,随后客户端会更新自己的槽位配置。

迁移

cluster 提供工具 redis-trib 可以手动的调整槽位的分配关系,迁移是以槽为单位的。

迁移的过程:从源节点获取内容-存到目标节点-从源节点删除

删除的过程是阻塞的,直到删除完成。所以,如果遇到大key,可能会导致节点阻塞

在迁移的过程中,客户端可以正常访问。客户端先尝试访问旧节点,如果数据还在,那就正常返回;如果数据不在,会返回**-ASK**(因为旧节点不知道是数据不存在还是已经迁移到新的节点上了)。此时,客户端先去目标节点发送不带任何参数的ASKING,然后再进行正常的请求。

原因是,在迁移完成之前,目标节点不会管理新的槽位,如果此时正常请求目标节点,会返回MOVED,然后客户端又要重新请求旧的节点。此时重定向循环,所以要实现告诉从节点要把这个槽位当成是自己的来处理。

容错

集群中的每个节点可以设置多个从节点,当主节点发生故障后,集群会自动升级某个从节点为主节点,如果没有从节点,集群将是不可以用的状态。

怎么确定节点故障??

如果一个节点发现某个节点失联了,会向整个集群进行广播,这样别的节点可以收到这条广播。如果大多数的节点都认为失联了,则可以对外公布进行主从切换了

感知(槽位迁移感知和集群变更感知)

槽位迁移:

上面说了,节点有两个特殊的error指令 MOVED和ASK,其中只有MOVED会更新客户端的槽位配置。ASK并不会影响后续的指令,如果迁移完成,再次访问后同样会收到MOVED的指令,然后在更新槽位配置即可。

集群变更感知
两种场景:

  1. 目标节点挂了:客户端会抛出连接异常,紧接着会随机挑算一个节点去重试,如果这个节点上没有数据,则返回MOVED 告知客户端正确的节点,客户端即可更新。
  2. 运维下掉某个节点:客户端访问后会收到clusterDown的错误,此时客户端会关闭所有的连接并清空槽位配置信息,然后向上层抛出异常,等下次请求到来的时候会重新初始化节点信息

http://www.kler.cn/a/461639.html

相关文章:

  • Swift Combine 学习(五):Backpressure和 Scheduler
  • Redission红锁
  • Java重要面试名词整理(十八):Sentinel
  • df.set_index(‘name‘).groupby(‘team‘).apply(first_3, ‘Q1‘)
  • MySQL 05 章——排序与分页
  • Tailwind CSS 实战:动画效果设计与实现
  • Vue强制渲染组件部分:技巧详解与实战应用
  • 水库水雨情监测系统:水位、雨量、流量等参数全天候实时监测
  • ubuntu安装qt creator 并配置交叉编译环境
  • 生物信息-linux-centos8-安装blast
  • PageView组件的用法
  • Java开发-后端请求成功,前端显示失败
  • Scrapy和Selenium结合使用完整步骤
  • [微服务] - MQ入门
  • 19704 团建
  • Arduino 小白的 DIY 空气质量检测仪(3)- TVOC模块、CO2模块
  • Ungoogled Chromium127编译指南 Linux篇 - Docker简介(五)
  • R语言入门笔记:第一节,快速了解R语言——文件与基础操作
  • [C#] 「Unity」「游戏开发」如何在Canvas下的Button控件下实例化Image元素
  • 【Python】 glob批处理模块的学习
  • 如何使用C++ 实现类似 Qt 的信号与槽机制
  • 碰一碰矩阵发视频的技术开发,支持OEM
  • I.MX6ULL-GPT实现延时
  • 亚矩阵云手机技术形态与应用方向
  • STM32闭环控制直流电机和LCD界面方案
  • 路由器和交换机之作用、区别(The Role and Difference between Routers and Switches)