• 认识ZooKeeper


    ZooKeeper概述
    1.Zookeeper是什么?
    ZooKeeper是源代码开放的分布式协调服务,由雅虎创建,是Google CHubby的实现。
    ZooKeeper是一个高性能的分布式数据一致性解决方案,它将那些复杂的、容易出错的分布式一致性服务封装起来,构成一个高效可靠得原语集,并提供一系列简单易用的接口给用户使用
    知识要点:
    (1)源代码开源
    (2)是分布式协调服务,它解决分布式数据一致性问题
    A :顺序一致性 B:原子性 C:单一视图
    D:可靠性 E:实时性
    (3)高性能
    (4)我们可以通过挑用ZooKeep提供的接口来解决一些分布式应用中中的实际问题。
     
    2.ZooKeeper的典型应用场景?
    1.数据发布/订阅
    2.负载均衡
    3.命名服务
    4.分布式协调和通知
     
    3.ZooKeeper的优势
    (1)源代码开源
    (2)已经被证实是高性能,易用稳定的工业级产品
    (3)有着广泛的应用:Hadoop,HBase,Storm,Solr
     
     
     
    ZooKeeper的基本概念
     
    1.集群角色
    Leader,Follower,Observer
    Leader服务器是整个ZooKeeper集群工作机制中的核心
    Follower服务器是ZooKeeper集群状态的跟随者
    Observer服务器充当一个观察者角色
     
    相关设计模式
    Leader,Follower设计模式
    Observer 观察者设计模式
     
    2.会话
    会话是指客户端和ZooKeeper服务器的连接,Zookeeper中的会话叫Session,客户端与服务器建议一个TCP的长连接来维持一个Session,客户端在启动的时候所限会与服务器建立一个TCP连接,通过这个连接,客户端能通过心跳检测与服务器保持有效得 会话,也能向ZooKeeper服务器发送请求并获得相应。
     
    3.数据节点
    ZooKeeper中的节点有两类
    (1)集群中的一台机器为一个节点
    (2)数据模型中的数据单元Znode,分为持久节点和临时节点
    ZooKeeper的数据模型是一棵树,树的节点就是Znode,Znode中可以保存信息,数据模型如下图:
     
    4.版本
    如图:
    版本类型 说明
    version 当前数据节点数据内容的版本号
    cversion 当前数据节点数据内容的版本号
    aversion 当前数据节点ACL(权限控制)变更版本号
    悲观锁和乐观锁
    悲观锁又叫悲观并发锁,是数据库中一种非常严格的锁策略,具有强烈的排他性,能够避免不同事务对同一数据并发更新造成的数据不一致性,在上一个事务没有完成之前,下一个事务不能访问相同的资源,适合数据更新竞争非常激烈的场景
    相比悲观锁,乐观锁使用的场景会更多,悲观锁认为事务访问相同数据的时候一定会出现相互的干扰,所以简单粗暴的使用排他访问的方式,而乐观锁认为不同事务访问相同资源是很少出现相互干扰的情况,因此在事务处理期间不需要进行并发控制,当然乐观锁也是锁,它还是会有并发的控制!对于数据库我们通常的做法是在每个表中增加一个version版本字段,事务修改数据之前先读出数据,当然版号也顺势读取出来,然后把这个读取出来的版本号加入到更新语句的条件中,比如,读取出来的版本号是1,我们修改数据的语句可以这样写,update 某某表 set 字段一=某某值 where id=1 and version=1,那如果更新失败了说明以后其他事务已经修改过数据了,那系统需要抛出异常给客户端,让客户端自行处理,客户端可以选择重试
     
    5.watcher(观察者)
    事件监听器
    ZooKeeper允许用户在指定节点上注册一些Watcher,当数据节点发生变化时候,ZooKeeper服务器会把这个变化通知发送给感兴趣的客户端。
     
    6.ACL权限控制
    ACL是Access Control Lists的简写,ZooKeeper采用ACL策略进行权限控制,有以下权限:
    CREATE:创建子节点的权限
    REAN:获取节点数据和子节点列表的权限
    WRITE:更新节点数据的权限
    DELETE:删除子节点的权限
    ADMIN:设置节点ACL的权限
     
     
    ZooKeeper环境搭建
    1.环境准备
    vmware虚拟机
    centos7
    SecureCRT(连接虚拟机)
     
    附件下载:
    Centos7 请自己官网下载
    SecureCRT(32和64)+注册机:http://pan.baidu.com/s/1mhCQwTa
    ZookeePer:http://pan.baidu.com/s/1mhCQwTa
    VMware:http://pan.baidu.com/s/1dE6ZcSL
     
    步骤:
    (1)使用vmvare创建三个centos7的虚拟机
    IP地址:每个虚拟机服务器配置与你当前主机在同一个网段的IP
    网络设置足以:如果虚拟机与SecureCRT所在的机器不是同一台,需要把3台虚拟机centos7的虚拟机的网络设置为桥接模式
    (2)使用SecureCRT连接虚拟机
    (3)安装配置ZooKeeper
    2.三种集群
    (1)集群环境
    (2)单机环境
    (3)伪集群环境
    如何安装VMware和Centos7以及如何配置“桥接模式”下的网络请自行百度
    配置使用的命令如下:
    ------------------------------------------------------------------------------------------------------

    cd /opt
    wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.10.tar.gz
    ls
    tar xzvf zookeeper.tar.gz
    mv zookeeper.3.4.10 zookeeper
    cd zookeeper/conf/
    cp zoo_sample.cfg zoo.cfg
    vim zoo.cfg
    i键进入插入模式
    修改dataDir
    dataDir=/var/zookeeper
    clientport 是用来对外提供服务的端口

    配置服务器的格式
    server.id=host:port:port
    id:即为服务器的Id,是一个整数
    host:即为服务器的IP
    第一个port:是Leader服务器与Follower服务器的通信端口
    第二个port:是用于服务器之间选举投票选着Leader服务器的通信端口

    按ESC进入命令模式 输入 :wq 保存并退出

    进入var 创建zookeeper文件夹 mkdir 文件夹名称
    在该文件中创建文件myid 并写入服务器Id


    启动zookeeper服务器
    ./zkserver.sh start
    关闭zookeeper服务器
    ./zkserver.sh stop

    yum install telnet 安装telnet

    服务器之间相互拷问文件
    scp zoo.cfg root@192.168.124.128:/opt/zookeeper/conf

    zoo.cfg的主要配置信息

    ------------------------------------------------------------------------------------------------------
     
    注意事项:
    1.虚拟机网络连接使用桥接模式
    2.一定要关掉本机和虚拟机的防火墙
     
     
  • 相关阅读:
    $NOIp2018$劝退记
    Markdown 使用技巧
    【题解】 bzoj2462: [BeiJing2011]矩阵模板
    【总结】字符串hash
    【题解】 bzoj3555: [Ctsc2014]企鹅QQ (字符串Hash)
    【题解】 bzoj3916: [Baltic2014]friends (字符串Hash)
    【题解】 bzoj2982: combination (Lucas定理)
    【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)
    【题解】 bzoj3693: 圆桌会议 (线段树+霍尔定理)
    【题解】 AtCoder ARC 076 F
  • 原文地址:https://www.cnblogs.com/chengxuyuanzhilu/p/6690749.html
Copyright © 2020-2023  润新知