redis cluster 的通信机制

在这里插入图片描述

Redis Cluster 的通信机制是其分布式架构的核心,基于 Gossip 协议Cluster Bus 实现节点间状态同步与数据协调。以下是其通信机制的核心要点:

  • 二进制协议:数据以字节流形式编码(如Protobuf、Thrift、MQTT、Gossip)。
  • 文本协议:数据以人类可读的字符形式表示(如JSON、XML、HTTP/1.1)。

集群元数据的维护有两种方式:集中式、Gossip 协议

  • 集中式:将集群元数据集中存储在一个节点上。
    • 优点
      元数据的读取和更新时效性好,元数据的变更都能立即更新到集中式存储节点中,其它节点读取的时候就可以感知到。
    • 缺点
      所有的元数据的更新压力全部集中在一个地方,可能会导致元数据的存储有压力。
  • Gossip:所有节点都持有一份元数据,不同的节点如果出现了元数据的变更,就不断将元数据发送给其它的节点,让其它节点也进行元数据的变更。
    • 优点
      元数据的更新比较分散,不是集中在一个节点,降低了压力。
    • 缺点
      元数据的更新有延时,可能导致集群中的一些操作会有一些滞后。

一、通信协议与方式

  1. Gossip 协议

    • 随机传播:每个节点周期性地随机选择其他节点发送消息(如 PINGPONGMEETFAIL),传播集群状态信息(节点存活、槽位分配、主从角色等)。
    • 低负载扩展:节点通信频率不随集群规模线性增长,适合大规模集群(数千节点)。
    • 最终一致性:信息通过多次传播逐步覆盖所有节点,可能存在短暂延迟,但最终达成一致。
  2. Cluster Bus 端口

    • 每个节点额外开放一个通信端口(默认 服务端口 + 10000,如服务端口 6379,则 Cluster Bus 端口为 16379)。
    • 通过二进制协议传输高效的结构化数据(如槽位映射、节点元数据)和心跳检测(详见第二章:核心通信场景)。

二、核心通信场景

  1. 节点握手(Cluster Meet)

    • 新节点加入:通过 CLUSTER MEET <IP> <PORT> 命令或自动发现机制,新节点与现有节点建立连接。
    • 元数据交换:节点间交换 ID、IP、端口、角色(主/从)、负责的槽位等信息。
  2. 心跳检测(PING/PONG)

    • 健康检查:节点定期发送 PING,接收方回复 PONG 确认存活。
    • 故障判定:若节点在 cluster-node-timeout(默认 15 秒)内未响应,可能被标记为 FAIL
  3. 槽位分配与迁移

    • 槽位变更广播:当槽位分配调整时(如扩容/缩容),通过 Gossip 协议通知所有节点更新槽位映射。
    • 迁移协调:迁移过程中,源节点和目标节点通过 ASKING 命令临时处理跨节点请求。
  4. 故障转移

    • 主节点下线:从节点通过 Gossip 感知主节点故障,触发选举流程(Raft 变种),新主节点广播自身角色变更。
    • 数据同步:新主节点通过异步复制与从节点同步数据。

三、客户端与集群通信

  1. 重定向机制

    • MOVED 响应:客户端请求的 Key 不属于当前节点槽位时,返回 MOVED <slot> <target_ip:port>,客户端更新本地槽位缓存。
    • ASK 响应:槽位迁移期间,目标节点可能返回 ASK 临时重定向,客户端需向目标节点发送 ASKING 后重试。
  2. 智能客户端

    • 本地缓存槽位表:客户端首次连接任一节点获取全局槽位映射,后续直接路由请求至正确节点。
    • 动态更新:收到 MOVEDASK 时更新缓存,避免重复重定向。

四、优化与挑战

  1. 性能优化

    • 批量消息:合并多个 Gossip 消息减少网络开销。
    • CRC16 分片:通过 CRC16(key) % 16384 快速定位槽位,确保数据均匀分布。
  2. 挑战

    • 网络分区:Gossip 的最终一致性可能导致分区时出现脑裂,需依赖 cluster-require-full-coverage 配置权衡可用性。
    • 迁移性能:槽位迁移期间需协调数据复制与流量切换,可能影响吞吐量。

五、实际应用示例

# 节点 A(7000)与节点 B(7001)握手
CLUSTER MEET 127.0.0.1 7001# 查看集群节点信息
CLUSTER NODES
# 输出示例:
# d4b3... 127.0.0.1:7001 master - 0 1620000000000 1 connected 0-5460
# a1c2... 127.0.0.1:7000 myself,master - 0 0 2 connected 5461-10922

总结

Redis Cluster 通过 Gossip 协议 实现去中心化通信,结合 Cluster Bus 高效传输元数据,保障了高可用与动态扩展能力。客户端通过智能路由与重定向机制直接与集群交互,无需代理层,兼顾性能与灵活性。理解其通信机制是优化集群稳定性与性能的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF web入门之文件上传

知识点 产生文件上传漏洞的原因 原因: 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的MIMETYPE(用于描述文件的类型的一种表述方法) 没有做检查 权限上没有对于上传的文件目录设置不可执行权限,(尤其是对于shebang类型的文件) 对于web server对于上传…

PhotoShop学习09

1.弯曲钢笔工具 PhotoShop提供了弯曲钢笔工具可以直观地创建路径&#xff0c;只需要对分段推拉就能够进行修改。弯曲港币工具位于工具面板中的钢笔工具里&#xff0c;它的快捷键为P。 在使用前&#xff0c;可以把填充和描边选为空颜色&#xff0c;并打开路径选项&#xff0c;勾…

tsconfig.json配置不生效

说明一下我遇到的问题&#xff0c;这是我的配置文件代码的 {"compilerOptions": {"module": "none","target": "ES5","outFile": "./dist/bundle.js"} } 和我想象不同的是&#xff0c;我编译成 js 没…

源代码加密之零日攻击

# SDC沙盒&#xff1a;有效防御零日攻击的多层防护体系 在当今复杂多变的网络安全环境中&#xff0c;零日攻击已成为企业面临的重大威胁之一。零日攻击利用尚未被公众发现或尚未被软件供应商修复的漏洞进行攻击&#xff0c;具有极高的隐蔽性和破坏性。SDC沙盒作为一种先进的数…

记录一次TDSQL网关夯住故障

环境信息&#xff1a; TDSQL-MySQL同城双中心集群&#xff0c;集中式实例&#xff0c;一主三副本&#xff0c;每个中心两个db副本&#xff0c;每个中心一个VIP&#xff0c;V每个IP通过硬件做负载均衡指向该中心两个proxy&#xff0c;操作系统为麒麟v10 arm。 故障描述&#xf…

代码随想录八股训练营完结总结

&#xff01; 40天的训练营&#xff0c;我总结了自己完整的八股文&#xff0c;后续在面试过程中可以补充 很感谢这次训练营&#xff0c;真的高频&#xff0c;在面试中能击中60%以上&#xff0c;剩下的就靠平时的积累了。 感谢训练营的小伙伴&#xff0c;很多次想偷懒&#x…

VS Code 的 .S 汇编文件里面的注释不显示绿色

1. 确认文件语言模式 打开 .S 文件后&#xff0c;查看 VS Code 右下角的状态栏&#xff0c;确认当前文件的识别模式&#xff08;如 Assembly、Plain Text 等&#xff09;。如果显示为 Plain Text 或其他非汇编模式&#xff1a; 点击状态栏中的语言模式&#xff08;如 Plain Te…

iphone各个机型尺寸

以下是苹果&#xff08;Apple&#xff09;历代 iPhone 机型 的屏幕尺寸、分辨率及其他关键参数汇总&#xff08;截至 2023年10月&#xff0c;数据基于官方发布信息&#xff09;&#xff1a; 一、标准屏 iPhone&#xff08;非Pro系列&#xff09; 机型屏幕尺寸&#xff08;英寸…

VSCode写java时常用的快捷键

首先得先安好java插件 1、获取返回值 这里是和idea一样的快捷键的&#xff0c;都是xxxx.var 比如现在我new一个对象 就输入 new MbDo().var // 点击回车即可变成下面的// MbDo mbDo new MbDo()//以此类推get方法也可获取 mbDo.getMc().var // 点击回车即可变成下面的 // St…

相机内外参

文章目录 相机内参相机外参 相机的内外参是相机标定过程中确定的重要参数&#xff0c;用于建立图像像素坐标与实际世界坐标之间的关系。 相机内参 定义&#xff1a;相机内参是描述相机内部光学和几何特性的参数&#xff0c;主要包括焦距、主点坐标、像素尺度因子以及畸变系数等…

【视频目标分割论文集】Efficient Track Anything0000

github 摘要 视频对象分割和追踪任意目标领域出现了强大的工具——分割任意模型 2&#xff08;SAM 2&#xff09;。SAM 2 实现令人印象深刻的视频对象分割性能的关键组成部分包括用于帧特征提取的大型多阶段图像编码器&#xff0c;以及存储过去帧记忆上下文以辅助当前帧分割的…

CSS学习02 动态列数表格开发,解决多组数据布局与边框重合问题

概要 在前端开发中&#xff0c;表格常用于展示结构化数据。当数据组的字段数量不统一时&#xff08;如有的行包含 3 组数据&#xff0c;有的行包含 2 组或 1 组&#xff09;&#xff0c;传统固定列数的表格会出现结构错位、边框重合等问题。本文通过 HTML/CSS 规范方法&#x…

Spark-core编程总结

1.reduce‌ 功能‌&#xff1a;聚集RDD中的所有元素&#xff0c;先聚合分区内数据&#xff0c;再聚合分区间数据。 示例‌&#xff1a;rdd.reduce(__) 将RDD中的所有整数相加。 2.collect‌ 功能‌&#xff1a;在驱动程序中&#xff0c;以数组Array的形式返回数据集的所有元…

处理Long类型长度超长导致前端精度丢失问题

1&#xff0c;问题场景 后端返回的Long类型的数据&#xff0c;超10000000000000000&#xff0c;前端处理的时候&#xff0c;数据被截断了。比如tchId: 11073477511443988481&#xff0c; 前端根据tchId获取下一环节信息的时候&#xff0c;传的tchId变成了11073477511443988400&…

ONVIF/RTSP/RTMP协议EasyCVR视频汇聚平台RTMP协议配置全攻略 | 直播推流实战教程

在现代化的视频管理和应急指挥系统中&#xff0c;RTMP协议作为一种高效的视频流传输方式&#xff0c;正变得越来越重要。无论是安防监控、应急指挥&#xff0c;还是物联网视频融合&#xff0c;掌握RTMP协议的接入和配置方法&#xff0c;都是提升系统性能和效率的关键一步。 今天…

安徽京准:GPS北斗卫星时空信号安全防护装置(授时)介绍

安徽京准&#xff1a;GPS北斗卫星时空信号安全防护装置&#xff08;授时&#xff09;介绍 1、主要特点 ★信号加固功能&#xff1a; GPS/BDS单系统信号拒止情况下&#xff08;包含受到GPS L1欺骗干扰、GPS L1压制干扰、BDS B1欺骗干扰、BDS B1压制干扰&#xff09;&#xff…

探索原生JS的力量:自定义实现类似于React的useState功能

1.写在前面 本方案特别适合希望在历史遗留的原生JavaScript项目中实现简单轻量级数据驱动机制的开发者。无需引入任何框架或第三方库&#xff0c;即可按照此方法封装出类似于React中useState的功能&#xff0c;轻松为项目添加状态管理能力&#xff0c;既保持了项目的轻量性&am…

02.使用cline(VSCode插件)、continue(IDEA插件)、cherry-studio玩转MCP

文章目录 安装环境uv&#xff08;python&#xff09;为什么不用pip&#xff1f;安装 nvm&#xff08;nodejs&#xff09; cline插件window配置如下linux配置如下测试MCP&#xff1a;time现在几点了&#xff1f;伦敦现在几点了&#xff1f;当纽约是下午四点&#xff0c;那伦敦是…

CSS padding(填充)学习笔记

CSS 中的 padding&#xff08;填充&#xff09;是一个非常重要的属性&#xff0c;它用于定义元素边框与元素内容之间的空间&#xff0c;即上下左右的内边距。合理使用 padding 可以让页面布局更加美观、清晰。以下是对 CSS padding 的详细学习笔记。 一、padding 的作用 padd…

Spring 单元测试核心注解全解:@InjectMocks、@MockBean、@Mock、@Autowired 的区别与实战

在编写 Spring Boot 应用的单元测试过程中,@InjectMocks、@MockBean、@Mock 和 @Autowired 是最常用的几个注解,但它们经常被混淆或误用,导致测试失败或注入错误。 本文将从本质区别、使用场景、示例代码、对比表格等多个维度,全面解析这几者的使用方法与差异,助你写出结…