开发者学堂课程【精通Spring Cloud Alibaba:Raft采用日志复制形式同步数据】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10109
Raft 采用日志复制形式同步数据
内容介绍
一、举例
二、如何实现日志的复制
三、回头看 Raft 协议有什么感悟
四、怎么表述数据一致性问题
一、举例
假设有三个节点为 nacos 领导者超时时间100ms、naocs 跟随者超时时间150ms、nacos 跟随者超时时间200ms,所有请求都会转发给 leader 事件,leader 写完后才会同步给 follower,依然遵循过半机制,这时候要满足过半的跟随者同意接收,leader 才会标记该数据是可提交状态。
二、如何实现日志的复制(数据是如何保持一致性的 类似 zap两阶段提交协议)
1.所有的写的请求都是统一的交给我们的领导角色完成,写入该对应的日志,标记该日志为被提交状态。
2.为了提交该日志,领导角色就会将该日志以心跳的形式发送给其他的跟随者节点,只要满足过半的跟随者可以写入该日志,则直接通知其他的跟随者节点同步该数据,这个过程称作为日志复制过程。
三、回头看下 Raft 协议算法有什么感悟?
其实有很多相似之处,无非在 Zab 协议中是通过 myid 谁大谁为领导,而 Raft 协议中是动态形成的,生成随机数,它也是要满足过半机制的。
中间 leader 超时时间肯定是最小的
四、怎么表述数据一致性问题
去面试时,谈谈 nacos 集群怎么保持数据一致性问题,原理是根据 Raft 协议去保持数据一致性问题。
选举的过程是怎么样的? (回顾怎么表述数据一致性)
1. 默认的情况下每个节点都是为跟随者。
2. 每个节点会随机的生成一个选举的超时时间,例如大概是100-300ms。
在这个超时的时间范围类必须要等待。
3. 超时时间过后,当前的节点的状态可能由跟随者变为竞选者状态。
会给其他的节点发出选举的投票通知,只要该竞选者有超过半数以上即可选为领导角色。
这点明白后面试官问 nacos 集群其实是一样的,nacos 就是 cp 的模式。