浅谈集群版Redis和Gossip协议
1.Redis Cluster的基本概念
单实例Redis架构
注:图片来自网络
Redis尽量不要做主存储!
Redis尽量不要做主存储!
Redis尽量不要做主存储!
集群与分片
客户端分片:
中间层分片:
服务端分片:
中间层分片的集群版Redis
服务端分片的官方集群版本
注:图片来自网络
2.Redis Cluster的基本运行原理
结点状态信息结构
当前集群状态
集群中各节点所负责的slots信息,及其migrate状态
集群中各节点的master-slave状态
集群中各节点的存活状态及不可达投票
Gossip协议的概念
gossip 协议(gossip protocol)又称 epidemic 协议(epidemic protocol),是基于流行病传播方式的节点或者进程之间信息交换的协议。
在分布式系统中被广泛使用,比如我们可以使用 gossip 协议来确保网络中所有节点的数据一样。
gossip protocol 最初是由施乐公司帕洛阿尔托研究中心(Palo Alto Research Center)的研究员艾伦·德默斯(Alan Demers)于1987年创造的。
https://www.iteblog.com/archives/2505.html
Gossip算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的状态都是一致的,当然这也是疫情传播的特点。
https://www.backendcloud.cn/2017/11/12/raft-gossip/
Gossip协议的使用
Meet 通过「cluster meet ip port」命令,已有集群的节点会向新的节点发送邀请,加入现有集群。
Ping 节点每秒会向集群中其他节点发送 ping 消息,消息中带有自己已知的两个节点的地址、槽、状态信息、最后一次通信时间等。
Pong 节点收到 ping 消息后会回复 pong 消息,消息中同样带有自己已知的两个节点信息。
Fail 节点 ping 不通某节点后,会向集群所有节点广播该节点挂掉的消息。其他节点收到消息后标记已下线。
注:图片来自网络
基于Gossip协议的故障检测
有半数以上的主节点将 node 标记为 PFAIL 状态。
当前节点也将 node 标记为 PFAIL 状态。
3.参考资料
https://cloud.tencent.com/developer/article/1398245
https://www.zhihu.com/question/21419897
https://www.backendcloud.cn/2017/11/12/raft-gossip/
https://www.cnblogs.com/zhoujinyi/p/11637483.html
https://catkang.github.io/2016/05/08/redis-cluster-source.html
点赞在看 养成习惯
热爱生活的你我 都比昨天更优秀!