zoukankan      html  css  js  c++  java
  • zookeeper学习(一)_简介

    上篇文章 我们已经安装上了zookeeper,也简单的体验了一把,但是如果让你给别人介绍下zookeeper,可能也是说不出来。本篇文章就参考了网上各位优秀博主的文章,整理出自己更能理解的内容

    优秀博文

      1. sunddenly的zookeeper系列

    http://www.cnblogs.com/sunddenly/category/620563.html

      1. 程序员小灰zookeeper系列

    https://mp.weixin.qq.com/s/Gs4rrF8wwRzF6EvyrF_o4A

    简介

    Zookeeper是一种分布式协调服务

    之前的工作都是单机部署应用,并没有接触过zookeeper,现在 的新公司动不动就集群,什么主从,分布式,渣渣的我听得一脸蒙蔽,项目中也使用zookeeper进行应用配置以及使用了elasticjob。

    应用场景

    • 1.分布式锁(利用Zookeeper的临时顺序节点,可以轻松实现分布式锁)
    • 2.服务注册和发现
    • 3.共享配置和状态信息

    数据模型

    Zookeeper的数据模型如同文件系统的目录。

    Zookeeper的数据存储是基于节点,这种节点叫做Znode。

    data

    Znode存储的数据信息。

    ACL

    记录Znode的访问权限,即哪些人或哪些IP可以访问本节点。

    stat

    包含Znode的各种元数据,比如事务ID、版本号、时间戳、大小等等。

    child

    当前节点的子节点引用

    Zookeeper是为读多写少的场景所设计。Znode并不是用来存储大规模业务数据,而是用于存储少量的状态和配置信息,每个节点的数据最大不能超过1MB。

    Zookeeper的基本操作和事件通知

    Zookeeper包含了哪些基本操作呢?这里列举出比较常用的API:

    • create 创建节点

    • delete 删除节点

    • exists 判断节点是否存在

    • getData 获得一个节点的数据

    • setData 设置一个节点的数据

    • getChildren 获取节点下的所有子节点

    这其中,exists,getData,getChildren属于读操作。Zookeeper客户端在请求读操作的时候,可以选择是否设置Watch。

    Watch是什么意思呢?

    我们可以理解成是注册在特定Znode上的触发器。当这个Znode发生改变,也就是调用了create,delete,setData方法的时候,将会触发Znode上注册的对应事件,请求Watch的客户端会接收到异步通知。

    具体交互过程如下:

    1.客户端调用getData方法,watch参数是true。服务端接到请求,返回节点数据,并且在对应的哈希表里插入被Watch的Znode路径,以及Watcher列表。

    2.当被Watch的Znode已删除,服务端会查找哈希表,找到该Znode对应的所有Watcher,异步通知客户端,并且删除哈希表中对应的Key-Value。

  • 相关阅读:
    composer 安装laravel
    面向对象
    dedecms常用标签
    Illegal modifier for parameter *** , only final is permitted”
    import static和import的区别
    <<Effective Java>> 第四十三条
    java valueOf
    linux的shell编程
    DFA和NFA的区别
    发现一个正则网
  • 原文地址:https://www.cnblogs.com/zhenghengbin/p/11533963.html
Copyright © 2011-2022 走看看