认识ZooKeeper

ZooKeeper概述

1.Zookeeper是什么?

ZooKeeper是源代码开放的分布式协调服务,由雅虎创建,是Google CHubby的实现。

ZooKeeper是一个高性能的分布式数据一致性解决方案,它将那些复杂的、容易出错的分布式一致性服务封装起来,构成一个高效可靠得原语集,并提供一系列简单易用的接口给用户使用

知识要点:

(1)源代码开源

(2)是分布式协调服务,它解决分布式数据一致性问题

A :顺序一致性 B:原子性 C:单一视图

D:可靠性 E:实时性

(3)高性能

(4)我们可以通过挑用ZooKeep提供的接口来解决一些分布式应用中中的实际问题。

2.ZooKeeper的典型应用场景?

1.数据发布/订阅

2.负载均衡

3.命名服务

4.分布式协调和通知

3.ZooKeeper的优势

(1)源代码开源

(2)已经被证实是高性能,易用稳定的工业级产品

(3)有着广泛的应用:Hadoop,HBase,Storm,Solr

ZooKeeper的基本概念

1.集群角色

Leader,Follower,Observer

Leader服务器是整个ZooKeeper集群工作机制中的核心

Follower服务器是ZooKeeper集群状态的跟随者

Observer服务器充当一个观察者角色

相关设计模式

Leader,Follower设计模式

Observer 观察者设计模式

2.会话

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

3.数据节点

ZooKeeper中的节点有两类

(1)集群中的一台机器为一个节点

(2)数据模型中的数据单元Znode,分为持久节点和临时节点

ZooKeeper的数据模型是一棵树,树的节点就是Znode,Znode中可以保存信息,数据模型如下图:

4.版本

如图:

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

悲观锁和乐观锁

悲观锁又叫悲观并发锁,是数据库中一种非常严格的锁策略,具有强烈的排他性,能够避免不同事务对同一数据并发更新造成的数据不一致性,在上一个事务没有完成之前,下一个事务不能访问相同的资源,适合数据更新竞争非常激烈的场景

相比悲观锁,乐观锁使用的场景会更多,悲观锁认为事务访问相同数据的时候一定会出现相互的干扰,所以简单粗暴的使用排他访问的方式,而乐观锁认为不同事务访问相同资源是很少出现相互干扰的情况,因此在事务处理期间不需要进行并发控制,当然乐观锁也是锁,它还是会有并发的控制!对于数据库我们通常的做法是在每个表中增加一个version版本字段,事务修改数据之前先读出数据,当然版号也顺势读取出来,然后把这个读取出来的版本号加入到更新语句的条件中,比如,读取出来的版本号是1,我们修改数据的语句可以这样写,update 某某表 set 字段一=某某值 where id=1 and version=1,那如果更新失败了说明以后其他事务已经修改过数据了,那系统需要抛出异常给客户端,让客户端自行处理,客户端可以选择重试

5.watcher(观察者)

事件监听器

ZooKeeper允许用户在指定节点上注册一些Watcher,当数据节点发生变化时候,ZooKeeper服务器会把这个变化通知发送给感兴趣的客户端。

6.ACL权限控制

ACL是Access Control Lists的简写,ZooKeeper采用ACL策略进行权限控制,有以下权限:

CREATE:创建子节点的权限

REAN:获取节点数据和子节点列表的权限

WRITE:更新节点数据的权限

DELETE:删除子节点的权限

ADMIN:设置节点ACL的权限

ZooKeeper环境搭建

1.环境准备

vmware虚拟机

centos7

SecureCRT(连接虚拟机)

附件下载:

Centos7 请自己官网下载

SecureCRT(32和64)+注册机:http://pan.baidu.com/s/1mhCQwTa

ZookeePer:http://pan.baidu.com/s/1mhCQwTa

VMware:http://pan.baidu.com/s/1dE6ZcSL

步骤:

(1)使用vmvare创建三个centos7的虚拟机

IP地址:每个虚拟机服务器配置与你当前主机在同一个网段的IP

网络设置足以:如果虚拟机与SecureCRT所在的机器不是同一台,需要把3台虚拟机centos7的虚拟机的网络设置为桥接模式

(2)使用SecureCRT连接虚拟机

(3)安装配置ZooKeeper

2.三种集群

(1)集群环境

(2)单机环境

(3)伪集群环境

如何安装VMware和Centos7以及如何配置“桥接模式”下的网络请自行百度

配置使用的命令如下:

------------------------------------------------------------------------------------------------------

cd /opt
wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.10.tar.gz
ls
tar xzvf zookeeper.tar.gz
mv zookeeper.3.4.10 zookeeper
cd zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
i键进入插入模式
修改dataDir
dataDir=/var/zookeeper
clientport 是用来对外提供服务的端口

配置服务器的格式
server.id=host:port:port
id:即为服务器的Id,是一个整数
host:即为服务器的IP
第一个port:是Leader服务器与Follower服务器的通信端口
第二个port:是用于服务器之间选举投票选着Leader服务器的通信端口

按ESC进入命令模式 输入 :wq 保存并退出

进入var 创建zookeeper文件夹 mkdir 文件夹名称
在该文件中创建文件myid 并写入服务器Id

启动zookeeper服务器
./zkserver.sh start
关闭zookeeper服务器
./zkserver.sh stop

yum install telnet 安装telnet

服务器之间相互拷问文件
scp zoo.cfg [email protected]:/opt/zookeeper/conf

zoo.cfg的主要配置信息

------------------------------------------------------------------------------------------------------

注意事项:

1.虚拟机网络连接使用桥接模式

2.一定要关掉本机和虚拟机的防火墙

时间: 2024-08-26 00:41:06

认识ZooKeeper的相关文章

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

浅谈分布式服务协调技术 Zookeeper

Google的三篇论文影响了很多很多人,也影响了很多很多系统.这三篇论文一直是分布式领域传阅的经典.根据MapReduce,于是我们有了Hadoop:根据GFS,于是我们有了HDFS:根据BigTable,于是我们有了HBase.而在这三篇论文里都提及Google的一个Lock Service -- Chubby,哦,于是我们有了Zookeeper. 随着大数据的火热,Hxx们已经变得耳熟能详,现在作为一个开发人员如果都不知道这几个名词出门都好像不好意思跟人打招呼.但实际上对我们这些非大数据开发

zookeeper原理(转)

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其发展历程无需赘述.在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的.可扩展的.分布式的.可配置的协调机制来统一系统的状态.Zookeeper的目的就在于此.本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本

zookeeper集群部署手册

一.  准备 1.  硬件 三台装好RHEL6.7_x64的x86服务器,机器名如下 zookeeper01 zookeeper02 zookeeper03 2.  软件 jdk-7u80-linux-x64.rpm zookeeper-3.4.8.tar.gz 二.  安装JDK(root用户执行) 1.  拷贝jdk-7u80-linux-x64.rpm到/data01/software/jdk 2.  用root登录 3.  执行以下命令 cd /data01/software/jdk r

zookeeper能做什么?

Zookeeper是Hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用. Zookeeper是针对大型分布式系统的高可靠的协调系统.由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统.

安装zookeeper

1.下载 下载Zookeeper-3.4.6.tar.gz  地址http://www.apache.org/dist/zookeeper/ 或者去我的百度云盘找: http://pan.baidu.com/s/1boRWJHt 2.上传压缩包并解压 我上传到 /apps/softWare cd  /apps/softWare tar -zxvf zookeeper-3.4.6.tar.gz -C /apps/zookeeper/ 3.配置 然后在对应的zookeeper-3.4.6/conf

ZooKeeper和Curator相关经验总结

一.关于ZooKeeper的watch用法,需要注意 详细说明如下: ZooKeeper Watches All of the read operations in ZooKeeper - getData(), getChildren(), and exists() - have the option of setting a watch as a side effect. Here is ZooKeeper's definition of a watch: a watch event is o

Zookeeper启动失败,报错 can not open chanel to 2

zookeeper 3.4.8 安装在 7 台不同的虚拟机上,配置文件如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/zookeeper clientPort=2181 server.1=master1:2888:3888 server.2=master2:2888:3888 server.3=slave1:2888:3888 server.4=slave2:2888:3888 server.5=slave3:2888:3888 s

ZooKeeper架构设计及其应用要点

ZooKeeper是一个开源的分布式服务框架,它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本. 总体架构 ZooKeeper分布式协调服务框架的总体架构,如图所示: ZooKeeper集群由一组

zookeeper集群搭建

三台机器,ip分别是192.168.1.231.192.168.1.232.192.168.1.233 用到工具:SecureCRT.WinSCP SecureCRT用于连接机器,执行命令 WinSCP用于往机器上传文件 前提:机器安装好SSH服务 下载zookeeper-3.3.5.tar.gz,利用WinSCP上传到231机器,假设路径为/home/grid/soft/利用SecureCRT,执行命令tar -zxvf zookeeper-3.3.5.tar.gz,解压文件mv zookee