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

Redis Cluster Gossip Protocol: Message

返回目录

消息结构

  1. 消息头部
  2. 消息数据(可选)
  3. extension(可选)

消息头部

字段定义
  • Signature: “RCmb” 这4个字符(Redis Cluster message bus 的简称)
  • totalLen: 消息的总字节数
  • version:当前为1
  • port: TCP 端口
  • type: 消息类型
    • 0:PING
    • 1:PONG
    • 2:MEET
    • 3:FAIL
    • 4:PUB/SUB 传递
    • 5:FAILOVER_AUTH_REQUEST
    • 6:FAILOVER_AUTH_ACK
    • 7:UPDATE
    • 8:MFSTART
    • 9:MODULE
    • 10:PUB/SUB Publish Shard 传递
  • count:gossip条目数量(对PING/PONG等有效)
  • currentEpoch
  • configEpoch
  • offset:如果是master,表示复制偏移;如果是slave,表示已处理的复制偏移
  • sender:发送放的节点ID
  • myslots:发送方的slots信息
  • slaveof:发送方的master
  • myip:发送方的IP,如果为全0,则需要从socket获取
  • extensions:消息附带的extension个数
  • pport:如果port是TLS端口,则此为TCP的plaintext端口
  • cport:发送方的cluster总线端口
  • flags:发送方的标记
    • 1: NODE_MASTER(节点是mater)
    • 2: NODE_SLAVE (节点是slave)
    • 4: PFAIL(待确认的failure,一般是timeout)
    • 8: FAIL(已确认的failure)
    • 16: MYSELF (标识这实体是本节点)
    • 32: HANDSHAKE (处于handshake阶段)
    • 64: NOADDR(地址未知)
    • 128: MEET(收到了MEET指令)
    • 256: MIGRATE_TO(master可以参与副本迁移)
    • 512: NOFAILOVER(slave不会尝试failover)
  • state:在发送方看来,cluster当前的状态
    • 0:OK
    • 1:FAIL (cluster不能工作,通常是某个partition已无法访问)
  • mflags:消息标记。用于指定消息的内容或者提供关于节点状态的信息
    • 1:PAUSED(master停止了manual failover)
    • 2:FORCEACK(即使master还运作,也返回ACK给AUTH_REQUEST)
    • 4:EXT_DATA(消息包含extension数据)
  • 数据:根据消息类型而定
    • 对于PING, PONG, MEET,是0到多个的gossip
    • 对于FAIL,是处于FAIL状态的node的ID
    • 对于UPDATE,是需要update的node的ID,configEpoch和slots
  • extension:(当前只有一种extension)
    • 对于PING,是pingExtension,存放node的cluster-announce-hostname
字段填充
  1. Signature:RCmb
  2. type:PING/PONG/MEET
  3. sender: 填入myself的ID
  4. myip:如果配置了 cluster-announce-ip 则使用,否则设为全0,指示对方需要从socket获取此节点的IP
  5. myslots:如果myself是master,则使用myself的slots,否则使用所属master的slots
  6. slaveof:如果myself是master,则设为全0,否则填入所属master的ID
  7. 计算basePort: 用于推导port/pport/cport,不填入消息头。
if tls-cluster == yes:basePort = tls-port
else:basePort = 配置文件中的port
  1. port:
if tls-cluster == yes && cluster-announce-tls-port:port = cluster-announce-tls-port
else if cluster-announce-port:port = cluster-announce-port
else:port = basePort			
  1. pport:
if tls-cluster == yes && cluster-announce-tls-port:pport = cluster-announce-port
else:pport = tls-cluster ? 配置文件中的port : 0

10.cport:

if cluster-announce-bus-port:cport = cluster-announce-bus-port
else if cluster-port:cport = cluster-port
else:cport = basePort + 10000
  1. flags: 自身的标记
  2. state:myself看来cluster的状态,OK与否
  3. currentEpoch:自身的currentEpoch
  4. configEpoch:如果myself是master,则使用myself的configEpoch,否则使用所属master的configEpoch
  5. offset:如果myself是master,则使用当前的复制偏移;如果myself是slave,则使用已处理的复制偏移
  6. mflags:
    如果myself是master,而且正处于manual failover,则设置PAUSED;
    如果这是一个manual failover的请求,则设置FORCEACK
  7. totalLen:估算总长度。对于PING,PONG,MEET和其他可变长的消息,总长度会在其他地方得到修正。

相关文章:

Redis Cluster Gossip Protocol: Message

返回目录 消息结构 消息头部消息数据(可选)extension(可选) 消息头部 字段定义 Signature: “RCmb” 这4个字符(Redis Cluster message bus 的简称)totalLen: 消息的总字节数version:当前为…...

【JVM】第四篇 垃圾收集器ParNewCMS底层三色标记算法详解

导航 一. 垃圾收集算法详解1. 分代收集算法2. 标记-复制算法3. 标记-清除算法4. 标记-整理算法二. 垃圾收集器详解1. Serial收集器2. Parallel Scavenge收集器3. ParNew收集器4. CMS收集器三. 垃圾收集底层三色标记算法实现原理1. 垃圾收集底层使用三色标记算法的原因?2. 垃圾…...

STM32复习笔记(四):独立看门狗IWDG

目录 (一)简介 (二)CUBEMX工程配置 (三)相关函数 总结: (一)简介 独立看门狗本质是一种定时器,其作用是监视系统的运行,当系统发生错误&…...

SpringBoot中常用注解的含义

一、方法参数注解 1. PathVariable 通过RequestMapping注解中的 { } 占位符来标识URL中的变量部分 在控制器中的处理方法的形参中使用PathVariable注解去获取RequestMapping中 { } 中传进来的值,并绑定到处理方法定一的形参上。 //请求路径:http://3333…...

学位论文的写作方法,较好的参考文章

摘要 结合2个文章: [1]程鑫. 网联环境下交通状态预测与诱导技术研究[D]. 长安大学, 2017. [2]吴昊. 关中平原水资源变化特征与干旱脆弱性研究[D]. 长安大学, 2018. 主要研究内容及技术路线 各章小结和引言的写作 [1]程鑫. 网联环境下交通状态预测与诱导技术…...

基于SpringBoot的科研工作量获奖项目管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

嵌入式Linux应用开发-驱动大全-第一章同步与互斥④

嵌入式Linux应用开发-驱动大全-第一章同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 u…...

算法-数学-斜率-直线上最多的点数

算法-数学-斜率-直线上最多的点数 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/max-points-on-a-line/ 1.2 题目描述 给你一个数组 points ,其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 2 暴力搜索斜率…...

项目进展(五)-修复PCB电路板,学习32位ADC芯片ADS1285

一、前言 上个月29号放假了,和朋友一起去了南京(人是真滴多),师兄晚放假几天,结果在测试时不小心把12V和GND碰触到一起了,导致12V短路,电路板几乎瘫痪了。 今天下午到学校之后就开始着手寻找问题和修复,最…...

(三) Markdown插入互联网或本地视频解决方案

前言 不论博客系统是WordPress还是Typecho,绕不开的是两种书写语言,一种称之为富文本,一种叫做Markdown。 Markdown有很多好处,也有很多坏处,比如Markdown本身不具备段落居中的功能,以及Markdown也不具有…...

HPA (Horizontal Pod Autoscaler) In K8s

城市红绿灯智能调节 没准正在建设中哈哈哈 作为一位城市观察者和设计师,我想借助Kubernetes的HPA机制思想来描述城市红绿灯自动调节的场景。 在这个故事中,我们的城市面临着日益增长的交通流量和挤塞问题。为了应对这一挑战,城市决定引入智能…...

Ubuntu安装samba服务器

为了window系统下能够像访问本地目录一样访问ubuntu系统下的目录,这里我通过安装samba服务器,将ubuntu系统的文件目录通过网络挂载的方式共享出来,以便在window下就能够对ubuntu系统的文件进行读写等访问操作,这里记录一下samba服…...

[SpringBoot] 8. aop 获取 request response

最近开发有一个需求需要在 aop 中获取request response ,搜索许久没有答案,故此记录📝~ aop 获取 package com.example.easy_im.aop;import com.example.easy_im.Context; import jakarta.servlet.http.HttpServletRequest; impo…...

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展,苹果应用市场的火爆,越来越多的开发者加入到苹果应用开发行业中来。同时,苹果应用市场上的应用也在不断增多,用户数量也在不断增加,苹果应用代签是指通过第三方公司为开发者的应用进行…...

【PyCharm Community Edition】:excel操作

Excel操作 相关模块openpyxlxlrdshutil 实例 相关模块 openpyxl 可以对.xlsx,.xlsm,.xltx,.xltm文件格式操作 打开文件:wb_xlsx openpyxl.load_workbook(“文件名”)新建文件:wb_xlsx openpyxl.Workbook()新建sheet表:wb_xlsx_sheet wb…...

证书显示未受信任,生成的证书过期

此时若是导入证书后,证书显示未受信任,则说明我们缺失最新的AppleWWDRCA证书 解决方案: 重新下载AppleWWDRCA并安装。即下载最新的AppleWWDRCA证书,双击安装到“登录”项的钥匙串下;然后再安装你的开发证书或者发布证书…...

VS+Qt+C++ GDAL读取tif图像数据显示

程序示例精选 VSQtC GDAL读取tif图像数据显示 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VSQtC GDAL读取tif图像数据显示》编写代码,代码整洁,规则,…...

CSS 选择器-认识并应用选择器

CSS选择器是用来定位HTML或XML文档中的元素的模式。以下是一些常见的CSS选择器,以及对应的样例代码: 标签选择器:选择所有指定标签的元素。 示例代码: p {font-size: 16px; }类选择器:选择所有指定类名的元素。 示…...

【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 此代码可以替代内置的images.findImage函数使用,但可能会误匹配,如果是对匹配结果要求比较高的,还是得谨慎使用。 runtime.images.initOpenCvIfNeeded(); importClass(java.uti…...

[庆国庆 迎国庆 发文]云计算的概念

庆国庆 迎国庆 国庆发文100%可得专属勋章 一年仅有一次哦 不要错过啦 去发布 https://activity.csdn.net/creatActivity?id10567&spm1011.2480.3001.6900 https://mp.csdn.net/edit?activity_id10567&spm1057.2600.3001.9674 云计算(cloud computing&…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

2025季度云服务器排行榜

在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时,需要使用外部低速晶振...

面试高频问题

文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

TJCTF 2025

还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

汇编语言学习(三)——DoxBox中debug的使用

目录 一、安装DoxBox,并下载汇编工具(MASM文件) 二、debug是什么 三、debug中的命令 一、安装DoxBox,并下载汇编工具(MASM文件) 链接: https://pan.baidu.com/s/1IbyJj-JIkl_oMOJmkKiaGQ?pw…...