认识Zookeeper

zookeeper是什么

分布式数据的一致性解决方案.

Zookeeper 能做什么

数据发布和订阅(配置中心,config,disconf,diamond,appollo)

负载均衡 dubbo利用zookeeper的机制实现负载均衡。

命名服务

master选举

分布式锁

分布式队列

Zookeeper特征

顺序一致性: 从同一个客户端发起事务请求,最终会严格按照顺序被应用zookeeper中。

原子性: 所有的事务请求处理的结果在整个集群中的所有机器上的应用情况都是一致的。

可靠性:一旦服务器成功应用某个事务,并且对客户端做出响应,那么这个数据在整个集群中一定是同并且保留下来

实时性: 一旦一个事务被成功应用,客户端就能够立即从服务端读取到事务变更后的最新的数据状态(近实时)

如何安装Zookeeper

一、https://archive.apache.org/dist/zookeeper/ 选择需要下载zk版本

  • windows安装

  • linux安装

    • 安装jdk

      • 下jdk

      • 解压jdk

      • 配置jdk环境

        source /etc/profile 让配置文件项马上生效

      java -version

    • 安装zookeeper

      • 解压 tar xf zookeeper-3.4.12

      • 找到conf/zoo_sample.cfg文件复制改为zoo.cfg

      • 添加日志和数据文件存储目录

        dataDir=/usr/local/dev/zookeeper-3.4.12/dataDir ## 数据文件dataLogDir=/usr/local/dev/zookeeper-3.4.12/logDir ## 日志文件

      • 启动zookeeper检查是否成功

        bin/zkServer.sh start|restart|stop|status(查看节点状态)

        ./zkServer.sh status

        ZooKeeper JMX enabled by defaultUsing config: /usr/local/dev/zookeeper-3.4.12/bin/../conf/zoo.cfgMode: standalone

        代表zookeeper单节点配置成功了。

Zookeeper数据模型 Znode

ZK常用命令

基本操作命令

  • stat /path 【节点路径】【查看某个节点的详情】

    cZxid = 0x182 创建节点的ID
    ctime = Tue Jan 01 14:34:19 CST 2019 节点的创建时间
    mZxid = 0x182 修改节点ID
    mtime = Tue Jan 01 14:34:19 CST 2019 修改节点的时间
    pZxid = 0x195 子节点ID【最新插入子节点ID】
    cversion = 4 子节点的版本
    dataVersion = 0 当前节点的数据版本
    aclVersion = 0 权限版本
    ephemeralOwner = 0x0 是否为临时节点
    dataLength = 4 数据长度
    numChildren = 2 子节点的个数

  • ls2 /path 【除了详情以外,还要列出所有子节点列表】

  • get /path【除了详情以外,会显示当前节点的值】

  • listquota path 【列出某个path配额】

  • setquota -n|-b val path 【设置某个节点配额】

    • n 代表是配置该节点下面的子节点个数

    • b 代表是代表path设置数据大小

  • delquota [-n|-b] path 删除设置节点配额

  • history 显示最后执行11条命令

  • create 新增节点

​ create -s -e path data acl 【-s 有顺序,-e 临时节点】

​ zk的节点类型:

​ 永久节点 【默认创建的节点是永久的】create /node/abc abc-value

​ 永久顺序节点 create -s /node/abc/test- test-data

​ 临时节点 【当前会话有效】[注意:临时节点下面不能创建节点] create -e /node/tmp value

​ 临时顺序节点 create -e -s /node/tmp- tmp-value

  • delete 删除节点 delete /node/abc/test0000000001

  • get 获取某个节点信息

  • set 修改节点信息 set /node/abc aaaaaaaaa 2

事件监听 Watcher[事件注册是一次性,注册一次使用一次]

stat path [watch]

ls path [watch]

get path [watch]

父节点

  • stat /gerry-node watcher //注册节点创建,删除,修改监听

  • ls /gerry-node watcher //注册节点删除监听

  • get /gerry-node watcher // 注册节点的删除和修改事件

子节点:

  • NodeChildrenChanged

    只能监听到子节点的删除和新增操作,修改操作是监听不了

注意: 每次命令操作path都必须是绝对路径。

权限控制命令

ACL(Access Control List)

/amdin

/customer

/vip

  • getAcl 获取某个节点的权限

  • setAcl 设置某个节点的权限

  • addauth 注册用户 addauth digest 用户名 : 密码

ACL构成:

[schema: id : permissions]

schema 权限机制

  • world: 配置下只有一个id,就是anyone,组合写法:[world: anyone : permissions]

  • auth: 认证登录,需要有一个注册的用户 ,格式: auth:user:password:permissions

  • digest: 和auth是差不多的,但是在设置密码的时候必须是密文. Base64(sha1(password))

  • ip: 进行IP的访问限制 ,格式: ip:ip地址:权限

  • super: 超级管理员.

cdrwa: 【permissions】

create 创建

delete 删除

read 查询

write 设置节点的值

admin 管理员

实例操作:

setAcl /gerry world:anyone:ca // 使用world

setAcl /acl-node/abc auth:gerry:gerry:cdrwa // 使用auth

setAcl /acl-node/abc digest:gerry:E/2rNVgA7j4V7rNv488bTrvFiVc=:cdrwa // 使用digest

注意: 如果客户端重连,那么需要是addauth digest gerry:gerry登陆,如果不登陆是不能使用权限

Zookeeper的基础的更多相关文章

  1. 分布式进阶(十六)Zookeeper入门基础

    Zookeeper入门基础 前言 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置为EPHEMERAL,那么当 ...

  2. [转帖]从0开始的高并发(一)--- Zookeeper的基础概念

    从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...

  3. Zookeeper的基础知识

    1.Zookeeper是什么? 引用官方的说法:“Zookeeper是一个高性能,分布式的,开源分布式应用协调服务.它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务.它被设计为易于编程, ...

  4. Zookeeper Client基础操作和Java调用

    ## Zookeeper > Zookeeper目前用来做数据同步,再各个服务之前同步关键信息 i.客户端操作 1. 创建 create [-s] [-e] path data acl -s 为 ...

  5. 【Zookeeper】基础学习概览【汇总】

    一.概述 1.1 简介 1.2 Zookeeper集群机制 1.3 Zookeeper特性 二.Zookeeper应用场景 三.Zookeeper数据结构 四.Zookeeper安装 五.Java操作 ...

  6. Zookeeper入门(二)之基础

    在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.本文主要包含如下内容:1.Architecture(架构)2.Hierarchical namespace(层次命名空 ...

  7. zookeeper学习系列:四、Paxos算法和zookeeper的关系

    一.问题起源 淘宝搜索的博客 http://www.searchtb.com/2011/01/zookeeper-research.html  提到Paxos是zookeeper的灵魂 有一篇文章标题 ...

  8. Solr In Action 笔记(3) 之 SolrCloud基础

    Solr In Action 笔记(3) 之 SolrCloud基础 在Solr中,一个索引的实例称之为Core,而在SolrCloud中,一个索引的实例称之为Shard:Shard 又分为leade ...

  9. 一步到位分布式开发Zookeeper实现集群管理

    说到分布式开发Zookeeper是必须了解和掌握的,分布式消息服务kafka .hbase 到hadoop等分布式大数据处理都会用到Zookeeper,所以在此将Zookeeper作为基础来讲解. Z ...

随机推荐

  1. Java中getConstructors()、getDeclaredConstructors()、getConstructor(Class<?>... parameterType)、getDeclaredConstructor(Class<?>... parameterType)的区别

    区别一 在方法名末尾有s的是返回一个数组,没有s的是返回单个构造器. 区别二 在方法名中加Declared的是返回所有的构造方法,不加Declared的只返回public访问权限的构造器 区别三 有参 ...

  2. Design3:数据层次结构建模之二

    SQL Server提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌 ...

  3. this四种绑定方式之间的奇淫技巧

    写在前面 上一篇中,我们对于JavaScript中原始值.复杂值以及内存空间进行了一个深入浅出的总结,这次我们来聊一聊JavaScript中this关键字的深入浅出的用法. 在 JavaScript ...

  4. .net 分布式学习计划

    一: 1:.net分布式系统架构的思路     https://blog.csdn.net/slowlifes/article/details/53162014 2: nginx+iis实现负载均衡 ...

  5. Shader食谱 Chapter3--Toonshader卡通效果

    Shader食谱 Chapter3--Toonshader卡通效果 unity shader toon 卡通Shader  Shader食谱 Chapter3--Toonshader卡通效果 Over ...

  6. js数组的比较

    如果两个数组元素个数都相等,但排序不同,那么它两个相等吗?结果肯定是否定的.但如果先调用sort()方法进行排序,结果就是true了. console.log(a.sort().toString()= ...

  7. MAVEN项目导入src/test/java项目报错

    转载博客:https://blog.csdn.net/gengjianchun/article/details/78679036    https://blog.csdn.net/jsloveyou/ ...

  8. node.js主从分布式爬虫

    前言 前文介绍过用Python写爬虫,但是当任务多的时候就比较慢, 这是由于Python自带的http库urllib2发起的http请求是阻塞式的,这意味着如果采用单线程模型,那么整个进程的大部分时间 ...

  9. 使用OpenCV通过摄像头捕获实时视频并探测人脸

    在Opencv初接触,图片的基本操作这篇手记中,我介绍了一些图片的基本操作,视频可以看作是一帧一帧的图片,因此图片操作其实是视频操作的基础,这篇手记就来讲讲OpenCV中的视频操作,并实现一个用笔记本 ...

  10. JSBridge实现示例

    前言 参考来源 前人栽树,后台乘凉,本文参考了以下来源 Hybrid APP架构设计思路 marcuswestin/WebViewJavascriptBridge 楔子 本文介绍JSBridge的完整 ...