Zookeeper笔记

前言:个人学习笔记,不专业。勿怪 

一、入门 

1.1概念:

Zookeeper是一个开源的分布式的,为分布式提供协调服务的Apache项目

工作机制:

Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

Zookeeper=文件系统+通知机制

文件系统:存放的节点信息

通知机制:节点有数据变化时会通知已经注册监听的人

1.2特点

a.Zookeeper一个领导者leader,多个follower组成的集群

b.集群中只要有半数以上的节点存活,Zookeeper就能正常工作(四个节点,挂了两个,不能继续用 )

 c.全局数据一致,每个server保存一份相同的数据副本,client无论连接那个server,数据都是一致的。

d.更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行

e.数据更新原子性,一次数据更新要么成功,要么失败。

f.实时性,在一定时间范围内,Client能读取到最新数据

1.3数据结构

1.4应用场景

提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

 统一命名服务

 统一配置管理

 统一集群管理

 服务器动态上下线

 软负载均衡

 1.5下载

官网:Apache ZooKeeper

二、Zookeeper安装

配置参数:zookeeper的配置参数详解(zoo.cfg) - @ 小浩 - 博客园

三、Zookeeper内部原理

3.1选举机制(面试重点 )

1)奇数机制,集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器 

2)Zookeeper虽然在配置文件中并没有指定Master 和 Slave,但是,Zookeeper工作时,是有一个节点为Leader,其他节点为Follower,Leader是通过 内部的选举机制临时产生的

3)以一个简单的例子来说明整个选举的过程 

假设有五台服务器组成的Zookeeper集群,它们的ID从1到5。同时它们都是最新启动的。在存放数据量上也一致的。假设这些服务器依次启动。

  • 服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
  • 服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
  • 服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
  • 服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
  • 服务器5启动,后面的逻辑同服务器4成为小弟。

参看:理解zookeeper选举机制 - 帅LOVE俊 - 博客园  这个比较全面

3.2节点类型

持久 :客户端和服务端断开连接后,创建的节点不删除

短暂:客户端和服务端断开连接后,创建的节点自己删除(使用场景,Client挂掉了,zk中节点删除,能通知到对应的监听客户端不再访问这个机器。)

 1. 创建持久节点

使用以下命令在根目录下创建“/School”节点,存放数据为QingHua:

create /School QingHua

2. 创建持久顺序节点

在“/School”节点下创建“/Student”子节点,在“/Student”子节点下创建多个持久顺序节点。使用“-s”参数表示创建顺序节点:

create /School/Student AllTheStudents

create -s /School/Student/s_ Michael

create -s /School/Student/s_ Jack

create -s /School/Student/s_ Tom

3. 创建临时节点

在“/School”节点下创建临时节点“/Teacher”。参数“-e”表示创建临时节点:

create -e /School/Teacher EphemeralTeachers

4. 创建临时顺序节点

在“/School”节点下创建永久节点“/Teacher”。参数“-e”表示创建临时节点,使用“-s”参数表示创建顺序节点:

create /School/Teacher AllTheTeachers

在“/School/Teacher”节点下创建若干个临时顺序节点:

create -e -s /School/Teacher/t_ TeacherHuang

create -e -s /School/Teacher/t_ TeacherZhou

create -e -s /School/Teacher/t_ TeacherZhang

3.3监听器的原理 (面试重点)

 3.4写数据的流程

四、分布式安装部署

4.1、分布式安装部署

4.2、操作命令

4.3API应用

1)创建连接

2)创建节点

3)获取节点,并监控节点变化

4)判断子节点是否存在

4.4服务器动态上下线案例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值