来自于《从PAXOS到ZOOKEEPER分布式一致性原理与实践》读书笔记
是什么
是一个典型的分布式数据一致性的解决方案,可以基于ZK实现:数据pub&sub、负载均衡、命名服务、分布式锁、分布式队列等。
它保证了客户端的更新请求能在ZK结点上保持严格的顺序一致性、原子性,且对客户端而言其是Single System View,即无论连接到哪个ZK结点看到的数据是一致的。
性能:三台普通机器组成的集群可扛12~13W qps
可用性:一半以上机器可用,ZK集群会保持可用性
基本设计
一、集群角色
不是传统的master\slave,而是:
Leader:通过选举推出的一台Leader结点,可提供Read\Write。
Follower:提供Read,参与选举过程,参与Write的过半写成功。
Observer:提供Read,此类角色方便在不影响写性能的同时提高读性能。
二、会话
与客户端进行tcp长连,一个新的Session会话就开始了。通过此长连可定期心跳检查、发送请求。若连接断开,在指定时间内重连到另一台机器,之前的Session依然有效。
三、数据结点Znode
数据结点用路径来表示,如/ls/foo/bar。每个数据结点可保存数据内容,与节点的属性。
四、版本
五、Watcher
用户可以在指定结点上注册watcher,并在触发时推信息给客户端。
六、ACL(Access Control Lists)
类似于unix文件系统的权限控制,分为create\read\write\delete\admin五种权限。
ZAB协议
全称是ZooKeeper的原子消息广播协议。
网友评论