zookeeper基础

245 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情

1 zookeeper集群概念

分布式协调服务

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

集群组成:
在一个zookeeper集群中,有一个leader和若干个follower,即一主多从结构。

一般来说写的请求都会经过leader节点写入,读请求则会在follower节点上请求

可是一个leader的话,那么这个leader就一定有概率挂掉,导致服务不可用,那么这个集群就不可靠了。其实,zookeeper是高可用的

这个问题的解决思路就是:

  • 可以快速的从follower中恢复一个leader出来。

所以zookeeper有两种运行状态:

  1. 可用状态:服务正常
  2. 不可用状态:leader节点挂掉了,正在选举新的leader

zookeeper的不可用状态恢复到可用状态是非常快的,不到200毫秒。并且zookeeper能够在请求恢复后再次提高吞吐量。

2 zookeeprt结构

zookeeper是一个目录树结构

image.png

它有多个node节点,每个node节点可以存储1M的数据,节点分为持久节点,临时节点

持久节点:当session链接断开后,或者服务重启后,节点依然存在,可以创建子节点,子节点可以是持久节点或临时节点

临时节点:当session链接断开后,临时节点就消失了,临时节点不能创建子节点

这两种节点都可以是序列化的,也就是序列节点

3 zookeeper特征

顺序一致性:即每个结点的数据都是严格按事务的发起顺序生效的,又分为全局有序和偏序

  • 全局有序:对于全局的server服务器来说,指如果在一台服务器上消息a在消息b之前发布, 则在所有的Server上a消息都将在b消息前被发布
  • 偏序:对于发布者来说,指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面

原子性:ZooKeeper 集群中提交事务,事务将 “全部完成” 或 “全部未完成”,不存在 “部分完成”

统一视图:无论客户端连接到哪台服务器,都能看到统一的结果视图,也就是全局一致性。

可靠性:一旦服务端数据的状态发生了变化,就会立即存储起来,除非此时有另一个请求对其进行了变更,否则数据一定是可靠的

及时性:系统的客户视图保证在特定时间范围是最新的,最终一致性