txj 2020-09-08
一、redis cluster 介绍
redis cluster架构下的每个redis都要开放两个端口号,比如一个是6379,另一个就是加1w的端口号16379。
二、节点间的内部通信机制
集群元数据的维护有两种方式:集中式、Gossip 协议。
redis cluster 节点间采用 gossip 协议进行通信。
1. 集中式
将集群元数据集中存储在一个节点上。典型代表是大数据领域的 storm。它是分布式的大数据实时计算引擎,是集中式的元数据存储的结构,底层基于 zookeeper对所有元数据进行存储维护。
优点
元数据的读取和更新时效性非常好,元数据的变更都能立即更新到集中式存储节点中,其它节点读取的时候就可以感知到;
缺点
所有的元数据的更新压力全部集中在一个地方,可能会导致元数据的存储有压力。
2. gossip 协议
redis 维护集群元数据采用的是gossip 协议,所有节点都持有一份元数据,不同的节点如果出现了元数据的变更,就不断将元数据发送给其它的节点,让其它节点也进行元数据的变更。
优点
元数据的更新比较分散,不是集中在一个地方,降低了压力;
缺点
元数据的更新有延时,可能导致集群中的一些操作会有一些滞后。
三、深入剖析gossip 协议
gossip 协议包含多种消息,包含 ping、pong、meet、fail等等。
meet:某个节点在内部发送了一个gossip meet 消息给新加入的节点,通知那个节点去加入我们的集群。然后新节点就会加入到集群的通信中
redis-trib.rb add-node
继续深入剖析ping消息
10000 端口:
每个节点都有一个专门用于节点间通信的端口,就是自己提供服务的端口号+10000,比如 6379,那么用于节点间通信的就是16379端口。每个节点每隔一段时间都会往另外几个节点发送 ping 消息,同时其它几个节点接收到 ping 之后返回 pong。
交换的信息:信息包括故障信息,节点的增加和删除,hash slot 信息等等。
总结