zoukankan      html  css  js  c++  java
  • 1、zookeeper入门

    一、什么是Zookeeper

    Zookeeper是Google的Chubby一个开源的实现,是一个开源的,为分布式提供协调服务的Apache项目;
    
    它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等;
    
    Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,
    一旦这些数据的状态发生变化,Zookeeper就将负责通知已经存在Zookeeper上注册的那些观察者做出相应的反应;
    
    Zookeeper通常等于是文件系统加通知机制;

    image

    二、为什么使用Zookeeper

    » 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
    
    » 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
    
    » 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
    
    » ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
        • Keepalived监控节点不好管理
        • Keepalive 采用优先级监控
            • 没有协同工作
            • 功能单一
        • Keepalive可扩展性差

    三、Zookeeper优点

    image

    四、Zookeeper的安装和配置

    以三节点为例,先配置一台,然后再分发:

    1、准备、解压安装包

    tar zxf zookeeper-3.4.5.tar.gz -C /usr/local/
    mv /usr/local/zookeeper-3.4.5/ /usr/local/zookeeper

    2、创建zk data目录

    mkdir /usr/local/zookeeper/data

    3、编辑配置文件

    mv zoo_sample.cfg zoo.cfg
    
    [root@spark1 conf]# vim zoo.cfg 
    tickTime=2000
    initLimit=5
    syncLimit=2
    dataDir=/usr/local/zookeeper/data
    clientPort=2181
    server.0=spark1:2888:3888    
    server.1=spark2:2888:3888
    server.2=spark3:2888:3888
    
    
    ##参数解释
    • tickTime:发送心跳的间隔时间,单位:毫秒
    
    • dataDir:zookeeper保存数据的目录。
    
    • clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
    
    • initLimit: 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,
    而是 Zookeeper 服务器集群中连接到 Leader 的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经
    超过 5 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。
    总的时间长度就是 5*2000=10 秒
    
    • syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,
    最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
    
    • server.A=B:C:D:其 中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip地址;
    C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,
    需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
    如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号

    4、创建myid文件,设置zk节点标识

    在主机1数据目录中,创建一个myid文件,并写入一个数字:0
    
    [root@spark1 data]# vim myid
    0

    5、分发

    ##用scp命令,将zookeeper安装目录,传输到另外两台主机上;
    
    [root@spark1 local]# scp -r /usr/local/zookeeper spark2:/usr/local/
    
    [root@spark1 local]# scp -r /usr/local/zookeeper spark3:/usr/local/
    
    
    分发完后,唯一的区别是spark2和spark3的标识号分别设置为1和2         #vim /usr/local/zookeeper/data/myid

    6、启动

    1、分别在三台机器上执行:zkServer.sh start
    
    2、检查ZooKeeper状态:zkServer.sh status
    3、jps   

    7、client连接

    启动客户端连接到服务器:
        $>zkCli.sh -server hostname:2181        //进入zk命令行
        $zk]help                                //查看帮助
        $zk]quit                                //退出
        $zk]create /a tom                       //创建一个数据节点,并赋值数据
        $zk]get /a                              //查看数据
        $zk]ls /                                //列出节点
        $zk]set /a tom                          //设置数据
        $zk]delete /a                           //删除一个节点
        $zk]rmr /a                              //递归删除所有节点。
  • 相关阅读:
    vue路由守卫
    Vue里面提供的三大类钩子及两种函数
    VUE一款适用于pc平台的简单toast
    FileReader与URL.createObjectURL实现图片、视频上传前预览
    vue post请求 参数带有中文后端无法接收或者收到乱码,无法返回数据问题
    vue项目中跳转到外部链接方法
    在vue+elementUI项目中使用分页功能
    vue中通过修改element-ui的类修改相关组件的样式
    [Vue warn]: Failed to mount component: template or render function not defined. found in ---> <XFbwz> at src/views/XFbwz.vue <App> at src/App.vue <Root>
    Vue点击当前元素添加class 去掉兄弟的class
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/11389645.html
Copyright © 2011-2022 走看看