Zookeeper介绍
Zookeeper特性
zookeeper是一个开源的分布式协调服务.设计的目标是将那些复杂容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集.
一致性
从同一个客户端发起的事务请求,最终在zookeeper会按顺序执行.
原子性
所有事务请求的处理结果在所有节点上都是一致的.
单一试图
无论客户端连接上的是哪个zookeeper,看到的服务端数据模型都是一致的.
zookeeper的数据模型类似于一个文件系统,节点(ZNode)之间的关系就像文件系统的目录结构一样.不过zookeeper将全部数据存储在内存中,以此来实现服务器的高吞吐,减少延迟的目的.
zookeeper的集群通常由3-5台组成,只要集群中一半以上的机器正常工作,整个集群就能正常对外工作.
对于客户端的每个请求,zookeeper都会分配全局唯一的递增编号,这个编号反应了事务的执行顺序.
Zookeeper集群
集群中有三种角色:Leader,Fllower,Observer.
所有的请求都由leader处理,它负责将一个客户端请求转换成一个事务,并将事务分发给其他节点,超过半数正确反馈之后,会再次发送commit消息,要求对前一个事务提交。
leader服务器为客户端提供读写服务.其他的只提供读服务,唯一的区别在于Observer不参与选择leader的过程,也不参与写操作的“过半写成功”策略.
在zk中,客户段是通过tcp长连接和zk建立连接的.对外的默认端口号是2181.客户端Session的sessionTimeout值用来设定客户端会话超时时间.如果服务器压力过大,或者网络原因,断开了与ZK的连接,只要在timeout时间之内连上,那么之前session依然有效。
ZNode
zk中的数据节点叫做Znode,数据模型是ZNode Tree,由斜杆进行分割,就是一个Znode,比如:/foo/path.每个节点上都会保存自己的内容,同时保存一系列属性.
Znode可以分为持久节点和临时节点方案.持久节点只有主动remove才会被移除,临时节点的生命周期和客户端会话绑定,一旦客户端失效,这个节点也失效.
zk还允许用户为每一个节点添加一个属性:SEQUENTIAL.在节点被创建时,会在名字之后加上一个整形数字.
ACL
zk采用acl来进行权限控制,类似unix文件系统的权限控制.
1.create 2.read 3.write 4.delete 5 admin(设置节点ACL权限)其中create和delete都是针对子节点的操作.
权限模式
ip
ip模式通过地址粒度进行权限控制.例如:"ip:192.168.1.2".
digest
这个是最常用的模式.用类似"username:password"形式的权限标识,zk会进行两次编码(sha-1,base64)
super
是一种特殊的digest模式. 在zk启动的时候加上-Dzookeeper.DigestAuthenticationProvider.superDigest=username:password
是用这个账号就可以拥有所有的权限.
world
world是一种最开放的权限控制模式,从其名字中也可以看出,事实上这种权限控制几乎没有任何作用,对所有用户开放.
ZAB协议(原子消息广播协议)
ZAB协议包括两种基本的模式,分别是奔溃恢复和消息广播.当leader出现网络中断或者奔溃的是很好,zab协议会进入自动恢复模式并重新选举leader,当集群中过半的机器与新leader完成数据同步,就会退出恢复模式。
当新的一个节点加入集群的时候,会先进入数据恢复模式:找到leader所在的服务器,同步数据,然后在一起参与到消息广播流程中国年.
ZAB协议的消息广播过程使用的是一个原子广播协议,类似一个二段提交过程.
假设一个事务被提交了,并且得到过半的节点的ack反馈,但是在发送commit之前leader挂掉了.假设leader现在广播了消息P1,P2,C1,P3,C2.其中一台只收到了P1P2C1 ,另一台只收到了P1P2.那么重新选举leader的时候会把拥有最大编号C1的那台选举为leader,原先的leader重新接入的时候,P3,C2 会被抛弃
相关推荐
zookeeper概述 zookeeper安装 zookeeper结构与原理 zookeeper应用
介绍了关于zookeeper的使用、原理及经典案例,可供学习参考
Zookeeper 是一个分布式协调服务,源自 Google 的 Chubby 实现,是 Hadoop 生态系统中的重要组成部分。它的设计目标是解决分布式环境中的协调问题,如同步服务、配置维护和命名服务。Zookeeper 提供了一组简单的原语...
`01_zookeeper介绍和应用场景.docx`、`02_使用java操作zookeeper创建节点.docx`、`03_使用java操作zk创建节点02.docx`这些文档可能涵盖了如何连接ZooKeeper服务器,创建持久节点和临时节点,以及如何监听节点变化等...
**二、Zookeeper介绍** Zookeeper是由Apache基金会开发的一个开源项目,它提供了一个高可用、高性能的分布式协调服务。Zookeeper的主要功能包括命名服务、配置管理、集群同步、分布式锁等,是构建分布式系统的重要...
ZooKeeper技术原理与应用 ZooKeeper是一种分布式协调服务,用于维护和监控存储数据状态的变化,解决分布式集群中应用程序的一致性问题。 ZooKeeper的核心是原子广播机制,保障了各个Server之间的同步。 ZooKeeper...
**Zookeeper 简介与搭建** Zookeeper 是一个分布式协调服务,由雅虎和 Apache 软件基金会共同开发,是 Hadoop 生态系统中的重要组成部分。它提供了一种集中式的服务,用于命名、配置管理、分布式同步、组服务等,常...
- **Zookeeper 介绍** Zookeeper 是一个分布式协调服务框架,旨在简化分布式应用程序的开发。它提供了一个高性能的协同工作系统,使得开发者能够专注于应用程序的核心逻辑,而无需过多关注分布式系统的复杂性。 -...
1.zookeeper介绍、安装方式和应用场景 2.zookeeper的单机安装和配置文件介绍 3.zookeeper的集群安装 4.zookeeper的数据结构、节点类型、数据持久化 5.zookeeper命令行相关操作 6.zookeeper的基本特性、watch监听和...
4. **Zookeeper介绍**:Zookeeper是Apache的一个开源项目,它为分布式应用提供了高可用的数据存储和协调服务。书中会详细解释Zookeeper的设计目标、架构以及核心功能,如命名服务、配置管理、分布式锁等。 5. **...
zookeeper简介,方便了解zookeeper的前世今生,方便大家。
Zookeeper 介绍 - **定义**: ZooKeeper 是一款分布式的、开源的应用程序协调服务。它最初由雅虎实验室开发,并于2008年成为Apache顶级项目。ZooKeeper 的设计目的是解决分布式环境中常见的协调问题。 - **功能**: ...
1. **Zookeeper介绍** Zookeeper是由Apache基金会开发的开源项目,它提供了一种简单易用的API,用于实现分布式系统的协调。Zookeeper的主要功能包括节点创建与删除、数据发布与订阅、选举机制、分布式锁等,是构建...
二、Spring Cloud Zookeeper介绍 Spring Cloud Zookeeper是Spring Cloud生态中的一个组件,它为Spring Boot应用提供了与Zookeeper集成的能力,实现了服务注册与发现。通过使用Spring Cloud Zookeeper,我们可以轻松...
三、Zookeeper介绍 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、设计稳定...
#### 三、Zookeeper介绍 ZooKeeper 是一个分布式协调服务框架,主要用于解决分布式系统中常见的协调问题。它由雅虎开发,并作为 Google 的 Chubby 的开源实现。ZooKeeper 的设计目标是简化那些容易出错的分布式一致...