基础加强 -zookeeper

云计算 waitig 435℃ 百度已收录 0评论

Zookeeper

1. 概述

  • zookeeper是分布式协调服务,从本质上来说也是一个小型的分布式文件存储系统 ,有自己的树形目录结构,可以用来存储,监听,修改整个集群的状态。诸如统一命名服务、分布式配置管理、分布式消息队
    列、分布式锁、分布式协调等功能。
    1. 在dubbox集群中 作为dubbox服务的注册中心
    1. 在solrcloud集群中作为

JAVA_OPTS=”-DzkHost=192.168.25.135:2181,192.168.25.135:2182,192.168.25.135:2183
JAVA_OPTS是用来设置 JVM 相关运行参数的变量 . 此配置用于在 tomcat 启动时
找到 zookeeper 集群。
* 3. 在mysql集中 统一配置数据源等

2. 集群中leader follower observer各自职能

2.1. leader

  • 事务请求的调度和处理者,保证集群事务处理的顺序性,内部各个服务器的调度者 。

    事务: zookeeper写入操作类如增删改,leader统一决定请求的执行者且有序  
    

2.2. follower

  • 可以独立接受客户端发送过来读请求,如果是写的请求交给leader去执行,参数leader选举

2.3. oberver

  • 观察集群的整体运行状态,可以独立处理非事务的请求,不参数投票

3. Zookeeper特性

  • 全局数据一致性—–每台server存储的数据一致
  • 可靠性————每天server数据更新会彼此同步
  • 顺序性————zookeeper有个消息队列。
  • 数据更新原子性—–要么成功否则失败
  • 实时性————客户端每隔一段时间就会更新服务器的数据

4. zookeeper集群搭建

—— 题外话

在集群搭建的过程中基本就是上传压缩包 解压 有的时候需要去编译 修改配置文件 配置环境变量 修改的后文件分发到其他集群上面 在修改 然后就是启动 。   

1.安装jdk

  1. 上传压缩包 解压 版本是1.8jdk
  2. 配置环境变量
export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2.时间同步/手挡同步/网络同步

3.免密登陆

  1. 生成密钥
  2. 公钥拷贝
id_rsa,id_rsa.pub
ssh-copy-id node-2 公钥拷贝到各个节点 注意对应的用户

4. zookeeper集群搭建

  1. 在各个节点上面配置本地hosts文件
  2. 上传zookeeper-3.4.5.tar.gz解压
  3. 修改zoo_sample.cfg 为 zoo.cfg
  4. 删除原来的dataDir目录添加 下面的
dataDir=/export/data/zookeeper/data 
dataLogDir=/export/data/zookeeper/log 
server.1=node-1:2888:3888 
server.2=node-2:2888:3888
server.3=node-3:2888:3888 
  1. 在/export/data/zookeeper/data/ 在data下面建立myid文件
  2. scp -r /源文件或文件夹 root@ip地址:/目的目录 主键分号后面没有空格

5. Zookeeper shell指令

  • 通过Linux指令 操作zookeeper文件系统的目录结构

这里写图片描述

5.1 客户端连接

  • 进入到zookeeper/bin目录结构 ./zkCli.sh –server ip

ip 代表的是在 zookeeper集群中链接客户端对应的IP地址

5.2 shell 级别操作

  • 创建节点 (路径必须是全路径,不存在相对路径)

    create -s path data 代表的-s代表是顺序节点 data代表的是输入的数据,生成的编号代表节点的创建顺序  
    
    create -e path data // -e 代表的是创建临时节点,注意临时节点不允许有子节点,会话介绍临时节点 结束  
    
    create /path data  //创建的是永久节点  
    
  • 读取节点

    ls path  watch (获取全部的节点)
    
    ls2 path watch (获取节点的详细信息) 
    
    get path watch (获取指定节点信息)
    
  • 更新节点

    set path data  dataversion代表数据更改的次数
    
  • 删除节点

    delete path  如果路径下面有子节点 先删除子节点才能删除跟节点   
    
    Rmr path 代表删除根节点
    
  • quota(了解 这些限制不是绝对的啊,只是一种规定的约束,但是如果违反限制也不会有任何的影响)

    setquota -n|-b val path 对节点增加限制。 
        n:表示子节点的最大个数
        b:表示数据值的最大长度
        val:子节点最大个数或数据值的最大长度
        path:节点路径
    
  • 其他命令

    history : 列出命令历史
    redo:该命令可以重新执行指定命令编号的历史命令,命令编号可以通过
    

6. zookeeper数据模型

7. Zookeeper Watch

  • watch 事件 主要是用来监听节点状态的变化,比如节点的创建,删除,修改,链接等情况

  • 事件类型

    1. 连接的状态 type=None, path=null 客户端断开的时候触发

    2. 节点事件

      NodeCreated Znode 创建事件
      NodeDeleted Znode 删除事件
      NodeChildrenChanged 关注的是节点数量变化,内容变更无通知

7. Zookeeper 选举机制

7.1 基础概念
    1. 服务器ID 对应的就是myid   
    2. 数据ID   // versionID 代表的就是数据更新的次数,次数越大代表 在选举过程中权重越大  权重代表胜出的概率  
    3. 逻辑时钟 每参与一轮投票,逻辑时钟就会加一 权重越大 
7.2 全新选举
每个node节点启动的时候都会先投自己一票,myid越大就会先投myid

node1 +1 
node2 +1+node1 
node3 +1+node1+node2  当集群中投票过半就会成为Leader   
7.2 非全新集群选举
当集群leader挂掉的时候,就会进行二论选举
一句的规则就是1. 逻辑时钟  2. 数据ID 3.myid    

7. Zookeeper 一些应用

dubbox

  • 在分布式项目中通常来说都是将web层service层分离,部署到不同的service服务器中,因此就会设计跨进程之间的通信。web层与service层多对多的关系,因此就会引入分布式服务dubbox,通过dubbox插件service端在zookeeper中注册一个服务,web段通过与zookeeper建立长链接,获取服务的地址。 —–zookeeper作为一个服务注册中心存储。

solrCloud

  • 在搭建solrCloud集群的时候需要把solrhome下collection1/conf 目录上传到zookeeper目录中,统一管理索引库。
  • 引入springdatasolr的时候也许要在application.xnml中配置链接的

    <bean id="solrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
    <constructor-arg
    value="192.168.25.136:2181,192.168.25.135:2181,192.168.25.137:2181" />
    <property name="defaultCollection" value="collection1"></property>
    </bean>
    

本文由【waitig】发表在等英博客
本文固定链接:基础加强 -zookeeper
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)