Redis-集群节点间的五种消息类型-区分

WebSocket数据区分:从协议原理到消息分发器实战 在实时通信领域,WebSocket协议因其全双工、低延迟的特性,成为构建聊天室、在线协作和实时数据看板等应用的核心技术。其工作原理基于TCP连接,通过建立持久通道实现客户端与服务器间的双向数据流。然而,协议本身仅定义了基础的二进制与文本帧传输,并未规定应用层数据的组织与识别方式,这使得**数据区分**成为实现可靠、有序业务逻辑的关键技术挑战。其核心价值在于,通过清晰的消息边界和类型定义,确保复杂业务场景(如多玩家游戏、实时交易系统)中各类指令与数据能被准确解析与处理。本文聚焦于**消息分发器**的设计与实现 阅读详情

1、消息类型划分

节点间发送的消息主要分为 5 种:meet 消息、ping 消息、pong 消息、fail 消息、publish 消息。不同的消息类型,通信协议、发送的频率和时机、接收节点的选择等是不同的:

2、特点介绍

  • MEET 消息: 在节点握手阶段,当节点收到客户端的 CLUSTER MEET 命令时,会向新加入的节点发送 MEET 消息,请求新节点加入到当前集群;新节点收到 MEET 消息后会回复一个 PONG 消息。
  • PING 消息: 集群里每个节点每秒钟会选择部分节点发送 PING 消息,接收者收到消息后会回复一个 PONG 消息。PING 消息的内容是自身节点和部分其他节点的状态信息,作用是彼此交换信息,以及检测节点是否在线。PING 消息使用 Gossip 协议发送,接收节点的选择兼顾了收敛速度和带宽成本,具体规则如下:(1)随机找 5 个节点,在其中选择最久没有通信的 1 个节点;(2)扫描节点列表,选择最近一次收到 PONG 消息时间大于 cluster_node_timeout / 2 的所有节点,防止这些节点长时间未更新。
  • PONG消息: PONG 消息封装了自身状态数据。可以分为两种:第一种 是在接到 MEET/PING 消息后回复的 PONG 消息;第二种 是指节点向集群广播 PONG 消息,这样其他节点可以获知该节点的最新信息,例如故障恢复后新的主节点会广播 PONG 消息。
  • FAIL 消息: 当一个主节点判断另一个主节点进入 FAIL 状态时,会向集群广播这一 FAIL 消息;接收节点会将这一 FAIL 消息保存起来,便于后续的判断。
  • PUBLISH 消息: 节点收到 PUBLISH 命令后,会先执行该命令,然后向集群广播这一消息,接收节点也会执行该 PUBLISH 命令

3、Redis节点之间如何通信

  • 集群中的节点采用固定频率(默认每秒十次)的定时任务进行通信工作,这样使得集群的状态/某个节点发生变化的时候,能够很快的通知给集群中的所有节点。
  • 相比较广播通信的每个节点都向集群中所有节点发送消息的方式,集群使用Gossip协议,每个节点算法随机的和部分节点通信,最终会通知给所有的节点,速度较慢,但是节省带宽、容错率高。
集群聊天室群聊功能实现:从数据库设计到分布式消息路由 即时通讯(IM)系统的核心在于高效、可靠的消息传递机制。其基本原理是通过服务器作为中继,在客户端之间建立连接并转发数据。在技术价值上,IM系统需要解决高并发连接、低延迟通信和海量消息处理等挑战,广泛应用于社交、协同办公、在线游戏等场景。特别是在集群环境下,如何实现跨服务器节点的消息同步成为关键,这直接关系到系统的扩展性和可用性。本文聚焦于群聊功能的实现,深入探讨了在分布式架构中,如何通过设计高效的内存缓存、选择推模式进行消息分发,并构建服务器间的内部通信网络来解决跨节点消息路由的核心难题,最终实现一个支持创 阅读详情

相关推荐

消息队列——发布订阅模式

在 Redis 中提供了专门的类型:Publisher(发布者)和 Subscriber(订阅者)来实现消息队列。 在文章开始之前,先来介绍消息队列中有几个基础概念,以便大家更好的理解本文的内容。 首先,发布消息的叫做发布方或发布者,也就是消息的生产者,而接收消息的叫做消息的订阅方或订阅者,也就是消费者,用来处理生产者发布的消息。 除了发布和和订阅者,在消息队列中还有一个重要的概念:channe...

磊哥聊Java 2017

Redis(三十五):集群——消息(MEET、PING、PONG、FAIL、PUBLISH)

消息消息头MEET、PING、PONG消息的实现FAIL消息的实现PUBLISH消息的实现为什么不直接广播发送PUBLISH命令 前面已经知道了集群是怎么进行故障转移操作和如何进行选举从节点的,而且这两个过程还有前面的一些过程都离不开一个操作,那就是发送消息。 消息 集群中的各个节点(包括从节点)是通过发送消息和接受消息来进行通信的,称发送消息的节点为发送者,接收消息的节点为接收者。 发送的消息类型主要有以下5种,这5种在前面的文章都提到过 MEET消息:当发送者接收到客户端传来的CLUSTER ME.

GDUT_Trim的博客 2416

Go+Vue即时通讯方案风车im:从网关到消息可靠性的工程实践

即时通讯(IM)是移动互联网和数字化办公中的基础能力,但真正决定系统能否稳定上线的,并非WebSocket连接的建立,而是连接管理、消息确认、离线补偿和容量保护等底层工程细节。本文从IM系统设计的基本概念出发,介绍其核心链路:网关负责长连接维护与消息转发,客户端通过Vue完成连接鉴权与消息渲染,而消息序号、ack回执和按区间拉取的离线消息机制共同保证了消息不丢不乱。同时,通过单机部署和压测复盘,分析了网关、数据库与Redis在真实负载下的瓶颈及集群演进思路。结合一套基于Go与Vue的开源即时通讯方案“风车i

weixin_33416697的博客 331

Redis-消息机制

Java消息服务标准,支持Queue,支持Topic。(2)Kafka:只支持Topic消息,需要Zookeeper。(1)Queue消息:点对点, 张三发给李四,只有李四收到。(2)Topic消息:广播、群发: 发布消息、订阅消息。(3)psubscribe: 通配符订阅消息。(1)Redis:只支持Topic消息。(2)subscribe: 订阅消息。(1)publish: 发布消息。)Redis的消息机制。发布和通配符订阅案例。

互联网知识分享 591

硬件原理图分析

文章目录1 硬件原理图分析1.1 MCU部分1.2 NB部分1.3 电源部分 1 硬件原理图分析 1.1 MCU部分 MCU接口部分没啥需要注意,都是常规操作。 1.2 NB部分 U4是用来防静电的。 由于NB的以上几个引脚只支持1.8V,所以这里需要3.3V转1.8V的电路。只要把握住谁改变电平就好分析是怎么实现电平转换的了。 1.3 电源部分 图中的MOS是用来实现USB和电池同时插入时只能USB供电功能的。 ...

木子皿--啥都不会的菜鸟 8168

DolphinScheduler租户配置踩坑实录:手把手教你修复‘tenant not exists‘报错

本文深度解析DolphinScheduler的租户模型,并提供一套从界面到数据库的系统性排查流程,手把手教你修复常见的'tenant not exists'报错。文章揭示了该错误的本质是用户与租户数据关联不一致,并给出了通过UI或SQL更新的具体修复方案,同时分享了根因分析与预防措施,帮助用户从根本上理解和避免此类问题。

2w3e4r5t6y的博客 541

每日一学:Redis主从、哨兵、 Cluster集群一锅端!

捡田螺的小男孩今天跟小伙伴们一起学习Redis的主从、哨兵、Redis Cluster集群。Redis主从Redis哨兵Redis Cluster集群。

没有伞的孩子必须努力奔跑!—小林 228

VS Code + Codex 在 WSL 中使用的正确姿势

Codex 登录只能在本地完成。文件仍可通过 UNC 路径访问 WSL → 本地 Codex 就能照常工作。避免在 WSL 内重复安装/登录 Codex 扩展。

yangguangwuyue的博客 9822

WebSocket消息类型 入门篇(三)

WebSocket实现通讯基础(消息类型,消息转码/解码基础) WebSocket协议支持三种本地消息类型 1、文本消息   2、二进制消息   3、Ping消息 和 Pong消息    无论是注解式端点还是变成是端点,实现其发送消息的API都是相同的     RemoteEndPoint接口和他的子类RemoteEndPoint.Basic(同步发送) 和  RemoteEndpoin...

Mark_Xu的博客 1万+

【Spring源码三千问】哪些循环依赖问题Spring解决不了?

哪些循环依赖问题Spring解决不了?前言版本约定正文场景一: prototype 类型的循环依赖场景二: constructor 注入的循环依赖场景三:Proxy 类型的 Bean 的循环依赖小结 系列博文: 【老王读Spring IoC-0】Spring IoC 引入 【老王读Spring IoC-1】IoC 之控制反转引入 【老王读Spring IoC-2】IoC 之 BeanDefinition 扫描注册 【老王读Spring IoC-3】Spring bean 的创建过程 【老王读Spring I

老王的专栏 7318

ARKit面部动画实战:如何用blend shape让数字人表情更自然(附中文对照表)

本文深入探讨了如何利用ARKit的blend shape技术驱动数字人面部动画,以实现更自然生动的表情。文章提供了详细的blend shape中文对照表,并分享了实战技巧,包括构建复合表情动画序列、处理不对称性与微表情,以及性能优化策略,旨在帮助开发者高效提升数字人的表情表现力。

weixin_29292535的博客 324

Redis设计与实现 学习笔记 第十七章 集群

2.PING消息:集群里的每个节点默认每隔一秒就会从已知节点列表中随机选出五个节点,然后对这五个节点中最长时间没有发送过PING消息的节点发送PING消息,以此来检测被选中的节点是否在线。另外,一个节点也可以通过向集群广播自己的PONG消息来让集群中的其他节点刷新关于这个节点的认识,例如当一次故障转移操作成功执行后,新的主节点会向集群广播一条PONG消息,以此来让集群中的其他节点立即知道这个节点已经变成了主节点,并且接管了已下线节点负责的槽。

tus00000的博客 1510

手把手教你用HI3516CV610搭建智能安防摄像头(附完整开发资料)

本文详细介绍了基于海思HI3516CV610 SOC搭建智能安防摄像头的完整开发流程,包括硬件选型、系统架构设计、开发环境搭建、智能分析功能开发及系统调优。通过实战案例,展示了如何利用内置NPU实现人形检测和异常行为分析,并提供了量产测试方案,帮助开发者快速完成智能摄像头项目。

backprop5master的博客 539

redis学习笔记(9)之redis集群详情

redis集群详情节点通信通信流程Gossip消息为什么redis选择槽的个数为16383个故障转移与恢复代码启动流程故障演示故障解释故障发现故障恢复资格检查准备选举时间发起选举选举投票从节点替换主节点 内容来源为六星教育,这里仅作为学习笔记 节点通信 通信流程 在分布式存储中需要提供维护节点元数据信息的机制,所谓元数据是指:节点负责哪些数据,是否出现故障等状态信息,Redis 集群采用 Gossip(流言)协议,Gossip 协议工作原理就是节点彼此不断通信交换信息,一段时间后所有的节点都会知道集群完整的

小鱼AS的博客 659

从零到一构建一个智能爬虫 Agent 完整教程

本文将打造一个具备自主决策、动态解析、反反爬、持久化能力的智能爬虫 Agent

数据知道的博客 4792

【WRF-Urban】WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WW、forever的博客 496

Redis集群(二)

节点通信 1.1 通信流程 在分布式存储中需要提供维护节点元数据信息的机制,所谓元数据是指:节点负责哪些数据,是否出现故障等状态信息,Redis 集群采用 Gossip(流言)协议, Gossip 协议工作原理就是节点彼此不断通信交换信息,一段时间后所有的节点都会知道集群完整的信息,这种方式类似流言传播 1. 集群中的每个节点都会单独开辟一个 TCP 通道,用于节点之间彼此通信,通信端口号在基础端口上加10000。 2. 每个节点在固定周期内通过特定规则选择几个节点发送 ping 消息。 3. 接收到 .

u014167852的博客 506

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

二十redis之gossip协议

二十redis之gossip协议 gossip协议是p2p方式的通信协议。通过节点之间不断交换信息,一段时间后所有节点都会知道整个集群完整的信息。 gossip算法,意思是八卦算法,在办公室中只要一个人八卦一下,在有限的时间内,办公室内的所有人都会知道八卦消息。 算法过程:集群中的一个节点广播自身信息,部分节点收到了信息,这些节点再继续在集群中传播这个节点的信息,一段时间后整个集群中都 有了这个节点的信息。实际上是gossip大部分节点都在一直做这个操作,所以集群在一段时间后信息透明。 通信过程 每一

勿在浮沙筑高台 3128

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Redis 3.x——集群节点通信

集群中每个节点通过一定规则挑选要通信的节点,每个节点可能知道全部节点,也可能仅知道部分节点,只要这些节点彼此可以正常通信,最终它们会达到一致的状态。当节点出故障、新节点加入、主从角色变化、槽信息变更等事件发生时,通过不断的ping/pong消息通信,经过一段时间后所有的节点都会知道整个集群全部节点的最新状态,从而达到集群状态同步的目的。消息处理完后回复pong消息,内容同样包含消息头和消息体,发送节点接收到回复的pong消息后,采用类似的流程解析处理消息并更新与接收节点最后通信时间,完成一次消息通信。

吴声子夜歌的博客 187

Redis入门完整教程:节点通信

10.3.1 通信流程 在分布式存储中需要提供维护节点元数据信息的机制,所谓元数据是 指:节点负责哪些数据,是否出现故障等状态信息。常见的元数据维护方式 分为:集中式和P2P方式。Redis集群采用P2P的Gossip(流言)协议, Gossip协议工作原理就是节点彼此不断通信交换信息,一段时间后所有的节 点都会知道集群完整的信息,这种方式类似流言传播,如图10-12所示。通信过程说明: 1)集群中的每个节点都会单独开辟一个TCP通道,用于节点之间彼此 通信,通信端口号在基础端口上加10000。 2)每个

Lee达森的博客 869

八 Redis集群模式

1 数据分区 分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。 1.1 分区方案 常见的分区规则有哈希分区和顺序分区两种 【哈希分区】 节点取余:根据节点数量N使用公式:hash(key)%N计算出哈希值,用来决定数据映射到哪一个节点上。 缺点:当节点数量变化时,如扩容或收缩节点,数据节点映射关系需要重新计算,会导致数据的重新迁移。 优点:这种方式的突出优点是简单性,常用于数据库的分库分表规则,..

weixin_43934698的博客 250

RedisCluster集群中的插槽为什么是16384个?

在Redis中,对bit数组进行压缩时,压缩率与填充的数(或者说是1的数量)的关系是成反比的,因为在压缩过程中,Redis使用的是基于运行长度编码(Run-Length-Encoding,RLE)的压缩算法。消息体中,会携带一定数量的其他节点信息用于交换,约为集群总节点数量的1/10,节点数量越多,消息体内容越大。消息格式分为:消息头+消息体。大量的连续重复字符,RLE算法的随机效果会非常好,反之,如果数据中的字符分布较为随机,没有出现太多连续的重复字符,那么RLE的压缩效果就不明显,甚至可能使数据变大。

Cover_sky的博客 1609

Redis知识点

Redis知识点收集RedisRedis集群Cluster模式下哈希槽的数量为什么是16383 Redis Redis集群 Cluster模式下哈希槽的数量为什么是16383 在集群模式下, 各个节点之间是相连的。并且节点之间会定期发送ping/pong消息,交换数据信息。 交换的数据信息,由消息体和消息头组成。 消息体无外乎是一些节点标识啊,IP啊,端口号啊,发送时间啊。这与本文关系不是太大,我不细说。 我们来看消息头,结构如下 typedef struct { char sig[4];

zhang431705的专栏 348

吃透这篇 Redis 面试题,搞定 90% 后端面试(2026 超全整理)

本文是一份全面的Redis面试指南,重点覆盖后端面试中的高频考点。文章分为四个核心篇章: 基础原理篇:解析Redis高性能的四大支柱(内存存储、单线程模型、I/O多路复用、高效数据结构),深入讲解过期键删除策略(惰性+定期)和8种内存淘汰策略,强调生产环境推荐配置。 数据类型篇:详细对比9种Redis数据类型的底层实现(如SDS、跳表、QuickList)及典型应用场景,特别指出ZSet选用跳表而非平衡树的原因,并提供安全遍历Key的最佳实践。 持久化篇:深度对比RDB和AOF机制,介绍Redis 4.0+

JAVA社区的博客 993

Gossip协议理解

六度分隔理论、Gossip协议执行过程、应用场景、使用Gossip协议的技术组件或框架、消息传播类型、Anti-Entropy、Rumor-Mongering、信息传播方式(pull、push、pull&push)、优缺点、实现、Consul、Redis Cluster、Dynamo、memberlist、

lonelymanontheway的博客 1821

RabbitMQ

RabbitMQ

idpangpengcheng的博客 901
上一篇: Redis-[压缩列表]数据结构-深入了解
下一篇: Redis-集群节点如何组成-从数据机构入手
酱油瓶啤酒杯
博客等级 码龄8年 35粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值