ZooKeeper一:认识ZooKeeper

来源:互联网 发布:sql合并两个字段 编辑:程序博客网 时间:2024/05/16 11:39

概述

Zookeeper诞生背景

随着互联网的高速发展,企业对计算机系统的计算,存储能力越来越高。最简单的证明就是出现了诸如高并发,海量存储之类的词汇。在这样的背景下,单纯依靠少量高性能主机来完成计算任务已经不能满足企业的需求,企业的IT架构逐步从集中式像分布式过渡。所谓的分布式是指:把一个计算任务分解成若干的计算单元,并且分派到若干不同的计算机去执行,然后汇总计算结果。

Zookeeper是什么

是源代码开放的的分布式协调服务,由雅虎创建,是Google Chubby开源实现。Zookeeper是一个高性能的分布式数据一致性解决方案,他将那些复杂的、容易出错的分布式一致性服务封装。构成一个高效可靠的原语集。并提供一系列简单易用的接口给用户使用。

Zookeeper典型应用场景

数据发布与订阅
负载均衡
命名服务:顾名思义就是提供名称的服务,例如数据库表格ID,一般用的较多的有自动增长的ID,还有一种就是UUID,两种ID都各有缺陷,第一种的局限是在单库单表中使用,不能在分布式中使用,第二种可以在分布式中使用,但是没有规律,难于理解。我们可以借用zk来生成一个顺序增长的,可以集群环境使用的,命名易理解的ID。
分布式协调/通知

Zookeeper中的基本概念

集群角色

Leader,Follower,Observer
Leader服务器是集群工作机制的核心
Follower服务器是Zookeeper集群状态的跟随者
Observer充当观察者的角色

会话

会话是指客户端和Zookeeper服务的连接,zk中的会话叫session,客户端与服务器建立一个tcp的长连接来维持一个session。客户端在启动的时候会首先和服务器建立一个TCP连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能向服务器发送请求并获得响应。

数据节点

zk中的节点有2种:
集群中的一台机器称为一个节点
数据模型中的数据单元znode,分为持久阶段和临时节点
zk的数据模型就是一棵树,树的节点就是znode,znode中可以保持信息

版本

版本类型 说明
version 当前数据节点数据内容的版本号
cversion 当前数据节点子节点的版本号
aversion 当前数据节点ACL(权限)变更的版本号

watcher

事件监听器
zk允许用户在指定的节点上注册一些watcher,当数据节点发生变化时,zk会把这个变化通知给感兴趣的客户端

ACL权限控制

Access Control Lists的简写,zk采用ACL策略来进行权限控制,有以下权限
CREATE:创建子节点的权限
READ:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限
DELETE:删除子节点的权限
ADMIN:设置节点ACL的权限

Zookeeper中集群搭建

关于zookeeper的集群搭建,官网上有详细的描述:
http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
下载:http://zookeeper.apache.org/releases.html#download
本文使用的版本是zookeeper-3.3.6.tar.gz
本文已经安装好了三台虚拟机:192.168.137.128、192.168.137.131、192.168.137.132,每台虚拟机已经搭建好了JDK。
1)进入/usr目录,使用wget命令从官网下载ZooKeeper
sudo wget http://mirror.bjtu.edu.cn/apache/ZooKeeper/ZooKeeper-3.3.6/ZooKeeper-3.3.6.tar.gz
也可以通过上面的下载连接下载以后传入linux服务器
2)解压下载的zk包,并将其命名为zookeeper
sudo tar -xf ZooKeeper-3.3.6.tar.gz
sudo mv ZooKeeper-3.3.6 zookeeper-3.3.6
sudo rm -f ZooKeeper-3.3.6.tar.gz
3)创建ZK的配置文件
cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg
4)执行vi zoo.cfg,将配置文件做如下修改
tickTime=2000 zk的服务器心跳时间,单位为ms
initLimit=10 投票选举新leader的初始化时间
syncLimit=5 leader和follower心跳检测最大容忍时间,响应超过syncLimit*tickTime,leader会认为follower死掉了,从服务列表中删除follower
dataDir=/var/zookeeper/data 数据目录
dataLogDir=/var/zookeeper/log 日志目录
clientPort=2181 端口
server.1=192.168.137.128:2888:3888
server.2=192.168.137.131:2888:3888
server.3=192.168.137.132:2888:3888
在上述dataDir的目录下建立文件 myid,里面只需要写入server.后面的数字即可(三台主机对应的myid和上述服务器配置应对应)
5 )创建相应的目录
cd /var
mkdir zookeeper
cd zookeeper
mkdir log
mkdir data
6)启动zookeeper
分别启动服务器的 zk
cd /usr/zookeeper/bin
./zkServer.sh start
7)可以使用zookeeper自带的客户端工具zkCli.sh来查看zookeeper的节点建立情况
cd /usr/zookeeper/bin
./zkCli.sh
使用”ls /” 查看”/”目录

注意,在启动过程中如果报错,则可以查看bin下面的zookeeper.out查看报错日志。

1 0
原创粉丝点击