一、redis cluster 介绍 自动将数据进行分片,每个 master 上放一部分数据 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的 redis cluster架构下的每个redis都要开放两个端口号,比如一个是6379,另一个就是加1w的端口号16379。 6379端口号就是redis服务器入口。 16379端口号是用来进行节点间通信的,也就是 cluster bus 的东西,cluster bus 的通信,用来进行故障检测、配置更新、故障转移授权。cluster bus 用的是一种叫gossip 协议的二进制协议,用于节点间高效的数据交换,占 **Redis Cluster介绍** Redis Cluster是Redis的一个特性,它实现了数据的自动分片(sharding),即将数据分散存储在多个master节点上,每个master节点负责一部分数据。这种分片策略能够有效地扩展Redis的存储能力,同时提供了高可用性。即使部分master节点不可用,由于数据的冗余分布,集群仍能继续工作,保证服务不中断。 在Redis Cluster架构下,每个节点都需要开启两个端口。默认的6379端口用于客户端连接,执行命令和数据读写。而16379端口是为`cluster bus`服务的,这个通信通道用于节点间的内部通信,包括故障检测、配置更新和故障转移授权等关键任务。`cluster bus`使用一种名为Gossip协议的二进制协议,该协议高效且节省资源,能够在节点间快速交换信息,减少网络带宽消耗和处理时间。 **Gossip协议** Gossip协议是一种分布式系统中常见的节点间通信机制,用于传播和同步集群的状态信息。在Redis Cluster中,每个节点都持有完整的集群元数据副本,并通过Gossip协议进行通信。当节点状态或元数据发生变化时,节点会将这些变化传播给其他节点,确保所有节点的数据同步。 Gossip协议的优点在于其分散的更新模式,减轻了单一节点的压力,使得元数据更新更为分散。然而,这种协议也有一定的延迟,可能导致集群中某些操作出现滞后。 **Gossip协议的消息类型** Gossip协议包含了多种不同类型的消息,如`ping`、`pong`、`meet`和`fail`: 1. `meet`:当节点加入集群时,通过`gossip meet`消息通知其他节点,新节点从而加入集群通信。 2. `ping`:节点周期性地向其他节点发送`ping`消息,包含自身状态和元数据信息,用于信息交换和确认。 3. `pong`:`ping`和`meet`消息的响应,同样包含节点状态和信息广播。 4. `fail`:如果一个节点判断另一个节点失败,会发送`fail`消息,通知其他节点该节点已宕机。 **Gossip协议的实现细节** 为了优化网络负担,Redis Cluster中的`ping`消息并非频繁发送。每个节点每秒执行10次`ping`,每次选择5个最长时间未通信的其他节点。如果发现节点通信延迟达到`cluster_node_timeout`的一半,会立即发送`ping`,防止因信息交换延迟导致的问题。`ping`消息会携带节点信息以及部分其他节点的信息,以进行数据交换。 此外,每个节点都有一个专门用于节点间通信的端口,即服务端口加10000。例如,如果服务端口是6379,那么节点间通信端口就是16379。节点间定期交换`ping`和`pong`消息,传输故障信息、节点增删和哈希槽(hash slot)等关键数据。 Redis Cluster通过Gossip协议实现节点间的高效通信和数据同步,确保了分布式环境下的数据一致性与高可用性。了解并熟练掌握这些知识点对于构建和维护大规模的Redis集群至关重要。
- 粉丝: 2
- 资源: 864
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助