一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情。
1 zookeeper集群概念
分布式协调服务
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
集群组成:
在一个zookeeper集群中,有一个leader
和若干个follower
,即一主多从结构。
一般来说写的请求都会经过leader
节点写入,读请求则会在follower
节点上请求
可是一个leader的话,那么这个leader就一定有概率挂掉,导致服务不可用,那么这个集群就不可靠了。其实,zookeeper是高可用的。
这个问题的解决思路就是:
- 可以快速的从follower中恢复一个leader出来。
所以zookeeper有两种运行状态:
- 可用状态:服务正常
- 不可用状态:leader节点挂掉了,正在选举新的leader
zookeeper的不可用状态恢复到可用状态是非常快的,不到200毫秒。并且zookeeper能够在请求恢复后再次提高吞吐量。
2 zookeeprt结构
zookeeper是一个目录树结构
它有多个node节点,每个node节点可以存储1M的数据,节点分为持久节点,临时节点
持久节点:当session链接断开后,或者服务重启后,节点依然存在,可以创建子节点,子节点可以是持久节点或临时节点
临时节点:当session链接断开后,临时节点就消失了,临时节点不能创建子节点
这两种节点都可以是序列化的,也就是序列节点
3 zookeeper特征
顺序一致性:即每个结点的数据都是严格按事务的发起顺序生效的,又分为全局有序和偏序
- 全局有序:对于全局的server服务器来说,指如果在一台服务器上消息a在消息b之前发布, 则在所有的Server上a消息都将在b消息前被发布
- 偏序:对于发布者来说,指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面
原子性:ZooKeeper 集群中提交事务,事务将 “全部完成” 或 “全部未完成”,不存在 “部分完成”
统一视图:无论客户端连接到哪台服务器,都能看到统一的结果视图,也就是全局一致性。
可靠性:一旦服务端数据的状态发生了变化,就会立即存储起来,除非此时有另一个请求对其进行了变更,否则数据一定是可靠的
及时性:系统的客户视图保证在特定时间范围是最新的,最终一致性