• zookeeper的结束安装和使用


    分布式协调服务

    官方学习文档:https://zookeeper.apache.org/doc/current/zookeeperOver.html

    模型

    zookeeper和redis相似 在此模型中 增删改查里的读写,其中写操作只能在leader中,查询操作在其他节点都可以。

    强调:不要把zookeeper当作数据库(虽然可以用)

    性能

    ZooKeeper很快。在“读取为主”的工作负载中,它特别快。ZooKeeper应用程序可在数千台计算机上运行,并且在读取比写入更常见的情况下,其性能最佳,比率约为10:1。

    可靠性

    追随者(follower) 领导者(leader)

    1. 追随者的失败和恢复
    2. 失败和其他追随者的恢复
    3. 领导者的失败
    4. 两个追随者的失败和恢复
    5. 另一个领导者的失败

    保证

    ​ ZooKeeper非常快速且非常简单。但是,由于其目标是作为构建更复杂的服务(例如同步)的基础,因此它提供了一组保证。这些是:

    • 顺序一致性-来自客户端的更新将按照发送的顺序应用。
    • 原子性-更新成功或失败。没有部分结果。
    • 单个系统映像-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。也就是说,即使客户端故障转移到具有相同会话的其他服务器,客户端也永远不会看到系统的较旧视图。
    • 可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。
    • 及时性-确保系统的客户视图在特定时间范围内是最新的。

    简单的API

    • create:在树中的某个位置创建一个节点
    • delete:删除节点
    • 存在:测试某个节点是否存在于某个位置
    • 获取数据:从节点读取数据
    • 设置数据:将数据写入节点
    • 获取子节点:检索节点的子节点列表
    • sync:等待数据传播

    结构

    目录树结构,node可以存储数据,单个节点存储的最大数据为1mb,节点可以分为几种,持久节点,临时节点(依赖session),序列节点(概念)

    zookeeper的安装

    首先先检查当前主机有无Java的JDK

    jps
    

    如果没有 先安装jdk

    yum install java-1.8.0-openjdk-devel.x86_64
    

    安装完成后 新建一个目录 下载zookeeper文件

    版本下载地址:https://zookeeper.apache.org/releases.html#download

    复制HTTP下的里链接 再到主机里面wget

    #先进入到local目录
    cd /usr/local
    #在此目录下载zookeeper文件
    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
    #解压
    tar xf apache-zookeeper-3.6.1-bin.tar.gz
    #进入文件
    cd apache-zookeeper-3.6.1-bin
    #进入conf目录
    cd conf
    #将zoom_simple.cfg文件复制
     cp  zoo_sample.cfg  zoo.cfg
    #编辑
    vim zoo.cog
    #修改内容
    dataDir=/tmp/zookeeper/data
    dataLogDir=/tmp/zookeeper/log
    
    #注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如
    
    server.1=192.168.180.132:2888:3888
    server.2=192.168.180.133:2888:3888
    server.3=192.168.180.134:2888:3888
    
    
    

    在tmp目录创建目录

    mkdir /tmp/zookeeper
    mkdir /tmp/zookeeper/data
    mkdir /tmp/zookeeper/log
    #如果配置集群  在data目录下 加一个myid
    cd data 
    vim myid
    #对应上面的server 是几就在里面写个几
    
    

    配置环境变量

    [root@iZ2ze0pget2kz9uogwgylfZ apache-zookeeper-3.6.1-bin]# export ZOOKEEPER_INSTALL=/usr/local/apache-zookeeper-3.6.1-bin/
    
    [root@iZ2ze0pget2kz9uogwgylfZ apache-zookeeper-3.6.1-bin]# export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
    
    

    启动zookeeper(必须进入bin 目录)

    [root@iZ2ze0pget2kz9uogwgylfZ apache-zookeeper-3.6.1-bin]# cd bin
    
    #启动
    [root@iZ2ze0pget2kz9uogwgylfZ bin]# ./zkServer.sh start
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    #停止
    [root@iZ2ze0pget2kz9uogwgylfZ bin]# ./zkServer.sh stop
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    
    #help一些其他命令
    [root@iZ2ze0pget2kz9uogwgylfZ bin]# ./zkServer.sh help
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
    Usage: ./zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}
    
    

    zookeeper的使用

    #通过 ./zkCli.sh命令 进入zookeeper
    ./zkCli.sh
    #出现下面这样就代表可以使用了
    [zk: localhost:2181(CONNECTED) 0] 
    
    
    #创建节点和创建子节点 及获取节点内容
    [zk: localhost:2181(CONNECTED) 0] create /zk-test 123
    Created /zk-test
    
    [zk: localhost:2181(CONNECTED) 1] create  /zk-test/book  233
    Created /zk-test/book
    
    [zk: localhost:2181(CONNECTED) 2] get /zk-test
    123
    
    #节点内容的覆盖 (set)
    [zk: localhost:2181(CONNECTED) 6] set /zk-test 456
    
    [zk: localhost:2181(CONNECTED) 7] get /zk-test
    456
    
    
    #删除节点
    
    #若当前节点含有子节点  则无法删除
    [zk: localhost:2181(CONNECTED) 8] delete /zk-test
    Node not empty: /zk-test
    
    #删除子节点
    [zk: localhost:2181(CONNECTED) 4] delete /zk-test/book
    
    #删除了子节点之后就可以删除当前的test了
    [zk: localhost:2181(CONNECTED) 4] delete /zk-test
    
    
  • 相关阅读:
    高阶函数之函数柯里化function currying
    学习javascript设计模式之状态模式
    学习javascript设计模式之代理模式
    学习javascript设计模式之发布-订阅(观察者)模式
    Json序列化提示缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”
    获取实例
    webservice跨域问题
    IIS客户端没有权限
    IIS7.5 错误代码0x8007007e HTTP 错误 500.19
    获取当前文件夹路径
  • 原文地址:https://www.cnblogs.com/beizhai/p/13859380.html
Copyright © 2020-2023  润新知