持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
zookeeper能解决什么问题?
zooKeeper是经典的分布式数据一致性解决方案,一般可以用于:
- 维护各种配置信息 例如hbase中,客户端就是连接一个zookeeper,获得集群的配置信息,再进一步操作。消息队列kafka中也使用了zookeeper来维护broker的信息。
- 实现分布式锁
- 集群信息管理
- 生成分布式唯一ID 使用了zookeeper顺序节点的特性。
zookeeper的特点
- 高性能
zooKeeper是将全量数据存储在内存中,直接服务于客户端的所有非事务请求,特别适用于以读为主的场景
- 高可用
zooKeeper一般以集群的方式对外提供服务,每台机器都会在内存中维护当前的服务器状态,每台机器之间都保持着相互通信。只要集群中超过一半的机器都能够正常工作,那么整个集群就能够正常对外服务。
- 严格顺序访问
对于每个更新请求,ZooKeeper都会分配一个全局唯一的递增事务编号, 这个编号反映了事务操作的先后顺序
zookeeper的数据模型
zookeeper的数据节点可以视为树状结构或者目录结构,各节点被称为 znode。比如/root/path1/children,其中root为path1的父节点,path1为root的子节点。
zookeeper中的节点分为临时节点和永久节点。节点的类型在创建时确定,不能改变。
临时节点:生命周期依赖于创建它们的会话。一旦会话结束,临 时节点自动删除,或手动删除。每个临时对所有的客户端可见。ZooKeeper的临时节点不能拥有子节点。
持久化节点:该节点的生命周期不依赖于会话,只有显示执行删除操作时才会被删除。