ZooKeeper学习笔记-1---ZooKeeper简介

Apache ZooKeeper是由Apache Hadoop的子项目发展而来,可为分布式应用提供高效且可靠地分布式协调服务,提供诸如统一命名服务、配置管理和分布式锁等分布式基础服务。ZooKeeper采用ZAB(Zookeeper Atomic Broadcast)一致性协议算法,没有使用传统的Paxos算法。

1.ZooKeeper是什么

ZooKeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于ZooKeeper实现诸如数据发布订阅、负载均衡、命名服务、分布式协调通知、集群管理、Master选举、分布式锁和分布式队列等功能。ZooKeeper可以保证分布一致性包括:顺序一致性、原子性、单一视图、可靠性、实时性。

2.ZooKeeper的设计目标

ZooKeeper致力于提供一个具有严格顺序访问控制能力的分布式协调服务,它是基于ZooKeeper实现了一些复杂的同步原语。ZooKeeper的设计目标包括:简单的设计模型、可以构建集群、顺序访问、高性能等四个目标。

3.ZooKeeper中使用的基本概念

3-1.集群角色

通常在分布式系统中,构成一个集群的每一台机器都有自己的角色,最典型的集群模式就是Master/Slave模式。在这种模式中,所有可以执行写操作的机器称为Master机器,所有可以通过异步方式获取最新数据并提供读服务的机器称为Slave机器。在ZooKeeper中,没有沿用传统的Master/Slave概念,而是引入了Leader、Follower和Observer三种角色。ZooKeeper集群中的所有机器通过一个Leader选举过程来选定一台Leader机器,Leader服务器为客户端提供读和写服务。Follower和Observer都能够提供读服务,唯一区别的是Observer机器不参与Leader选举过程,也不参与写操作的半“过半写成功”策略,因此Observer可以在不影响写性能的情况下提升集群的度性能。

3-2.会话(Session)

Session是指客户端会话。在ZooKeeper中一个客户端连接指的是客户端和服务器之间的一个TCP长连接。ZooKeeper对外的服务端口默认是2181,客户端启动的时候,首先会与客户端建立一个连接,从第一个连接建立开始,客户端会话的生命周期也就开始,客户端可以通过心跳检测与服务器保持有效会话,也能够向Zookeeper服务器发送请求并接受响应,还能够接受服务器的Watch时间通知。

3-3.数据节点

ZooKeeper中节点分为两类:第一类机器节点,即构成集群的机器;第二类数据节点——ZNode。Zookeeper将所有数据存储在内存中,数据模型是一棵树,有斜杠进行分割的路劲,就是一个ZNode,例如/zk-book/path1。每个ZNode上都会保存自己的数据内容,同时还会保存一系列属性信息。

3-3.版本

数据节点会维持一个叫Stat的数据结构,Stat中记录了ZNode的当前版本、当前子节点版本、当前ACL版本。

3-4.Watcher

Watcher—事件监听器,是ZooKeeper的一个非常重要的特性。ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定账户触发的时候,ZooKeeper服务器会将事件通知感兴趣的客户端。该机制是实现分布式协调服务的重要特性。

3-5.ACL(Access Control Lists)

ZooKeeper采用ACL策略来进行权限控制,类似于UNIX文件系统的权限控制。ZooKeeper定义一下5种权限:CREATE,READ,WRITE,DELETE,ADMIN。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值