文档章节

zookeeper 简析

西二旗之猫
 西二旗之猫
发布于 2017/03/27 18:23
字数 1095
阅读 20
收藏 1

写在前面:

       zookeeper 是为分布式应用程序提供高性能协调服务的一个开源项目,zookeeper本身也是一个分布式的应用,所有的zookeeper节点共同维护着一个与标准文件系统类似的共享分层命名空间以及持久化在磁盘的事务日志和快照,"命名空间"类似于Linux目录结构,与典型文件系统不同的是这个文件系统是,这个"命名空间",存在于内存之中,可以高效的读写,但是读取的效率远高于写入,读写效率比为10:1.

    客户端(一个第三方应用),通过tcp协议连接到zookeeper集群的一个服务器,进行 发送情况,获取响应,注册监听,和心跳检测等操作,如果这tcp连接中断,客户端连接到其他的服务器上去.只要zookeeper的集群中大多数集群机器是可以工作的那么集群就可以正常服务.

zookeeper的数据模型和命名空间

 

zookeeper的命名空间(官网图)

 

     zookeeper的命名空间是一个类似于Linux文件目录,每个节点我们成为--> znode, 比如 app1,app2,app3都是znode.

      znode可以是一个目录,也可以是一个文件,如果是文件那么它将存储 应用(app)的 状态信息,配置,位置信息,等 每个节点的数据量都非常小  通常在 1k到1000k之间,每一个 znode 都有一个版本号 ,当数据更新的时候 版本号会随之更新,zookeeper用数字标示每一个更新,来反应事务的顺序

      每个znode的数据写都是原子性的,  如果有大多数zookeeper集群中的节点(此节点是指zookeeper集群中的机器)响应写入成功,那么则认为写入成功,写操作是原子操作,只能成功或者失败不存在中间状态.

      znode有两种形式,一种是永久性的,另一种是临时znode,如果是临时znode那么在会话结束之后,将被销毁.

zookeeper集群结构

(官网图)

      zookeeper集群中节点分为,leader和follower和observe(观察者),

      follower负责处理client的请求,如果请求是读操作,那么follower将直接从本地副本里面响应client的请求,如何是写操作,这个请求将会被一个协议保护,这个协议要求所有的写操作都交由一台leader角色的机器来处理,

       leader 负责进行投票的发起和决议,最终更新状态 ,不负责任何client客户端单独请求的读取操作,leader将会向其他的所有follower发出更新通知,当多数follower响应更新成功之后,认为写入成功.

      observe 可以接收客户端连接,将写请求转发给leader节点。但是Observer不参加投票过程,只是同步leader的状态。

      其中 follower和observe都会和leader同步状态,当他们同步状态的时候都被成为learner(学习者).

     zookeeper 使用了 一个自定义的原子消息协议, 这个消息协议保证了消息更新是原子性的,zookeeper保证本地副本从不出现偏差.

zookeeper写入流程

 

      write request (写入请求):replicated database 是一个内存数据库  包含全部"命名空间"的信息,为了可恢复性,写入记录会保存到磁盘上,并且写入操作在写入到内存数据之前会序列化到磁盘上

     read request(读取请求): 读取请求直接请求 replicated database

zookeeper 选举机制

     zookeeper集群要求2n+1台机器组成.因为这样才能选举出leader.

     zookeeper 根据 paxos 算法决定是leader  在集群开始时 或者  leader崩溃后, zookeeper集群中每个节点都会投票,如果某个节点获得超过半数以上的节点的投票,则该节点就是leader节点了

     zookeeper核心是原子广播 zab -->两种模式 恢复模式和广播模式 ,zookeeper 集群刚刚启动的时候或者 leader崩溃的时候 进入 恢复模式,当 leader被选举出来之后,并且大多数follows 完成leader的同步之后,进入广播模式,

 

© 著作权归作者所有

上一篇: hdfs 原理
下一篇: Hadoop yarn 详解
西二旗之猫
粉丝 7
博文 51
码字总数 37328
作品 0
私信 提问
ZooKeeper教程资源收集(简介/原理/示例/解决方案)

菩提树下的杨过: ZooKeeper 笔记(1) 安装部署及hello world ZooKeeper 笔记(2) 监听数据变化 ZooKeeper 笔记(3) 实战应用之【统一配置管理】 ZooKeeper 笔记(4) 实战应用之【消除单点故障】...

easonjim
2017/09/05
0
0
Java之品优购部署_day01(3)

2.2 搭建 Zookeeper 集群 2.2.1 搭建要求 真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动十几个虚拟机 内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭...

我是小谷粒
2018/07/06
0
0
CentOS6 上安装 zookeeper-3.4.10 服务

参考两篇文章: zookeeper-3.4.10的安装配置: https://www.jianshu.com/p/5a4d7390bbfd Zookeeper3.4.10详解和安装: https://blog.csdn.net/qq_32642039/article/details/80887823 SpringBoot......

文文1
2018/10/26
24
0
Apache ZooKeeper 3.3.6 发布

Apache ZooKeeper 3.3.6 发布了,ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标...

oschina
2012/08/04
1K
0
linux- 快速安装zookeeper

  前言   zookeeper是apache的一个开源项目,在国内都有对应的镜像地址。安装之前确认已经安装了JDK。      下载   cd /root   wget https://mirrors.aliyun.com/apache/zookee...

linux运维菜
2018/08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部