• zookeeper01


    zookeeper

    中间件,提供协调服务
    作用分布式系统

    特性
    数据一致性,数据按照顺序分批入库
    原子性:事务要么成功要么失败,不会局部化
    单一视图:客户端连接集群中的任一zk节点,数据是一致的。
    可靠性 每次对zk的操作状态保存在服务端
    实时性 客户端可以读取zk服务端的最新数据

    jdk 与 zookeeper 的安装

    cd jdk8
    pwd
    /usr/jdk8

    vi /etc/profile

    1 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
    2 export JAVA_HOME=/usr/jdk8
    3 export ZOOKEEPER_HOME=/usr/local/zookeeper
    4 export CLASSPATH=.:JAVA_HOME%lib/dt.jar:%JAVA_HOME%/lib/tools.jar
    5 #export PATH=$PATH:$JAVA_HOME/bin
    6 export PATH=$PATH:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin


    刷新配置文件
    source /etc/profile

    目录结构

    bin 主要运行命令
    conf 存放配置文件
    contrib 附加一些功能
    dist-maven mvn编译后的目录
    docs 文档
    lib jar包
    recipes 案例demo代码
    src 源码

    配置文件


    cd conf
    cp zoo_sample.cfg zoo.cfg

     1 tickTime 用于计算时间单元,比如session超时
     2 initLimit 用于集群,允许从节点连接并同步到master节点的初始化连接时间
     3              以tickTime的倍数来表示
     4 syncLimit 用于集群,master 主节点与从节点之间发送消息,请求和应答时间长度(心跳检测)
     5 
     6 dataDir 必须配置
     7 dataLogDir 日志目录,如果不配置会和dataDir公用
     8 
     9 dataDir=/usr/local/zookeeper/dataDir
    10 dataLogDir=/usr/local/zookeeper/dataLogDir
    11 
    12 clientPort 
    13 连接服务器的端口,默认2181        

    启动

    cd bin
    ./zkServer.sh start

    数据模型

    是一个树形结构,类似tree.js组件

    每个节点都称为znode ,它可以由子节点,也可以有数据

    每个节点分为临时节点和永久节点,临时节点在客户端断开后消失

    每个zk节点都有版本号

    每当节点数据发生变化,该节点的版本号就会累加

    删除/修改过时节点,版本号不匹配则会出错

    每个zk节点数据不宜过大

    节点可以设置acl,可以通过权限来限制用户的访问

    作用

    master 节点选举,主节点挂了以后,从节点会接受工作,保证节点唯一,即首脑模式,保证集群高可用
    统一配置文件管理,只需部署一台服务器,则可以把相同的配置文件同步更新到其他所有的服务器
    发布于订阅 ,发布者把数据存在znode上,订阅者会读取这个数据
    提供了分布式锁
    集群管理,集群保证数据的强一致性

    常用命令

     1 ls
     2 ls 2
     3 stat
     4 get 取出当前节点数据
     5 
     6 create  创建节点
     7 create /hello hello-zookeeper
     8 create -e  创建临时节点
     9 create -e /hello/tmp  hello-zookeeper
    10 create -s /hello/sec seq   创建顺序节点
    11 
    12 set path data [version]
    13 set /hello hello-zookeeper-data
    14 
    15 delete path [version]

    watcher机制

    针对每个节点的操作,都会有一个监督者 ,watcher

    当监控的某个对象(znode)发生了变化,则会触发watcher事件

    zk中的watcher是一次性的,触发后立即销毁

    watcher事件类型

    ls 为父节点设置watcher,创建,删除节点触发:NodeChildrenChange
    ls 为父节点设置watcher ,修改节点不触发事件

    watcher使用场景

    统一资源配置

    acl

    权限字符串缩写
    crdwa

    create 创建子节点
    read 获取节点/子节点
    delete 删除子节点
    write 设置节点数据
    admin 设置权限

    设置密码

    auth:user:pwd:cdrwa
    digest:user:BASE64(SHA(pwd)):cdrwa
    addauth digest user:pwd
    
    addauth digest admin:admin  注册用户名
    setAcl  /hello/abc auth:admin:admin:cdrwa
    
    setAcl /hello/test digest:admin:xxxx:cdra 

    四字命令

    yum install nc

     1 echo [commond] | nc [ip] [port]
     2  
     3      
     4 [stat] 查看zk的状态信息,以及是否mode
     5 
     6 [ruck] 查看当前zkServer是否启动,返回 imok
     7 
     8 [dump] 列出未经处理的会话和临时节点
     9 
    10 [conf] 查看服务器配置
    11 
    12 [cons] 展示连接到服务器的客户端信息
    13 
    14 [envi] 环境变量
    15 
    16 [mntr] 监控zk的健康信息
    17 
    18 [wchs] 展示watch的信息

      vi zoo.cfg
      41w.commands.whitelist=*

      wchc 和 wchp     session与watch及path与watch的信息

    zookeeper集群搭建

    关闭防火墙
    systemctl disable firewalld.service

    master 192.168.239.145
    slave1 192.168.239.134
    slave2 192.168.239.135

    配置文件myid 1/2/3 对应 server.1/2/3

    master
    vi dataDir/myid 1

    slave1
    vi dataDir/myid 2

    slave3
    vi dataDir/myid 3

    关于zoo.cfg的配置

     1 vi zoo.cfg
     2 
     3 tickTime=2000
     4 initLimit=10
     5 syncLimit=5
     6 dataDir=/usr/local/zookeeper/dataDir
     7 dataLogDir=/usr/local/zookeeper/dataLogDir
     8 clientPort=2181
     9 4lw.commands.whitelist=*
    10 
    11 server.1=192.168.239.145:2888:3888
    12 server.2=192.168.239.134:2888:3888
    13 server.3=192.168.239.135:2888:3888

    启动集群

    ./zkServer.sh start

    查看运行状态

    ./zkServer.sh status

  • 相关阅读:
    海康 大华 华为 宇视等安防摄像头、NVR、平台网关通过GB28181接入LiveGBS流媒体服务实现WEB无插件直播
    工厂模式
    装饰者模式
    观察者模式
    Android 滑动事件冲突解决 Touch事件处理机制
    java 策略模式
    java判断手机访问还是电脑访问
    swift中闭包和OC中block的用法比较
    Swift小技巧(五)
    Swift小技巧(三)
  • 原文地址:https://www.cnblogs.com/quyangyang/p/11435222.html
Copyright © 2020-2023  润新知