zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Redis第二十二讲 Redis高可用集群节点通信机制

Redis节点集群通信 机制 可用
2023-09-11 14:16:28 时间

两个端口

在哨兵系统中,节点分为数据节点和哨兵节点:前者存储数据,后者实现额外的控制功能。在集群中,没有数据节点与非数据节点之分:所有的节点都存储数据,也都参与集群状态的维护。为此,集群中的每个节点,都提供了两个
TCP端口

  • 普通端口:即我们在前面指定的端口(7000等)。普通端口主要用于为客户端提供服务(与单机节点类似);但在节点间数据迁移时也会使用。
  • 集群端口:端口号是普通端口+10000(10000是固定值,无法改变),如7000节点的集群端口为17000。集群端口只用于节点之间的通信,如搭建集群、增减节点、故障转移等操作时节点间的通信;不要使用客户端连接集群接口。为了保证集群可以正常工作,在配置防火墙时,要同时开启普通端口和集群端口。

节点通信机制

维护集群的元数据(集群节点信息,主从角色,节点数量,各节点共享的数据等)有两种方式:集中式和gossip ;
Redis cluster节点间采取gossip协议进行通信 。

  • 集中式(广播)
    向集群内所有节点发送消息; 优点在于元数据的更新和读取,时效性非常好,一旦元数据出现变更立即就会更新到集中式的存储中,其他节点读取的时候立即就可以立即感知到;
    不足在于所有的元数据的更新压力全部集中在一个地方,每条消息都要发送给所有节点,CPU、带宽等消耗较大;可能导致元数据的存储压力。 很多中间件都会借助zookeeper集中式存储元数据。

  • gossip