`

zookeeper学习笔记-基本用法介绍

阅读更多
zk基本功能了解

zookeper是一个高性能,分布式,开源分布式应用协调服务,他提供了简单的原始的功能,分布式应用可以基于他实现高级服务,比如同步,配置管理,集群管理,命名服务。他容易编程,使用文件系统目录作为数据模型。服务端跑在java上,客户单用c和java2中语言

zk的功能:
协调:多个节点一起完成一个动作
1.集群成员管理
2.锁
3.选主
4.同步
5.发布/订阅

zookeeper的数据模型
1.分层结构
2.树性结构中的每个节点叫做Znode
3.每个znode有数据(byte[]类型),也可以有子节点
节点路径
斜线分割/host/ds,没有相对路径
通过数据结构stat来存储数据的变化,ACL的变化和时间戳
数据变化是,版本号会递增
可以对znode中的数据进行读写操作

应用场景

数据发布/订阅
数据发布/订阅即所谓的配置中心,布者将数据发布到zk
的一个或者一系列节点上,阅者进行数据订阅,当数据有变化时,及时得到数据的变化通知

负载均衡
本质是利用zookeeper的配置管理功能能,涉及的步骤为:
1.服务提供者把自己的域名及IP 端口的映射注册到zk中
2.服务消费者通过域名从zk中获取到对应的IP及端口,这个IP及端口有多个,只是获取其中一个
3.当服务提供者宕机时,对应的域名与IP的对应就会减少一个映射
4.阿里的dubbo服务框架就是基于zk来实服务路由和负载

命名服务
在分布式系统中,命名服务(Name Service)也是很重要的应用场景,通过zk也可以四线类似
于J2EE中的JNDI的效果;分布式环境下,命名服务更多是资源定位,并不是真正的实体资源,
其本质也是用到zk的集中配置管理和查找

分布式协调/通知
– 通过watcher和通知机制实现
– 分布式锁
– 分布式事务

分布式锁
– 排他锁
– 共享锁
分布式队列
– FIFO

集群角色
– Leader:为客户端提供读和写服务
– Follower:提供读服务,所有写服务都需要转交给Leader角色,参与选举
– Observer:提供读服务,部参与选举过程,一般是为了增强zk集群的读请求并发能力
会话(session)
– Zk的客户端与zk的服务端之间的连接
– 通过心跳检测保持客户端连接的会话
– 接收来自服务端的watch事件通知
– 可以置置超时时间

基本概念
数据节点(Znode)
– 不是机器的意思
– Zk树形结构中的数据节点,用于存储数据
– 持久节点:一但创建,除非主动调用删除操作,否则一直存储在zk中
– 临时节点:与客户端的会话绑定,一但客户端会话失效,这个客户端建创建的所有临时节点都会被移除
– SEQUENTIAL Znode:创建节点时,如果设置属性SEQUENTIAL,则会自动在节点最后面追加一个
整型数字,创建相同的节点的时候会自增

版本
– Version:当前Znode的版本
– Cversion:当前Znode的子节点的版本
– Aversion:当前Znode的ACL(问控制)版本
Watcher
– 作用于Znode节点上
– 多种事件通知:数据更新,子节点状态等

ACL
– Access Control Lists
– 类似于linux/unix的权限控制
– CREATE:创建子节点的权限
– READ:获取节点数据和子节点列表的权限
– WRITE:更新节点数据的权限
– DELETE:删除子节点的权限
– ADMIN:设置节点ACL的权限
CREATE和DELETE是针对子节点的权限控制

zookeeper单机模式

在开发测试环境中,没有较多的物理资源,因为采用单机模式,当然,在单台物理机下也可以部署集群模式,但是这会增大单机物理机的资源的资源消耗,在开发环境中我们一般使用单机
模式
单机模式不可以用在生产环境中,因为无论从系统的可靠性还是读写性能上都都不能满足生产的需求
Zk是基于java语言开发,因为单机模式的资源需求跟普通的java程序差不多,1个CPU和
512m内存就足够

– Zk下载地址: http://www.apache.org/dyn/closer.cgi/zookeeper/
– 解压文件
• Windows:采用winzip或者winwar都行
• Linux:采用tar –zxvf zookeeper-3.4.6.tar.gz
– 配置环境变量
• ZOOKEEPER_HOME=/home/zookeeper-3.4.6
• PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
不配置也没问题,为了操作方便一般会配置这个参数

bin
– .sh:linux环境
– .cmd:windows境
conf
– zoo_sample.cfg为例配置文件,需要修改:
自己的名称,一般为zoo.cfg
– Log4j.properties为志配置文件
Contrib:一些用于操作zk的工具包
lib:zk依赖的某些包
Recipes:zk某些用法的代码示例
Dist-maven:maven编译的发布目录

把conf中的zoo_sample.cfg修改为zoo.cfg
Zoo.cfg
– tickTime:默认3000ms,作为一种基本单元,可用它的倍数来表示系统内部的时间间隔配置,比如:
• 2*tickTime是客户端会话的超时时间
• 1*tickTime是客户端与zk服务器端的心跳时间
– dataDir:无默认配置,必须配置;不配置会不能启动,用于配置存储快照文件的目录,如果没有配置dataLogDir,那么事
务志也会存储在此目录
– clientPort:zk的运行端口,默认是2181
启动
– Windows:直接双击zkServer.cmd
– Linux:zkServer.sh start

客户端命令行
– Linux:bin/zkCli.sh
– Windows: bin/zkCli.cmd
– 不带任何参数默认连接到localhost:2181
– zkCli.cmd –server ip:port连接到指定的服务器地址

查看命令行帮助
– 命令行输入help可以查看所有的命:
列表及语法
– 实际上,输入任何符回车都会提示帮助信息
ls path [watch]
• Path表示指定数据节点的节点路径
• 列出指定节点下的所有子节点
• 能查看第一级的所有子节点
• 安装时 ls /  下有默认的zookeeper保留节点
• Watch表示监听path的子节点的变化

创建
– create [-s] [-e] path data acl
• 创建建zookeeper节点
• -s或者-e表示创建建的是序列或临时节点,不加默认创建的是持久节点
• Path:节点的全路径,没有相对节点的表示方式
• Data:当前节点内存储的数据
• Acl 用来进行权限控制,缺省情况下不做任何权限控制

读取
– get path [watch]
• 获取指定节点的数据内容和属性信息
• Path表示指定数据节点的节点路径
• 右图中
– wokers节点内的数据
– cZxid为创建该节点的事务id
– Mzxid最后一次更新该节点的事务id
– Mime:最后一次更新时间
– cversion子节点版本
– dataVersion数据版本
– aclVersion:问控制版本

更新
– set path data [version]
• 更新指定节点的数据内容
• Path表示被更新的节点路径
• data:更新的数据
• Version:指定被更新的数据版本,一般不指定,如果
数据版本已经更新,则指定旧版本时会报错

删除
– delete path [version]
• 删除指定节点
• Path表示被删除的节点
• Version:指定被删除的数据版本,一般不指定,如果
数据版本已经更新,指定旧版本时会报错
















  • 大小: 84.5 KB
  • 大小: 8.7 KB
  • 大小: 6.8 KB
  • 大小: 6.8 KB
  • 大小: 6.5 KB
1
3
分享到:
评论

相关推荐

    学习笔记--zookeeper

    例如,可以使用create()方法创建节点,exists()检查节点是否存在,get()和set()用于读写节点数据,以及watcher监听机制来响应数据变化。 总结来说,Zookeeper是分布式系统中的重要协调工具,它的强大功能和易用性使...

    Zookeeper学习资源和笔记(附代码)

    例如,`ZooKeeper`类的`exists()`方法用于检查节点是否存在,`getData()`和`setData()`分别用于读取和更新节点数据,`create()`用于创建节点,`delete()`用于删除节点,`getChildren()`用于获取子节点列表,`exists...

    Java架构面试专题(含答案)和学习笔记-1

    本资料包含学习笔记和答案,便于自我检验和理解。 1. **Java基础知识**: - **内存管理**:包括垃圾回收机制、内存泄漏及其检测方法、JVM内存模型(堆、栈、方法区等)。 - **数据类型与数据结构**:深入理解原始...

    大数据学习笔记

    ### 大数据学习笔记知识点概览 #### 第一部分:Spark学习 ##### 第1章:Spark介绍 - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但...

    dubbo+zookeeper入门资源

    【描述】"dubbo+zookeeper入门资源,可直接使用,适合新手练习使用"意味着这个压缩包包含了学习和实践这两个技术的基础材料。通过这个资源,初学者可以了解如何配置和使用Dubbo与Zookeeper来实现服务间的通信和管理...

    kafka 学习笔记 good

    ### Kafka学习笔记精要 #### 一、为什么需要消息系统 在现代软件开发中,消息系统扮演着极其重要的角色,特别是在分布式系统中。Kafka作为一款高性能的消息队列中间件,其价值在于解决了传统分布式系统中常见的...

    Java架构面试专题汇总(含答案)和学习笔记.zip

    这个压缩包包含的学习笔记和习题集全面覆盖了Java架构师所需的核心知识点,下面我们将深入探讨其中的关键内容。 1. **Java基础** - **数据类型与变量**:理解基本数据类型、引用数据类型,以及它们在内存中的存储...

    dubbo学习笔记,都是一个字一个字的写的

    【Dubbo学习笔记】 本文将深入探讨Dubbo框架的核心概念及其在实际应用中的工作原理,同时结合SpringBoot和SpringCloud的整合,以及RPC(Remote Procedure Call)技术的基础知识。 一、RPC原理 RPC(远程过程调用)...

    Java后端学习笔记代码Java后端学习笔记代码

    本压缩包"Java后端学习笔记代码"显然是一个针对Java后端开发的学习资源集合,包含了作者在学习过程中编写的代码示例和笔记。以下是基于这个主题的详细知识点解析: 1. **Java基础**: 作为Java后端开发的起点,掌握...

    dubbo学习笔记.pdf

    【Dubbo学习笔记】 Dubbo是一款高性能、轻量级的Java RPC框架,它旨在提供面向接口的远程方法调用、智能容错与负载均衡、服务自动注册与发现等核心功能,帮助开发者构建分布式服务架构。以下是对Dubbo基础知识、...

    Hadoop之HBase学习笔记

    6. 实用工具:介绍HBase Shell、HBase Console和其他相关工具的使用方法。 7. 性能调优:分享关于HBase性能优化的经验,包括配置调整、数据模型设计等。 8. 示例代码:通过"src"目录下的代码,提供实际操作的参考,...

    2010-1011学习笔记归纳

    这些学习笔记涵盖了多个IT领域的关键知识点,以下是它们的详细解释: 1. **Search Engine**:搜索引擎是互联网上用于检索信息的重要工具。它们通过爬虫技术抓取网页,使用索引和算法来排序搜索结果,以提供最相关的...

    3.Hadoop学习笔记.pdf

    Hadoop的生态系统还包括Hive、HBase、Pig、Zookeeper等多种工具和组件,用于数据分析、实时处理、任务调度和协调。 Hadoop安装通常包括下载、配置和启动集群的NameNode和DataNode。NameNode是HDFS的主节点,负责...

    java后端学习笔记

    本篇文章将深入探讨“java后端学习笔记”中的关键知识点,包括消息队列(Message Queuing)服务如ActiveMQ和RabbitMQ、工作流引擎Activity、容器化技术Docker、分布式服务框架Dubbo、网络库Netty、RPC(Remote ...

    java学习笔记.zip

    文件可能涵盖JavaScript的基本语法、函数、对象、闭包,以及jQuery的选择器、事件、动画和AJAX使用方法。 6. **7、JavaSE:异常机制.pdf** Java中的异常处理机制是程序健壮性的重要组成部分。这部分可能详细解释了...

    sorl学习笔记及相关教程

    SOLR的官方开发文档详尽介绍了各个组件和API的使用方法,是开发者的重要参考资料。 通过对SOLR的学习和实践,我们可以构建高性能、易扩展的搜索系统,满足企业的各种需求。无论是初学者还是经验丰富的开发者,都能...

    Java架构面试专题(含答案)和学习笔记(5).rar

    这个压缩包文件包含的学习笔记和答案,旨在帮助读者深入理解Java技术栈的关键点,提升解决问题的能力。以下是对Java架构面试中可能出现的一些关键知识点的详细说明: 1. **JVM(Java虚拟机)**: - 类加载机制:...

    hadoop实战——初级部分学习笔记 2

    本文将基于私塾在线《Hadoop实战——初级部分》的学习笔记,深入探讨Hadoop的基本概念、核心组件以及在实际中的应用。 #### 二、为何选择学习Hadoop 1. **市场需求**:当前社会产生了大量的数据,例如每分钟...

    dubbo学习笔记

    【Dubbo是什么】 Dubbo是阿里巴巴开源的一款高性能、轻量级的Java远程服务调用框架。它主要设计用于实现服务间的通信,特别是...对于初学者来说,掌握Dubbo的基本概念和使用方式,是进入分布式服务化领域的重要步骤。

Global site tag (gtag.js) - Google Analytics