zoukankan      html  css  js  c++  java
  • zookeeper学习整理

    概述

    zookeeper是一个高可用的分布式数据管理与协调框架,基于ZAB算法实现,主要解决分布式一致性问题。

    https://www.cnblogs.com/felixzh/p/5869212.html

    核心概念

    节点

    zk的命名空间是由一系列数据节点组成的,节点上可以包含数据。

    类型

    节点类型分为:持久节点、临时节点、顺序节点。

    创建过程中通过组合有以下4种:

    • CreateMode.PERSISTENT :永久性节点

    • CreateMode.PERSISTENT_SEQUENTIAL :永久性序列节点

    • CreateMode.EPHEMERAL :临时节点,会话断开或过期时会删除此节点

    • CreateMode.PERSISTENT_SEQUENTIAL :临时序列节点,会话断开或过期时会删除此节点

    只有叶子节点可以是临时节点,其他节点必须是永久性节点。

    状态信息

    Stat类中包含了数据节点的所有状态信息。

    版本-保证分布式数据原子性操作

    zk中数据节点具有3种类型的版本信息:

    • version : 当前数据节点数据内容的版本号

    • cversion: 当前数据节点子节点的版本号

    • aversion: 当前数据节点ACL变更版本号

    Watcher-数据变更的通知

    zk内部一个重要的特性就是可以监听节点的变化状态。

    ACL--保障数据的安全

    zk提供了一套完善的Access Control List权限控制机制来保障数据的安全。

    客户端

    原生

    https://www.cnblogs.com/zpb2016/p/5791641.html

    http://blog.csdn.net/jiuqiyuliang/article/details/56012027

    zkClient.jar

    http://blog.csdn.net/wo541075754/article/details/68929512

    Curator

    全世界使用最广泛的zk客户端之一。

    对事件监听、分布式锁、分布式计数器、master选举、分布式Barrier有很好的支持。

    应用场景

    分布式锁

    锁包括排他锁和共享锁,排他锁又成为写锁、独占锁,加锁期间只允许一个事务对其操作。共享锁又成为读锁,当一个事务对数据对象加上共享锁,事务就只能进行数据读取,其他事务也只能对数据对象加共享锁,直到此对象上所有共享锁被释放。

    分布式锁实现流程

    1.在/app下创建临时节点lock

    2.获取/app下所有子节点

    3.判断是否是写请求,如果是写请求获取排他锁,自己的lock节点序号节点最小占有锁,然后执行、释放,否则监听比自己序号小的节点,等待锁;

    4.如果是读请求,判断自己的lock节点是否是最小的,或者比自己小的都是读请求,如果是占有锁,否则监听比自己序号小的节点,等待锁。

    master选举

    利用zk的强一致性,能够保证高并发下节点的创建一定能全局唯一性。

    实现流程

    N台服务在同一时刻同时对/app节点下创建"master"临时子节点,只有其中一台可以创建成功,此时创建成功的便是master,其他服务队/app节点上注册子节点变更的watcher,如果master挂了,其他服务重新进行选举。

    配置中心

    配置中心也可以叫做数据发布/订阅系统。zk内部采用的是推拉相结合的方式:客户端向服务端注册需要关注的节点,一旦节点数据发生变更,服务端就会向相应的客户端发送watcher事件通知,客户端接收到消息后,需要主动到服务端获取最新的数据。

    命名服务

    在zk中,每一个数据节点都能够维护一份子节点的顺序顺列,当客户端对其创建一个顺序子节点的时候zk会自动以后缀的形式在其子节点上添加一个序号,命名服务即使利用zk的这种特性。

    动态DNS服务

    分布式队列/屏障

  • 相关阅读:
    八款前端开发人员更轻松的实用在线工具
    HTML5中的Web Notification桌面通知(右下角提示)
    老司机程序员用到的各种网站整理
    JAVA变量存储
    关于JAVA中的前期绑定 后期绑定(动态绑定)
    i MySQL 查看约束,添加约束,删除约束
    final static
    MySQL alter语句
    MySQL 权限生效
    MySQL 用户权限管理
  • 原文地址:https://www.cnblogs.com/f-anything/p/8707549.html
Copyright © 2011-2022 走看看