zookeeper

Day1:手写zk配置中心

  • 入门
  • zk分布式经典应用场景-配置中心
  • 手写配置中心
  • zk特性揭秘

一、简介

简介:zookeeper提供了一种集中式信息存储服务,可以看做是一个数据库。

特点:数据存储在内存中,类似文件系统的树形结构(文件和目录)

二、安装

1.单机版安装:

    复制zoo.cfg配置文件,即可安装。

三.基础

1.常用命令

可使用help获取命令指南:

  • ls 获取子节点
    create 创建节点
  • delete 删除节点,无法删除带子节点的节点
  • rmr 删除节点,包括子节点
  • get 从指定节点读取数据
  • set 将数据存入指定节点
  • ls2 查询指定节点之下的子节点,包括节点的元数据信息
  • sync 等待数据进行同步

2.znode-构成

  • 节点数据:存储的协调数据(状态信息、配置、位置信息等)
  • 节点元数据:(stat结构)
  • 数据大小上限:1M

3.stat结构

节点上的元数据信息

cZxid 创建该节点的zxid

ctime 该节点的创建时间

mZxid 该节点的最后修改zxid

mtime 该节点的最后修改时间

pZxid 该节点的最后子节点修改zxid

cversion 该节点的子节点变更次数

dataVersion 该节点数据被修改次数

aclVersion 该节点的ACL变更次数

ephemeralOwner 临时节点所有者会话ID,非临时节点为0

dataLength 该节点数据长度

numChildren 子节点数

除了ephemeralOwner、dataLength、numChild,其他属性都体现了顺序

4.znode-节点类型

gudGx6.png

5.临时节点-session

gudpyi.png

  • 一个客户端连接一个会话,由zk分配唯一的会话id
  • 客户端以特定的时间间隔发送心跳以保持会话有效,ticktime
  • 超过会话超时时间未收到客户端的心跳,则判断客户端死了;默认2倍ticktime
  • 会话中的请求按fifo顺序执行

四、zk配置中心应用

1.配置中心

2.配置中心更新流程

gudFiR.png

3.java Client

gudPq8.png

4.watch机制

客户端可以在znodes上设置watch,监听znode的变化

两类watch

  • data watch 监听数据变更
  • child watch 监听子节点变化

触发watch事件

  • created event:

    enabled with a call to exists.

  • deleted event:

    enabled with a call to exists,getdata and getchildren.

  • changed event:

    enabled with a call to exists and getdata.

  • child event:

    enabled with a call getchildren

5.watch深入

watch重要特性

  • 一次性触发:watch触发后即被删除。要持续监控变化,则需要持续设置watch
  • 有序性:客户端先得到watch通知,后才会看到变化结果

注意事项:

  • watch是一次性触发器,如果您获得了一个watch事件,并且希望得到关于未来更改的通知,则必须设置另外一个watch
  • 因为是一次性的,并且获取事件和发送watch新请求之间存在延迟,所以不能可靠地得到节点发生的每个更改
  • 一个watch对象只会被特定的通知触发一次。如果一个watch对象同时注册了exists、getdata、当节点被删除时,删除事件对exists、getdata都有效,但是只会调用watch一次。

6.zookeeper实现配置中心

配置中心操作流程

gudDQK.png

配置方式1

gudEDN.png

配置方式2

gudYne.png

7.


   转载规则


《zookeeper》 keyj 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
springCloud实践记录 springCloud实践记录
环境三台centos7虚拟机:node1、node4、node5 已搭建基础开发环境,服务发现、消息方、提供方、网关 高可用eureka集群启动命令: java -jar discovery_ha-0.0.1-SNAPSHOT.jar –s
2019-06-19 keyj
下一篇 
内存屏障和CPU缓存 内存屏障和CPU缓存
CPU性能优化手段-缓存一、CPU性能优化-缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。 例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存cache提高性能。 1、多级缓存L1 Ca
2019-06-18 keyj
  目录