zookeeper-认识zookeeper

245 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

zookeeper能解决什么问题?

zooKeeper是经典的分布式数据一致性解决方案,一般可以用于:

  1. 维护各种配置信息 例如hbase中,客户端就是连接一个zookeeper,获得集群的配置信息,再进一步操作。消息队列kafka中也使用了zookeeper来维护broker的信息。
  2. 实现分布式锁
  3. 集群信息管理
  4. 生成分布式唯一ID 使用了zookeeper顺序节点的特性。

zookeeper的特点

  1. 高性能

zooKeeper是将全量数据存储在内存中,直接服务于客户端的所有非事务请求,特别适用于以读为主的场景

  1. 高可用

zooKeeper一般以集群的方式对外提供服务,每台机器都会在内存中维护当前的服务器状态,每台机器之间都保持着相互通信。只要集群中超过一半的机器都能够正常工作,那么整个集群就能够正常对外服务。

  1. 严格顺序访问

对于每个更新请求,ZooKeeper都会分配一个全局唯一的递增事务编号, 这个编号反映了事务操作的先后顺序

zookeeper的数据模型

zookeeper的数据节点可以视为树状结构或者目录结构,各节点被称为 znode。比如/root/path1/children,其中root为path1的父节点,path1为root的子节点。

zookeeper中的节点分为临时节点和永久节点。节点的类型在创建时确定,不能改变。

临时节点:生命周期依赖于创建它们的会话。一旦会话结束,临 时节点自动删除,或手动删除。每个临时对所有的客户端可见。ZooKeeper的临时节点不能拥有子节点。

持久化节点:该节点的生命周期不依赖于会话,只有显示执行删除操作时才会被删除。