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

【学习笔记】Redis学习笔记——第17章 集群

第17章 集群

17.1 节点

使用cluster meet命令将其他节点添加到当前节点集群中

17.1.1 启动节点

通过cluster-enabled设置来决定是否启用集群

17.1.2 集群数据结构

每个节点都保存了自己及其他节点的IP端口号等信息

17.1.3 cluster meet命令的实现

是收到命令的节点和新节点握手建立连接,并传播这个节点给其他集群节点握手认识

17.2 槽指派

整个数据库为16384个槽(即常说的桶),每个节点处理0-16384个槽,当有槽未被指派时,整个集群处于下线状态

17.2.1 记录节点的槽指派信息

一个二进制的数组,如果相对位置上值为1,则代表需要处理该槽

17.2.2 传播节点的槽指派信息

节点会将自己处理的槽信息发给其他节点

17.2.3 记录集群所有槽的指派信息

每一个节点都记录了每个槽是由哪个节点来处理

17.2.4 Cluster addslot命令的实现

1>检查指派的槽是否是未指派状态
2>分配并记录在clusterNode中

17.3 在集群中执行命令

17.3.1 计算键属于哪个槽

通过Key计算出一个0-16383的值来决定键属于哪个槽

17.3.2 判断槽是否由当前节点负责处理

查看键的槽计算值是否有自己处理,否则的话引导向负责该槽处理的节点

17.3.3 Moved错误

如果访问的节点不负责处理这个槽,会返回Moved错误引导客户端访问正确的节点,在集群模式下的客户端会屏蔽掉这个错误

17.3.4 节点数据库的实现

与单机相比差别不大,键与槽的关系使用跳表保存

17.4 重新分片

1>通知源节点与目标节点
2>将源节点数据分批复制到目标节点

17.5 ASK错误

在重新分片期间,被重分配的槽同时由源节点与目标节点操作,取决于键的被转移情况。(PS:所以此时会出现两个节点同时处理一个槽的状况)

17.5.1 Cluster Setslot importing 命令的实现

使用一个数组来记录正在被导入的槽

17.5.2 Cluster Setslot mingrating命令的实现

使用一个数组来记录正在被迁移的槽

17.5.3 ASK错误

如果键属于当前节点负责处理的槽,但没有找到,会到正在被迁移的槽中寻找,并返回给客户端ASK错误并返回该键被迁移到的节点(与Moved错误相似)

17.5.4 ASKING命令

使用该命令可以让节点破例操作正在被导入的槽中的键

17.5.5 ASK与Moved错误的区别

主要可以理解为中间态与稳定态的区别

17.6 复制与故障转移

从节点接替主节点负责的槽继续进行工作

17.7 消息

redis通过发送与接收消息来进行通信,消息有其自己的格式

http://www.lryc.cn/news/410667.html

相关文章:

  • Vue - CSS基础学习
  • python setup.py install
  • 论文解读:DiAD之SG网络
  • Prometheus+Grafana 监控平台实践-搭建常用服务监控告警
  • leaflet加载天地图:卫星底图(影响地图) 和 路网底图(矢量地图)【webgis】
  • 微软蓝屏事件:全球网络安全与系统稳定性的警示
  • 【51单片机仿真】基于51单片机设计的整数/小数计算器系统仿真源码文档——文末资料下载
  • ubuntu安装dockergitlab
  • 自定义视图提示:提升Laravel用户体验的秘诀
  • 关于黑马Ajax项目的笔记
  • Java面试八股之JDK 动态代理和 CGLIB 动态代理的区别
  • 验证码邮件接口测试指南?接口的优化策略?
  • 基于Java的智能停车场管理系统
  • 前后端分离开发遵循接口规范-YAPI
  • 把本地的项目代码初始化到git仓库
  • 白杨SEO:公众号如何找选题?如何利用ai工具写公众号?公众号变现方式有哪些?22个公众号营销常见问题解答大全!
  • 零基础学习深度学习以及模块缝合总结
  • XXE-lab-master靶场:PHP_xxe
  • 视图,存储过程和触发器
  • sqli-labs(6-10)关通关讲解
  • 【解决方法】git clone出现 curl 56 OpenSSL SSL_read: Connection was reset, errno 10054
  • 机械拆装-基于Unity-本地数据持久化
  • 【SpringBoot】4.3.5 参数传递之ModelAndView对象
  • 《技术人求职之道》之简历优化篇(上):量身打造简历,如何与自身情况完美匹配
  • mysql+php+html实现学生管理系统
  • find+rm一行命令删除文件夹及子文件夹下文件,不删除子文件夹,或者用python实现
  • 超详细的linux-conda环境安装教程
  • vite项目构建配置
  • Java 反射机制与Spring框架的那点事
  • 计算机网络面试题3