古人学问无遗力,少壮工夫老始成。这篇文章主要讲述redis复制和故障转移相关的知识,希望能为你提供帮助。
redis复制和故障转移redis群集的节点分为主节点和从节点,主节点用于处理插槽,从节点复制主节点,如果主节点出现故障而脱机,则代替脱机主节点
节点是如何复制的?
使用CLUSTERREPLICATEnodeid命令使节点成为nodeid节点的从节点。 此节点的clusterState的myself的slaveof属性指向此nodeid的clusterNode,myself的flags属性id更改为redisnode
如何检测节点是否脱机
集群中的每个节点通过发送PING消息检测对方是否离线,如果能返回PONG消息则表示正常,如果在规定时间内不返回PONG消息,则将该节点标记为涉嫌离线如果确定具有超过集群一半主节点的节点涉嫌脱机,则该节点被标记为脱机,并且该节点向集群广播其故障消息。
故障切换
接下来是故障切换。 更具体地说,从主节点的所有从节点中选择一个节点,然后运行SLAVEOFnoone命令使其成为主节点。 新的主节点接管脱机节点的时隙分配,并向群集广播PONG消息,以告知其他节点自己是主节点。 然后,该主节点接收并处理自己插槽中的命令,以完成故障转移。
新的主节点是如何从从节点中选择的呢?
基于Raft算法的leader选举方法的实现,首先有一个表示该投票的配置纪元,当从节点发现主节点的下划线时,向集群广播消息,并向收到消息的其他没有投票给你的主节点
总结
【redis复制和故障转移】这就是redis的复制和故障转移的相关知识点,通过发送PING PONG命令来检测节点是否下线,通过RAFT算法选举出leader来进行故障的转移,投票机制,新的主节点会向集群中广播PONG消息来让其他主节点知道自己已经是主节点了,新的主节点处理自己负责的槽位的相关命令。
推荐阅读
- 跳频电台的设计与测试挑战
- kettle庖丁解牛第28篇之oracle数据迁移到mysql库
- 匿名访问FTP服务
- Go 语言入门很简单(Timer)
- 如何制作一个塔防小游戏
- 随笔安卓平台YUV数据(NV12/I420)渲染
- 团体项目_第11组_音悦app_原型
- 转自红鱼儿推荐内置android控件的开源项目alcinoe
- 使用fidder对安卓模拟器进行抓包