======================================
ZooKeeper 背景
======================================
ZooKeeper 是一个非常优秀的开源项目, 可以为软件系统提供非常重要的基础特性:
1. 分布式锁. 使用场景有: 比如我们有一套系统, 为了保证HA, 在多台需要在多台服务器上部署, 该服务程序有一些定时任务需要执行, 我们需要确保同一个定时任务不会在多台机器上被同时执行. 分布式锁可以使用 redis/RDBMS实现, 但都不如 ZooKeeper 更适合.
2. 比如要开发一套Master-Slave集群系统, Leader选举是必需的.
3. 服务发现. 在服务发现场景中, 我更推荐 consul.

ZooKeeper 数据结构
zk 提供类似于文件系统命名空间(name space), 我们可以采用路径的方式创建节点, 在节点上可以保存业务数据(2MB字节), 节点除了保存业务数据外, ZooKeeper还保存着版本号/时间戳等信息.

节点分为:
永久节点: 创建后一直保存着, 除非被删除
临时节点: 创建节点的会话存在, 节点就存在, 会话一旦结束, 节点就被删除.
顺序节点: 创建节点的时候, 自动为节点增加一个序列号, 多个客户端创建同一个节点, 序列号自增.

另外, zk 提供了监听机制, 组合这些不同类型的节点, zk就能提供分布式锁/Leader选举/分布式存储等功能.

======================================
Windows 单机安装
======================================
1. 复制 conf/zoo_sample.cfg 为 conf/zoo.cfg
zoo.cfg 默认的端口为 clientPort=2181
2. 运行 zkServer.cmd 启动 server
3. 运行 zkCli.cmd 客户端登陆
zkCli.cmd #登陆本机 localhost:2181, 可以不带任何参数
zkCli.cmd -server localhost:2181 #指定server和端口

======================================
基本命令
======================================

zk 提供很好用的命令行工具, 能自动补全节点名, 命令也不多.

help 命令, 显示zkCli命令行所支持的所有命令, 以及它们的使用语法.

ls some_path 命令, 显示指定路径下的节点

create some_path some_data 命令:
创建一个指定的节点, 并设定节点值.

get some_path 命令
显示指定节点的详细数据

create -s some_parent/some_path some_data 命令
创建一个 some_parent/some_path 序列节点, 该创建命令可以指定多次, 第一次创建的真实节点名为 some_parent/some_path0000000000, 第二次创建的节点名为 some_parent/some_path0000000001, 以此类推.

create -s -e some_parent/some_path some_data 命令
创建一个 some_parent/some_path 临时序列节点, 该创建命令可以指定多次, 第一次创建的真实节点名为 some_parent/some_path0000000000, 第二次创建的节点名为 some_parent/some_path0000000001, 以此类推. 但和普通的序列节点不同的是, 普通序列节点将一直存在, 直到被删除为止,临时序列节点只在会话期存在, 会话断开后就自动被删除.

第一个客户端创建一次:

第二个客户端再创建一次:

\

检查节点情况:

第一个客户端退出后, 再检查节点的情况, 只剩一个节点了

delete some_path 命令
删除节点

set some_path data 命令
重新设置节点数值

监听器
ls some_path watch
get some_path watch
ls 和 get 命令都可以加上 watch 关键词, 用来监听节点是否有变化, 一旦节点有变化, 会通知客户端.

======================
参考
======================
书籍: 李家智著 Spring Boot 2 精髓.
可能是把 ZooKeeper 概念讲的最清楚的一篇文章 https://github.com/Snailclimb/JavaGuide/blob/master/%E4%B8%BB%E6%B5%81%E6%A1%86%E6%9E%B6/ZooKeeper.md

ZooKeeper基础的更多相关文章

  1. zookeeper_02:zookeeper基础

    ZooKeeper基础概述 ZooKeeper维护一个小型的数据节点,这些节点被称为znode,采用类似于文件系统的层级树状结构进行管理. 针对一个znode,没有数据常常表达了重要的信息.比如,在主 ...

  2. Hadoop系列-zookeeper基础

    目前是刚刚初学完zookeeper,这篇文章主要是简单的对一些基本的概念进行梳理强化. zookeeper基础概念的理解 有时候计算机领域很多名词都是从一长串英文提取首字母缩写而来,但很不幸zooke ...

  3. Zookeeper 基础、工作流、ZAP协议

    ZooKeeper 基础 在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.[1] 我们将在本章中讨论以下主题:1.Architecture(架构)2.Hierarch ...

  4. Zookeeper系列一:Zookeeper基础命令操作

    有些事不是努力就可以改变的,五十块的人民币设计的再好看,也没有一百块的招人喜欢. 前言 由于公司年底要更换办公地点,所以最近投了一下简历,发现面试官现在很喜欢问dubbo.zookeeper和高并发等 ...

  5. Zookeeper基础教程(六):.net core使用Zookeeper

    Demo代码已提交到gitee,感兴趣的更有可以直接克隆使用,地址:https://gitee.com/shanfeng1000/dotnetcore-demo/tree/master/Zookeep ...

  6. Zookeeper基础教程(五):C#实现Zookeeper分布式锁

    分布式锁 互联网初期,我们系统一般都是单点部署,也就是在一台服务器完成系统的部署,后期随着用户量的增加,服务器的压力也越来越大,响应速度越来越慢,甚至出现服务器崩溃的情况. 为解决服务器压力太大,响应 ...

  7. 第一章 zookeeper基础概念

    1.ZooKeeper是什么 ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了统一命名服务. 配置管理和分布式锁等分布式的基础服务.在解决分布式数据一致性方面, ZooKeepe ...

  8. Zookeeper(一) zookeeper基础使用

    一.Zookeeper是什么 (安装的是3.4.7) ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现.它提供了简单原始的功能, ...

  9. Zookeeper基础命令操作

    转载链接:https://blog.csdn.net/dandandeshangni/article/details/80558383 安装参考链接https://blog.csdn.net/qiun ...

随机推荐

  1. html内嵌框架

    html内嵌框架 <iframe>标签会创建包含另外一个html文件的内联框架(即行内框架),src属性来定义另一个html文件的引用地址,frameborder属性定义边框,scroll ...

  2. LVS负载均衡集群(DR)

    -----构建DR模式的LVS群集----- --client---------------------LVS------------------------WEB1----------------- ...

  3. JavaWeb项目:在线评测系统

    此项目为本人的Java大作业. 项目文件和相关资源已上传到本人的GitHub 一.项目概况 1.1设计内容 一个在线评测系统,分用户和管理员两种身份.用户能够通过注册登录,参加比赛,最后实时得到比赛结 ...

  4. 论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)

    就是错题整理了,其实也会把一些不该犯的失误整进来. 其实之前一直拖着不想写,直到某次模拟赛,看错了2道题,顺便爆了一道题的int(没错第一个点就会爆)之后爆零了,吓得我赶紧把这篇博客搞出来了..... ...

  5. Flask 应用上下文

    应用上下文(application context) 它的字面意思是 应用上下文,但它不是一直存在的,它只是request context 中的一个对 app 的代理(人),所谓local proxy ...

  6. (转)Java动态追踪技术探究

    背景:美团的技术沙龙分享的文章都还是很不错的,通俗易懂,开阔视野,后面又机会要好好实践一番. Java动态追踪技术探究 楔子 jsp的修改 重新加载不需要重启servlet.如何在不重启jvm的情况下 ...

  7. TODO 动态执行appium代码,便于修改和调试

    https://testerhome.com/topics/9040 还没尝试过. 不过不是很懂怎么实现的,java不是编译后再运行的语言吗?怎么一边编译一边运行呢???

  8. hystrix实战

    https://blog.csdn.net/Ezreal_King/article/details/72942823

  9. Luogu P1117 [NOI2016]优秀的拆分

    题目链接 \(Click\) \(Here\) 这题质量不错,就是暴力分有点足\(hhhhhhhh\),整整有\(95\)分. (搞得我写完暴力都不想写正解直接理解思路之后就直接水过去了\(QwQ\) ...

  10. (数论 最大公约数 最小公倍数) codeVs 1012 最大公约数和最小公倍数问题

    题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件:  1.P,Q是正整 ...