- 1. zookeeper分布式协同
- 2. 目录CONTENTS01 / 自身特性02 / 应用案例03/ 分布式系统概论
- 3. 01 / 自身特性-初识zookeeperWhat is zookeeper ?一款分布式协同中间件将原本各工作节点间用于探测询问和协同的连接转移到
ZK统一管理;
- 4. 01 / 自身特性-集群架构服务端主从架构
C端实际只连接一个S节点
长连接
会话由leader统一跟踪管理
PING消息包含session信息
会话在S节点间透明迁移
- 5. 01 / 自身特性-存储结构与linux文件系统很类似,
体现为一棵完整的节点树
没有目录概念,所有节点都可以存储数据
有父子节点概念
各个server间的树结构能始终保持一致
- 6. 01 / 自身特性-节点类型持久节点
持久顺序节点
临时节点
临时顺序节点
- 7. 01 / 自身特性-节点属性含义1. Zxid全局事务id
2. 是否是临时节点
3. Version版本号,提供类似于CAS操作的功能
- 8. 01 / 自身特性-ACL认证类型
word,auth,digest,ip
操作类型
crwda
getACL/setACL命令
权限不可递归继承
- 9. 01 / 自身特性-watch1.watch监控的内容zk已确定
get/exist/getChildren都可附带watch
2.事件会发往客户端;异步线程捕捉事件和执行watch
3.I0Itec在原生客户端基础上的优化
事件重新分类,提高监听器的精准度
不关心的异常处理
序列化支持
- 10. 01 / 自身特性-对外接口create
delete
getData 可添加watch
setData
Exists 可添加watch
getChildren 可添加watch
- 11. 01 / 自身特性-使用场景配置中心(发布与订阅)
命名服务(服务的url)
负载均衡
CountDownLatchmaster选举
分布式锁
FIFO队列非抢
占式抢占式由zk事务的原子性和有序性提供保证
- 12. 01 / 自身特性-强一致性保证Reliable deliveryTotal orderCausal order某消息被单个server提交,最终会被所有server提交某server上消息a在b前提交,则所有server上a都在b前提交Client端消息的发送顺序决定最终每个server的提交顺序ZAB协议tcp/ip的顺序保证
客户端以及服务器的所有处理器均为单线程
Java队列的FIFO
WAL原子有序
- 13. 01 / 自身特性-ZAB协议选主同步广播为何要过半?三个阶段
- 14. 01 / 自身特性-并发模型:client单线程串行处理全部请求
通过队列满足FIFO
单线程执行监听函数
- 15. 01 / 自身特性-并发模型:leader单线程处理客户端请求
一个learner连接对应一个handler线程
sessionTrack线程
QuorumPeerMain线程发起主动连接
每个选举pair间只有一个条信道
- 16. 01 / 自身特性-并发模型:follower单线程nio处理客户端请求
Processor线程直接与leader通信
- 17. 01 / 自身特性-ZAB协议-leader流程
- 18. 01 / 自身特性-ZAB协议-follwer流程
- 19. 01 / 自身特性-并发模型: 单线程的好处减少并发问题
保证请求处理的有序性
写入的时候天然将其它请求锁死分布式的全局读写锁
- 20. 02 / 实际应用-dubbo
- 21. 02 / 实际应用-kafkatopic的新增删除
监听
partition/replica变更监听
topic元数据
leaderElection
消费端offst信息
Admin监听
- 22. 02 / 实际应用-codisKey-slot不可改变
Slot-group可改变
Slot节点记录group信息
Actions跟migrate_taks主要用于slot迁移
- 23. 03 / 分布式系统概论-拜占庭将军理论分布式场景下,当各个节点间的信道不可信任时,想达到分布式一致性是不可能的不臆想问题
不幻想解决所有问题
针对可预期的问题典型案例:跨机房容灾与分布式协同间的矛盾
- 24. 03 /分布式系统概论-CAP理论可用性系统总是能正常和及时的返回结果一致性分区容错性数据状态的变更对所有使用方是一致的容错也是有限度的
- 25. 03 /分布式系统概论-协同与一致机器故障或通讯故障
系统高负载导致响应缓慢,
且时好时坏
人为的修改导致的rebalance
dubbo的新增provider
kafka的新增了consumer
kafka修改了topic-meta信息
codis扩容分布式数据读取分布式事件触发1.分布式协同: 指的是捕捉到某种人为或者非人为的事件时,系统整体自我恢复和调整的能力;
2.提供协同能力的前提是本身的数据一致性
- 26. 03 /分布式系统概论-一致性算法比较
- 27. 03 /分布式系统概论-zk不适用的场景不适合高频写
对网络抖动敏感
不适合存储大量的数据
- 28. THANK YOU !