聊一聊zookeeper概念和主要功能

前言

  zookeeper是一个高可用、高性能的开源的分布式框架,具有保证客户端顺序一致性,原子性,顺序访问等特点。通过zookeeper可以实现发布/订阅,leader选举,分布式锁,分布式协调。元数据管理等功能。

基本概念

聊一聊zookeeper概念和主要功能

集群角色

zookeeper 将集群节点分为三种角色:

Leader角色:负责处理读写请求,同步数据Follower节点;

Follower角色:参与Leader选举,参与Leader写时的数据同步(过半节点写入),。负责处理读请求,而写请求需要转发给Leader节点去处理;

Observer角色:不参与Leader选举,不参与Leader写时的数据同步(过半节点写入),只提供读服务和同步leader节点数据。

zookeeper集群只有Leader节点才可以处理写请求,其他节点最多也只能提供读服务,因此,zookeeper集群的写性能并不高,适合读多写少的场景。

数据节点

zookeeper数据结构是树状结构,每一个数据就是一个节点,节点分为持久节点和临时节点,持久节点持久化存储到磁盘,除非主动删除,临时节点只存在session会话有效期内,session会话结束了临时节点会被清理掉。

Session会话

     客户端和zookeeper服务建立连接之后,zookeeper服务会为客户端创建一个session会话保存到内存,并为客户端分配一个sessionId,在sessionTimeout时间内这个会话都是有效的,客户端通过发送读写请求和心跳请求都会更新sessionTimeout的超时时间,如果超过sessionTimeout时间没有通信,服务端和客户端都会关闭当前连接。

     这里有个点需要注意的是,客户端和Follower节点建立连接也会创建session会话信息,Follower节点会将这些session会话信息转发给Leader节点,因此,就算客户端通过Follower节点转发到Leader节点上创建临时节点,Leader也能知道这些临时节点是由哪些session会话创建的。

Watcher监听器

客户端通过监听器,注册一些感兴趣的事件,当zookeeper服务端有事件变更,便会通知到客户端。