Zookeeper学习笔记

Zookeeper学习笔记

Zookeeper主要应用于大数据开发中的,统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等场景。该框架相当于大数据框架中的润滑剂。是大数据大数据开发工程师必须会的框架之一。本套课程讲解了,Zookeeper的集群安装、选举机制、监听器原理、写数据流程、Shell命令行操作、客户端API操作、服务器节点动态上下线综合案例以及企业真实面试题。

zk是开发分布式系统的基石

Google的三篇论文

  • GFS---- HDFS
  • BigTable — Hbase
  • MapReduce — Hadoop MR

chubby — zk

ZK能做什么?

  • 配置一致
  • HA
  • pub/sub
  • naming service
  • load balance
  • 分布式锁

重点:

一致、有头、数据树

1)一致(数据一致)

解决分布式系统数据一致性问题

协调服务

2)有头(leader) - 自动选举

3)数据树 - 就是一个树状的数据库

CAP:一致、可用、分区

CBP : 能力、漂亮、性格

角色

  • Leader
  • Follower
  • Observer(针对访问量特别大的集群)

数据模型

树状结构的数据树

/─
│ └─/zookeeper

│ └─/app
│ ├─/node1
│ ├─/node2
│ ├─/node3

Znode特点

  1. Znode兼具文件目录两种特点
  2. Znode操作的原子性
  3. Znode存储的数据大小有限制(比较小)
  4. 路径引用,必须是绝对路径(以/开头)
  5. Znode必须唯一

Znode组成部分

  1. stat 状态信息,版本,权限
  2. data 关联的数据
  3. children 子节点

Znode节点类型

  • 永久节点(不依赖回话,需要客户端执行删除操作才能删除)
  • 临时节点(不允许创建子节点,会话结束临时节点被自动删除)

Znode节点序列号特性

  • 自动增加一个序号,格式:”%10d“

创建节点

create [-s] [-e] path data acl

-s 临时节点

-e 顺序节点

create -s -e /tmp1

Watch机制

watch event的效果是一次性的,后续再次发生同样的事情,不会再次触发。

事件:

  • 节点创建
  • 节点删除
  • 节点改变
  • 子节点改变

client向服务端注册watcher==>服务端发生事件触发watcher==>客户端回调watch得到触发事件的代码

ZK选举机制

1、全新集群

​ 1)启动先给自己投一票

​ 2)比较myid,myid值越大权重越高

​ 3)票数过半,选举结束,产生leader

2、非全新集群

​ 1)过滤逻辑时钟,保持逻辑时钟一致的参加投票选举

​ 2)数据ID大的胜出

​ 3)数据ID一样,服务器ID(myid)大的胜出

典型应用

1、发布与订阅(配置中心)(Warter机制)

​ 数据库的url、username、password

​ Kafka中,维护broker的信息

​ dubbo中也广泛使用zookeeper管理一些配置来实现服务治理

2、命名服务

​ eg. Dubbo使用zk做为命名服务,维护全局的服务地址列表

3、分布式锁

​ 临时有序的节点 + watcher机制

4、分布式唯一ID

​ 临时有序的节点,取序号

5、主备架构

​ 自动切换主备( watcher机制)

ZAB协议

zookeeper原子广播:zookeeper atomic broadcast

有点像2阶段提交

参考连接:https://blog.csdn.net/qq_41112238/article/details/105300468

ZK脑裂问题

ACL权限控制

accces control list

参考连接:https://blog.csdn.net/qq_41112238/article/details/105240421

acl权限控制使用scheme:id:permission标识,
①scheme :权限模式

  • world 只有一个用户,代表登陆zookeeper的所有人(默认)
  • ip 对客户端使用ip地址认证
  • auth 使用已添加认证的用户认证
  • digest 使用用户名:密码方式认证

②id :授权对象
③permission :授予的权限

  • create 简写c 可以创建子结点
  • delete 简写d 可以删除子结点(仅下一级)
  • read 简写r 可以读取结点数据以及显示子结点
  • write 简写w 可以设置结点数据
  • admin 简写a 可以设置节点访问控制列表权限

例如setAcl /hadoop ip:192.168.2.142:crwda 表示ip地址为192.168.2.142的客户端对/hadoop有全部权限
getAcl path 读取权限
setAcl path acl 设置权限
addauth schema suth 添加认证用户

1、world授权模式

setAcl path world:anyone:
例如取消c创建权限,就不能再创建子结点

2、ip授权模式

命令setAcl path ip::
要用两个虚拟机,这个就不演示了…
主要就是限制客户端ip地址的

3、auth模式

`addauth digest : `添加认证用户
`setAcl  auth:: 	` 授权

4、digest授权模式
setAcl digest:::
这里的密码是经过SHA1及BASE64处理的密文
通过 echo -n sjh:sjh2019 | openssl dgst -binary -sha1 | openssl base64 生成密文,复制该结果

多种授权模式
同一个结点可以使用多种授权模式,用逗号隔开就行,例

超级管理员
假设超级管理员的账号是super:admin,先要为其生成密文:

客户端

1、原生客户端

2、Curator

监控命令

1、telnet 登陆zookeeper,登陆后提交相应的命令

格式:telnet zk机器ip 端口

eg. telnet 192.168.1.21 2181

然后执行: mntr

2、nc命令 ,执行相应的命令

eg. echo mntr | grep nc 192.168.1.21 2181

3、命令详情

  • conf 配置信息
  • cons 列出客户端连接到这台服务器连接/会话信息
  • crst 重置这台服务器连接/会话统计信息
  • dump 列出未处理的会话和临时节点
  • envi 服务器环境相关信息
  • ruok 测试服务器是否处于正确 运行状态,正常返回:imok 否则返回空
  • stat 服务器详细信息
  • srst 重置server状态
  • wchs 列出服务器watcher简洁信息
  • wchc 通过session分组列出watch的所有节点
  • mntr 列出集群的健康状态

4、命令执行异常提示

stat is not executed because it is not in the whitelist.

在 zoo.cfg配置文件中加入4lw.commands.whitelist=*,这句话就是将四字命令加入到白名单中

或者

在启动脚本里添加VM环境变量-Dzookeeper.4lw.commands.whitelist=*

监控工具

taokeeper 淘宝开源的可视化zk监控工具(有几年没有更新了)

https://github.com/alibaba/taokeeper

配置中心

百度:disconf

淘宝:diamond

美团:lion

携程:Apollo

视频参考地址

学习视频地址:https://www.bilibili.com/video/BV1Jx411a7Jx

学习视频地址:https://www.bilibili.com/video/BV1PW411r7iP

学习视频地址:https://www.bilibili.com/video/BV19b411772h

你可能感兴趣的:(java,大数据)