文章目录
一、分布式协调机制引用的场景
- 各个节点的数据一致性
- 保证任务只在一个节点上执行
最小节点(最先注册的节点)拿到执行权了之后,其他节点便没有权利执行。 - 如果一个节点挂了,怎么保证其他节点立刻知晓,并接替任务。
- 存在共享资源,互斥性,安全性如何保证。
二、zookeeper的设计
- 防止单点故障
集群方案(leader,follower).还能分担请求 - 每个节点的数据是一致的(必须要有leader)
leader,master; - leader选举机制,数据恢复
- 如何保证数据一致性?(分布式事务)
改进版本的2PC协议
结论:
- zab来实现选举:
集群内选举leader来调度简化集群的复杂度, - 为什么要做集群:
保证zookeeper协调工具的高性能和高可用(热备,同步) - 2pc做数据一致性:
引入了协调者(leader)和参与者(follower)的概念,具体见下方。
三、zookeeper集群
改进版的2PC事务:
- follower:处理读请求,转发写请求给leader
- leader接收到事务请求后会转发提议给集群中的每一个节点(observer除外)
- follwer节点收到提议后响应,返回ack
- leader收到过半节点响应ack,便会提交事务(commit),给客户端一个response。反之会执行回滚。
- 事务提交后会同步给Observer
3种角色特性:
- leader:集群的核心,起到了主导整个集群的作用,事务请求的调度和处理。
- follower:处理客户端的非事务请求,转发事务请求,参与事务的投票过程,参与leader选举投票
- observer:观察者角色&