ZooKeeper入门
来源:互联网 发布:matlab模块化编程 编辑:程序博客网 时间:2024/06/05 13:32
zookeeper入门
- zookeeper入门
- zookeeper的简介
- zookeeper的特性
- zookeeper环境搭建
- Zookeeper的数据管理功能
- 通过客户端对元数据进行管理
- zookeeper入门
zookeeper的简介
顾名思义,zookeeper就是动物园管理员的意思,Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务。其主要具有一下特点:
- zookeeper是为别的分布式程序服务的
- Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
- Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称等服务。
虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
- 管理(存储,读取)用户程序提交的元数据(不是用户程序的业务数据);
- 并为用户程序提供数据节点监听服务;(监听因故宕机的程序,并通知其他应用程序接替工作)。
zookeeper的特性
Zookeeper:一个leader,多个follower组成的集群
全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的
分布式读写,更新请求转发,由leader实施
更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行
数据更新原子性,一次数据更新要么成功,要么失败
实时性,在一定时间范围内,client能读到最新数据
zookeeper环境搭建
拷贝安装包到对应服务器上。
解压缩安装包
tar -zvxf zookeeper-3.4.5.tar.gzmv zookeeper-3.4.5 zookeeper #修改文件夹名称
配置环境变量
vim /etc/profile#加入以下信息export ZOOKEEPER_HOME=/opt/zookeeperexport PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin#添加之后source /etc/profile
修改conf文件夹下的配置文件(复制zoo_sample.xml为zoo.xml),添加如下内容
dataDir=/root/zookeeper/datadataLogDir=/root/zookeeper/logserver.1=mini1:2888:3888 #其余节点的主机名,以及通信的端口和检测连接的端口server.2=mini2:2888:3888server.3=mini3:2888:3888
在前面定义的dataDir目录下新建muid文件,加入内容1,之后配置的节点依次递增。
启动服务(其余节点需要关闭防火墙)
zkServer.sh start #启动服务zkServer.sh status #查看服务状态(主从节点信息)
Zookeeper的数据管理功能
在zookeeper中默认通过树的结构保存用户的元数据
每一个节点都可以存放数据,类似与文件系统的树形存储目录。
通过命令行连接到zookeeper服务器。
通过解压目录的
bin/zkCli.sh
可以直接启动命令行的客户端。在zookeeper中每个节点的数据可以分为两类:
- 瞬时节点(ephemeral)(当连接进程与zookeeper断开连接的一定时间后(心跳时间)就会删除节点)
- 持久节点(persistent)(即时连接进程与zookeeper断开也不会删除该节点)
而且每种节点又分为两种,有序节点与无序节点(有序节点在创建时会默认在其后添加一个递增的序号)。所以总共在zookeeper中包括了四种节点。
- PERSISTENT
- PERSISTENT_SEQUENTIAL(持久序列/test0000000019 )
- EPHEMERAL
- EPHEMERAL_SEQUENTIAL
通过客户端对元数据进行管理
- 通过
bin/zkCli.sh
我们通过客户端连接到zookeeper,我们可以在命令行对节点进行增删改查操作。
* 通过help
命令我们可以对查看命令及其使用方法。
值得注意的是在ls
与get
命令后面我们可以对某个数据增加监控,当某个数据发生变化的时候连接进程后收到信号。只能监听一次,完成后后面的事件不会再触发监听。
shell
get /test/test1 true #对/test/test1增加监听,当其数据发生变化的时候会收到信息
# WatchedEvent state:SyncConnected type:NodeDataChanged path:/test/test1
ls /test true #对/test增加监听,子目录下内容发生变化的时候会收到信息。
# WatchedEvent state:SyncConnected type:NodeDeleted path:/test/test1
- zookeeper 入门
- zookeeper 入门
- Zookeeper入门
- Zookeeper入门
- Zookeeper入门
- zookeeper入门
- ZooKeeper入门
- zookeeper入门
- ZooKeeper入门
- Zookeeper入门
- zookeeper入门
- zookeeper入门
- zookeeper入门
- Zookeeper-入门
- zookeeper入门
- zookeeper 入门
- zookeeper 入门
- Zookeeper入门
- 为什么精英都是清单控(笔记)——数字化清单
- 【Spring Task】定时任务详解实例-@Scheduled
- spring @Async
- easyui手风琴配合tree 加tab 的数据库动态添加
- java IO笔记(IO简述)
- ZooKeeper入门
- IT行业中BA(Business System Analyst)角色怎么样?以及职责
- thinkphp跨库操作代码实例
- poj2823 (双端队列维护固定滑动窗口的最值)
- spring 3.0.5的<mvc:resources> 标签的使用
- php 去除小数点后面的0,保留非零
- 重载和重写的底层实现
- [Leetcode] 342. Power of Four 解题报告
- 2017 多校赛6 Kirinriki hdu 6103