Zookeeper是什么?

服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,Zookeeper的出现就是将这些信息推送到各个节点,并且保证信息的一致性和可靠性

zookeeper是一个配置文件管理系统 切记 切记 切记!

Zookeeper是什么?

引用官方的说法:“Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务,比如同步,配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端 API”。

Zookeeper总体结构

Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。

Zookeeper逻辑图如下

1.客户端可以连接到每个server,每个server的数据完全相同。

2.每个follower都和leader有连接,接受leader的数据更新操作。

3.Server记录事务日志和快照到持久存储。

4.大多数server可用,整体服务就可用

Zookeeper数据模型

Zookeeper表现为一个分层的文件系统目录树结构(不同于文件系统的是,节点可以有自己的数据,而文件系统中的目录节点只有子节点)。

数据模型结构图如下

圆形节点可以含有子节点,多边形节点不能含有子节点。一个节点对应一个应用,节点存储的数据就是应用需要的配置信息。

1、zookeeper中为用保管数据时,使用的是树状结构(类似于目录树)

2、zookeeper的“目录”树中,每一个节点都叫做一个znode

3、 每一个znode都有自己的path

4、 每一个znode都有自己携带的一份数据(用户的)

5、 每一个znode都有自己的类型:

a) PERSISTENT                永久的(只要客户端不删除,则永远存在)

b) PERSISTENT_SEQUENTIAL         永久且有序号的

c) EMPEMERAL                 短暂的(只要客户端掉线,则会被自动删除)

d) EMPEMERAL_SEQUENTIAL  短暂且有序号的

znode维护的数据主要是用于存储协调的数据,如状态、配置、位置等信息,每个节点存储的数据量很小,KB级别,最大不要超过1M


Zookeeper 特点

顺序一致性:按照客户端发送请求的顺序更新数据。

原子性:更新要么成功,要么失败,不会出现部分更新。

单一性 :无论客户端连接哪个server,都会看到同一个视图。

可靠性:一旦数据更新成功,将一直保持,直到新的更新。

及时性:客户端会在一个确定的时间内得到最新的数据。

Zookeeper运用场景

1.数据发布与订阅 (我的业务用到这个特性,后面会有详细介绍)

应用配置集中到节点上,应用启动时主动获取,并在节点上注册一个watcher,每次配置更新都会通知到应用。

2.名空间服务

分布式命名服务,创建一个节点后,节点的路径就是全局唯一的,可以作为全局名称使用。

3.分布式通知/协调

不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。

4.分布式锁

Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节点的数据都是相同的。一个用户创建一个节点作为锁,另一个用户检测该节点,如果存在,代表别的用户已经锁住,如果不存在,则可以创建一个节点,代表拥有一个锁。

5.集群管理

每个加入集群的机器都创建一个节点,写入自己的状态。监控父节点的用户会受到通知,进行相应的处理。离开时删除节点,监控父节点的用户同样会收到通知。

====================================================================================================================

Zookeeper的核心功能:

1、替客户存取数据

2、为客户提供对数据的监听服务

Zookeeper可以实现的分布式协调服务包括:

1、统一名称服务

可以加入负载均衡,让action访问哪个服务器

2、配置管理

理解在做集群管理的时候需要在每台服务器上修改配置文件 如果一台服务器配置文件发生变化集群上的其他服务器也需要跟着一台一台手工更改 ,但是借助zookeeper来管理这些配置文件如果配置文件需要更改只需要更改zookeeper上为我们管理的配置文件即可集群上的所有配置文件都会读取该zookeeper上的配置管理文件,这样就不用一台一台修改服务器上的配置文件了

3.集群节点状态协调(负载均衡/主从协调)

主从是借助与zookeeper来自动选举出来的当主服务器挂了后,zookeeper会感知到,然后将该主节点从zookeeper中删除掉,从节点收到通知后,进入选举新的主节点流程

时间: 2024-12-28 20:23:28

Zookeeper是什么?的相关文章

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

浅谈分布式服务协调技术 Zookeeper

Google的三篇论文影响了很多很多人,也影响了很多很多系统.这三篇论文一直是分布式领域传阅的经典.根据MapReduce,于是我们有了Hadoop:根据GFS,于是我们有了HDFS:根据BigTable,于是我们有了HBase.而在这三篇论文里都提及Google的一个Lock Service -- Chubby,哦,于是我们有了Zookeeper. 随着大数据的火热,Hxx们已经变得耳熟能详,现在作为一个开发人员如果都不知道这几个名词出门都好像不好意思跟人打招呼.但实际上对我们这些非大数据开发

zookeeper原理(转)

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其发展历程无需赘述.在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的.可扩展的.分布式的.可配置的协调机制来统一系统的状态.Zookeeper的目的就在于此.本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本

zookeeper集群部署手册

一.  准备 1.  硬件 三台装好RHEL6.7_x64的x86服务器,机器名如下 zookeeper01 zookeeper02 zookeeper03 2.  软件 jdk-7u80-linux-x64.rpm zookeeper-3.4.8.tar.gz 二.  安装JDK(root用户执行) 1.  拷贝jdk-7u80-linux-x64.rpm到/data01/software/jdk 2.  用root登录 3.  执行以下命令 cd /data01/software/jdk r

zookeeper能做什么?

Zookeeper是Hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用. Zookeeper是针对大型分布式系统的高可靠的协调系统.由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统.

安装zookeeper

1.下载 下载Zookeeper-3.4.6.tar.gz  地址http://www.apache.org/dist/zookeeper/ 或者去我的百度云盘找: http://pan.baidu.com/s/1boRWJHt 2.上传压缩包并解压 我上传到 /apps/softWare cd  /apps/softWare tar -zxvf zookeeper-3.4.6.tar.gz -C /apps/zookeeper/ 3.配置 然后在对应的zookeeper-3.4.6/conf

ZooKeeper和Curator相关经验总结

一.关于ZooKeeper的watch用法,需要注意 详细说明如下: ZooKeeper Watches All of the read operations in ZooKeeper - getData(), getChildren(), and exists() - have the option of setting a watch as a side effect. Here is ZooKeeper's definition of a watch: a watch event is o

Zookeeper启动失败,报错 can not open chanel to 2

zookeeper 3.4.8 安装在 7 台不同的虚拟机上,配置文件如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/zookeeper clientPort=2181 server.1=master1:2888:3888 server.2=master2:2888:3888 server.3=slave1:2888:3888 server.4=slave2:2888:3888 server.5=slave3:2888:3888 s

ZooKeeper架构设计及其应用要点

ZooKeeper是一个开源的分布式服务框架,它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本. 总体架构 ZooKeeper分布式协调服务框架的总体架构,如图所示: ZooKeeper集群由一组

zookeeper集群搭建

三台机器,ip分别是192.168.1.231.192.168.1.232.192.168.1.233 用到工具:SecureCRT.WinSCP SecureCRT用于连接机器,执行命令 WinSCP用于往机器上传文件 前提:机器安装好SSH服务 下载zookeeper-3.3.5.tar.gz,利用WinSCP上传到231机器,假设路径为/home/grid/soft/利用SecureCRT,执行命令tar -zxvf zookeeper-3.3.5.tar.gz,解压文件mv zookee