• zookeeper学习小节01


    zookeeper的使用:

    1.安装zookeeper,并且要知道zookeeper下面的几个主要目录是干什么的。
    比如说conf、bin、jar等等
    要复制conf里面的文件,然后改下配置
    要在vim pro.... 里面添加zk的环境

    具体安装zk配置, 请参考该博主的优秀博文  https://www.cnblogs.com/tonylovett/p/5227973.html

     补充:启动的时候可能会报错,要检查这几项

    a netstat -nltp | grep 2181 如果被占用就-------kill 进程的pid
    b 通过sudo service iptables status检查防火墙,如果开启就用命令关掉 sudo service iptables stop

    2.zookeeper的基本数据模型

    3.zk的作用提现:(重要概念)
    A master节点选举模式,主节点挂了以后,从节点(备胎)就会接手工作,并且保证这个节点是唯一的,这也是所谓首脑模式,从而保证我们的集群是高可用的。
    B 统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算中用的特别多,(假设修改了redis统一配置)
    C 发布与订阅,类似消息队列mq,dubbo发布者把数据存在znode节点上,订阅者会读取这个数据。(zk相当于一个中介)
    D 提供分布式锁,在分布式环境中不同进程(服务器)之间争夺资源,类似于多线程中的锁。
    eg:比如说,网盘中有个文件(下面所有的ABCD服务器操作的都是这个文件),A服务器对文件进行读操作,B服务器对文件进行写操作,c服务器删除文件操作,D服务器对文件进行读操作。
    面对这么多的服务器(并发),文件该听谁的呢?先来后到?还是最后一个先?
    办法就是加一个锁机制,A服务器在对文件操作的时候,其他的服务器要排队。等A操作完以后,下面的服务器才能做操作。
    专业的说法就是,A服务器在操作时,其他的服务器阻塞住了,直到A服务器释放了,然后B操作,B释放,然后C操作,C释放.....,以此类推,是一个顺序。

    E 集群管理,集群中保证数据的强一致性。
    eg:在集群环境中,它的节点都是一致的
    比如说有三个节点。A是主节点,B是子节点,C是子节点。
    当我们修改A节点中的数据的时候,zk会使用同步机制,A节点的数据会同步到B节点和C节点中(三个节点数据一模一样)。
    客户端读取A节点的数据,某天发生了意外,A节点不能继续工作,我们把客户端连接切到B节点,也是能读到数据的。
    也就是说,不管客户端连接哪台机器,都能都读取数据的,保持数据的一致性。

    补充:如何调整好我们的zk配置 才能达到最优了


    4. 熟悉zookeeper常用命令行操作
    通过 ./zkCli.sh 打开zk的客户端进行命令行后台,然后help
    eg:
    ls ls / 查看当前节点下面的子节点
    ls2 查看
    stat 查出来的东西和ls ls2一样,是他们的整合(节省代码)
    get get / 把当前节点里面的数据取出来。 aaa是节点名称,123是值
    create 创建节点(后面跟参数可以创建临时节点,永久节点,瞬时节点)eg: create /aaa 123 -------增
    create -e 创建临时节点
    set 修改节点 --------改
    delete 删除节点 --------删

    5.zk特性-session(客户端到服务端请求的一次会话)
    session如果过期了,session中的zk里的所有的临时节点znode都会被抛弃。

    6.zk特性-vatcher机制(重要,需要自己去理解,类似于一个触发器)
    针对每个节点的操作,都会有一个监督者,就是vatcher

    7. 理解watch事件

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

    watcher事件类型一:
    父节点、子节点 增删改都能触发其watcher。并且增删改的触发事件不同。其中删除父节点,可以设置 delete /节点名称 watch

    watcher事件类型二:
    ls为父节点设置watcher,创建子节点触发:
    NodeChildrenChanged

    ls为父节点设置watcher,删除子节点触发:
    NodeChildrenChanged

    ls为父节点设置watcher,修改子节点不触发事件

    补充:
    比如说aaa是父节点,ccc是子节点
    eg:
    ls /aaa watcher ------------------ls为父节点设置watcher
    create /aaa/ccc ------------------create 创建子节点
    set /aaa/ccc 9090 -----------------改变父节点下面 子节点的值
    get /aaa/ccc watch ----------------修改子节点不触发事件.只有这样做才触发。把子节点当做是父节点,删除子节点会触发:NodeDataChanged

    watcher 使用场景:
    1.统一资源配置。
    设置了watcher事件后,每一个节点都有vatcher事件,当修改一个节点,剩下的节点都通知客户端进行改变。


    8. 理解ACL 权限控制
    特性:
    针对节点可以设置相关读写等权限,目的为了保障数据安全
    权限permissions 可以指定不同的权限范围以及角色

    ACL使用场景:
    1.开发、测试人员环境分离,开发者无权操作测试库的节点,只能看

    ACL命令行
    getAcl:获取某个节点的acl权限信息 eg:getAcl /aaa/bbb
    setAcl:设置某个节点的acl权限信息
    addauth :输入认证授权信息,注册时输入明文密码(登陆),但是在zk的系统里,密码是以加密的形式存在的

    ACL的构成一:
    zk的acl通过(scheme id permissions)三个常用来构成权限列表
    scheme :代表采用的某种权限机制
    id :代表允许访问的用户
    permissions :权限组合字符串


    ACL的构成二:
    world:world下只有一个id,即一个用户,创建节点默认的权限是anyone,组合的写法就是--- world:anyone:[permissions]

    auth:代表认证登录,需要注册用户有权限就可以,(明文密码)写法为: auth:user:password:[permissions]

    digest:需要对密码加密才能访问(两层加密),写法为:digest:username:BASE64(SHA1(password)):[permissions]

    ip:当设置为指定的ip地址,此时限制ip进行访问,比如 ip:192.168.1.1:[permissions]

    super:代表超级管理员,拥有所有的权限


    ACL的构成三:
    权限字符串缩写 crdwa
    create:创建子节点
    read :获取节点
    write :设置节点数据
    delete :删除子节点
    admin :设置权限

    eg:
    setAcl /aaa/bbb world:anyone:crwa 设置子节点的权限为增删改,如果你要删除bbb的值就会报错:Authentication is not valid

    9. zookeeper 四字命令之一(常用,不用在指定的目录下运行,在装有zk的服务器上面运行就可以了)
    stat 查看zk的状态信息 eg: echo stat |nc localhost 2181 --localhost是当前服务器的ip,可以用localhost,也可以用详细ip192.1XXXXX
    ruok 查看当前zkserver是否启动 eg: echo ruok |nc localhost 2181
    dump 列出未经处理的回话和临时节点 eg: echo dump |nc localhost 2181
    conf 查看配置的信息 eg: echo conf |nc localhost 2181
    cons 展示连接到服务器的客户端信息 eg: echo cons |nc localhost 2181
    envi 环境变量(去查看zk相关的环境变量,把相关的环境变量信息都打印出来) eg:echo envi |nc localhost 2181
    mntr 监控zk健康信息 eg: echo mntr |nc localhost 2181
    wchs 查看watches的个数 eg: echo wchs |nc localhost 2181
    wchc 与 wchp session 与watch及path与watch信息

    11 zk的集群
    集群:集群就是当一个节点挂掉是没有关系的,因为有心跳机制(选举模式)


    搭建注意点:
    1.配置数据文件 myid 1/2/3 对应 server.1/2/3 ,最少的集群是3台。

    2.通过 ./zkCli.sh -server[ip]:[port] 检测集群是否配置成功

  • 相关阅读:
    mySQL 重点
    JS代码预解析原理、函数相关、面向对象
    PHP中对数组进行操作的常用函数总结
    js函数和数组总结
    深入理解css网页布局细节
    AngularJS表单验证
    发送消息 缺少 更新的字段值
    springboot 下 logback + MDC的使用
    Mock的使用2
    StringUtils # split 的坑
  • 原文地址:https://www.cnblogs.com/PinkPink/p/9935769.html
Copyright © 2020-2023  润新知