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

本文介绍了Redis集群中节点间通信的五种消息类型:MEET、PING、PONG、FAIL和PUBLISH,详细解析了它们的特点和作用。通过Gossip协议,节点以高效且节省带宽的方式保持集群状态同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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_tim
### 部署 Redis Sentinel 哨兵模式 Redis Sentinel 是用于监控 Redis 实例并实现高可用性的工具。以下是关于其部署和配置的关键点: #### 启动 Redis 主从节点 为了使 Redis Sentinel 正常工作,需要先设置好主从复制结构。可以通过以下方式启动多个 Redis 实例作为主服务器和从服务器。 ```bash ./redis-server /path/to/redis_master.conf --port 6379 ./redis-server /path/to/redis_slave1.conf --port 6380 --slaveof 127.0.0.1 6379 ./redis-server /path/to/redis_slave2.conf --port 6381 --slaveof 127.0.0.1 6379 ``` 上述命令分别启动了一个主实例(端口 `6379`)和两个从实例(端口分别为 `6380` 和 `6381`),其中从实例通过参数 `--slaveof` 设置为主实例的副本[^4]。 #### 配置 Redis Sentinel 文件 创建一个名为 `sentinel.conf` 的配置文件,并添加如下内容来定义哨兵的行为: ```conf # 定义监听端口 port 26379 # 指定被监视的主数据库名称、IP地址及端口号 sentinel monitor mymaster 127.0.0.1 6379 2 # 当前 quorum 参数表示至少有 2 台哨兵同意才能判定主库失效 quorum 表示多少台哨兵认为 master 不可用时触发 failover 流程 # 自动发现其他哨兵节点 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 60000 ``` 此部分设置了哨兵去监测名为 `mymaster` 的主数据库及其关联的从属者们的状态变化情况[^3]。 #### 启动 Redis Sentinel 利用之前准备好的配置文件运行哨兵进程: ```bash ./redis-sentinel /path/to/sentinel.conf ``` 这一步会依据指定路径下的配置文件初始化相应的哨兵服务。 --- ### 部署 Redis Cluster 集群环境 对于更复杂的场景,则可以考虑构建完整的 Redis Cluster 来提供分布式存储能力。下面介绍基本步骤: #### 准备多份独立的 Redis 配置文件 每一份都需要单独设定不同的 TCP 端口以便区分各个成员之间的通信渠道。例如: ```conf port 7000 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 appendonly yes ``` 这里启用了集群支持 (`cluster-enabled`) 并指定了持久化选项(`appendonly`) ,同时允许自动生成节点间关系描述文档(nodes-*.conf)[^2]。 #### 开始各组件的服务 按照预先规划的数量逐一激活这些预设完毕后的个体单元体: ```bash for port in {7000..7005}; do ./redis-server /path/to/redis_$port.conf; done ``` 这样就拥有了六个处于待命状态中的候选参与者可供后续操作调配使用了。 #### 创建实际意义上的逻辑上的整体集合体系 借助官方提供的脚本完成最后组装动作: ```bash yes | redis-cli --cluster create \ 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \ 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \ --cluster-replicas 1 ``` 该指令将把前面提到过的那些零散部件组合成具有冗余备份特性的正式生产级别规模大小不一但相互协作配合默契的整体解决方案。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值