文档章节

Zookeeper 之一、 大数据高手的必经之路

captainliu
 captainliu
发布于 2016/09/12 13:00
字数 1032
阅读 43
收藏 0

zookeeper是google的Chubby的一个开源的实现,是hadoop的分布式协调服务

 

zookeeper优点:

特点                         说明

最终一致性               为客户展示同一个视图,这是zookeeper里面一个非常重要的功能

可靠性                      如果消息被一台服务器接受,那么它将被所有的服务器接受

实时性                      Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读取数据之前调用sync()接口。

独立性                      各个客户端之间互不干预

原子性                      更新只能成功或者失败,没有中间状态。

顺序性                      所有server,同一消息发布,顺序一致。

 

zookeeper  的工作原理,

1、每个server在内存中存储了一份数据;

2、Zookeeper启动时,将从实例中选举一个leader(Paxos协议)

3、leader负责处理数据更新等操作

4、一个更新操作成功,当且仅当大多数Server在内存中成功修改数据。

 

 

2888端口表示这个服务器与集群中的leader服务器交换信息的端口;3888端口表示的是万一集群中的leader服务器挂了,需要一个端口来进行重新进行选举,选出一个新的leader,而这个端口就是用来执行选举时服务器进行相互通信的端口。

tickTime    发送心跳的间隔时间   

dataDir      zookeeper中保存数据的目录

dataLogDir 存储日志目录

clientPort   客户端访问zookeeper的端口

 

initLimit  :这个配置是用来配置zookeeper接受客户端初始化连接时最长能忍受多少个心跳时间间隔数。

syncLimit :leader与Follower之间的最长能忍受多少个心跳时间间隔。

 

为了保证事务的一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。现实中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每一次leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

 

zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做zab协议。zab协议有两种模式,他们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,zab进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。

 

选举leader不但要看票数,还先要比对pid号如果pid号小于follower,那就不会选他作为leader

 

zookeeper 中的节点分为两类 : 短暂的(ephemeral)和持久的(persistent)

 

create    -e   -s  /节点名称       节点内容

 

     -e    短暂的

     -s    创建不重复的

 

 

 

可以传watcher:exists 、  getChildren 、getData

可以触发watcher给客户端发送消息: create、delete、setdata

 

rmi 

 

分布式锁机制

 

 

第四课、

 

进入zookeeper客户端

zkCli.sh 

 

查看zookeeper命令

 

创建节点:

 

修改节点:

 

 

cZxid:

mZxid:修改后的数据id

pZxid:最新节点的id号

dataVersion:数据版本号,随着数据更改而递增

dataLength:数据长度

numChildren:有多少个子节点

 

 

第五课、zookeeper的节点类型

ephemeral:客户端和服务端断开连接,节点就消失了

persistent

 

 

watcher是zookeeper的一个核心功能,watcher可以监控目录节点的数据变化以及子目录的变化,一点这些状态发生变化,服务器就会通知所有设置在这个目录上的watcher,从而每个客户端都很快指定他所关注的目录节点的状态变化,而做出相应的反应。

可以设置观察的操作:exists,getChirldren,getData

可以触发观察的操作:create,delete,setData

© 著作权归作者所有

captainliu
粉丝 11
博文 106
码字总数 83801
作品 0
昌平
程序员
私信 提问
ZooKeeper教程资源收集(简介/原理/示例/解决方案)

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

easonjim
2017/09/05
0
0
Kafka Partition Leader选主机制

Kafka Partition Leader选主机制 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网企业架构...

tantexian
2018/11/14
360
0
详解分布式应用程序协调服务Zookeeper

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 主从结构:HDFS、Yarn、HBa...

李金泽
2018/03/09
0
0
微服务引擎 ZooKeeper 版正式启动小范围内测

在微服务和大数据领域,ZooKeeper 可以说是一个相当老牌的微服务引擎了,无论是在微服务领域的 「服务注册发现」 或「 配置管理」,还是在多个大数据平台级产品背后负责分布式协调,ZooKeep...

银时
07/25
0
0
Zookeeper系列(三):应用场景

Zookeeper被广泛应用于各种分布式集群场景中,比如Hadoop、Storm、Spark、Kafka等,要想学好大数据分析,不可避免的要用到大规模机器集群,了解和掌握Zookeeper的工作原理将会对学好大数据分...

守望者之父
09/06
50
0

没有更多内容

加载失败,请刷新页面

加载更多

Django设置启动环境

1.命令行指定环境 我们知道正常的django项目都是有多个环境的配置的,在启动时需要指定启动环境,如: python manage.py runserver --settings=myapp.settings.test 其中的myapp.settings....

恒宝乐园
34分钟前
8
0
DRF 获取DefaultRouter 对应的url

命令 python manage.py show_urls urls.py from user.router import core_routerurlpatterns = [ path('user/login/', views.LoginView.as_view(), name='login'), path('user/log......

hyhlinux
今天
4
0
uniapp登录流程详解uni.login

uni.login(OBJECT) 登录 H5平台登陆注意事项: 微信内嵌浏览器运行H5版时,可通过js sdk实现微信登陆,需要引入一个单独的js,详见 普通浏览器上实现微信登陆,并非开放API,需要向微信申请,...

达达前端小酒馆
今天
5
0
目标检测中 yolo 的mAP是什么含义?

mAP定义及相关概念 P => precision,即 准确率 R => recall,即 召回率 PR曲线 = >即 以 precision 和 recall 作为 纵、横轴坐标 的二维曲线。一般来说,precision 和 recall 是 鱼与熊掌 的...

小松1
今天
4
0
用jdk1.8的断言来做非空判断

Assert.notNull(user, "没有获得登录用户信息"); 看源码如下: public static void notNull(Object object, String message) { if (object == null) { throw new IllegalArgum......

architect刘源源
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部