ZooKeeper概述及其安装

ZooKeeper笔记

ZooKeeper概述

背景:

现代企业对计算机系统的计算存储能力要求越来越高,单纯的高性能服务器已经无法满足要求。企业的IT架构从集中式向分布式过度。所谓分布式,就是将一个计算任务分解成若干计算单元,分派到不同的计算机中去执行,然后汇总计算结果的过程。

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

分布式数据一致性问题,指的是:

顺序一致性:严格按照客户请求发起的顺序到ZooKeeper中进行任务执行

原子性:所有事务请求,在集群中的任意一台机器上的执行结果都是一致的

单一视图:看到的服务端数据都是一致的

可靠性:一旦服务端完成响应,则状态会保存下来

实时性:ZooKeeper保证在一定时间内,客户端一定能从服务端获取数据

ZooKeeper典型应用场景:

数据发布/订阅

负载均衡(和Nginx负载均衡有什么区别?)

命名服务

分布式协调/通知:心跳检测

——————————————————————————————————————————————————————

ZooKeeper的基本概念

集群角色:

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

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

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

会话:

会话指客户端和ZooKeeper服务器的连接,ZooKeeper中的会话叫session,客户端与服务器建立一个TCP长连接来维持一个Session

客户端在启动的时候,首先会与服务器建立一个TCP长连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效会话,也能向ZooKeeper服务器发生请求并获得响应。

数据节点:

ZooKeeper有两种节点

1、集群中的一台机器称为一个节点

2、数据模型中的数据单元node,分为持久节点和临时节点。ZooKeeper的数据模型是一棵树,输的节点就是Znode,Znode中可以保存信息

大多数的ZooKeeper开发,都是和树节点打交道

版本:

版本类型:

version:当前数据节点数据内容的版本号  如果修改了某张表的数据,就将该表的version字段进行变更。如果version=1,表示创建以来被修改了一次

cversion:当前数据节点子节点的版本号

aversion:当前数据节点ACL变更版本号

一般要修改一条数据是这么处理的,在修改前,先读取当前数据记录的version字段,如version=2,然后修改的时候,version=2作为修改条件。如果此时其他事务修改了此数据,则当前修改就会失败(因为version=2找不到了)

悲观锁和乐观锁

watcher:

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

ACL权限控制:

Access Control Lists

权限类型:CREATE-创建子节点;READ-获取节点数和子节点列表;WRITE-更新节点数据;DELETE-删除子节点;ADMIN-设置节点ACL

——————————————————————————————————————————————————————

ZooKeeper环境搭建(集群、单机、伪集群)

集群

1、准备多台Linux机器、JRE环境

2、下载ZooKeeper

3、解压安装包到需要安装的机器上

4、进入解压后的文件夹,复制一份配置文件:cp zoo_sample.cfg zoo.cfg

zoo_sample.cfg是ZooKeeper配置文件的样例,一般我们复制一份后,在新文件上修改就行了

5、配置说明

打开配置文件(这里是zoo.cfg)后,

dataDir:用来配置ZooKeeper服务器存储快照文件的目录,一般放到  /var/ZooKeeper 上(没有的话要自己创建)

clientPort:服务器对外提供服务的端口。默认是2181

配置服务器格式:server.id=ip:port:port  两个端口的含义是不一样的

server.1=192.168.1.101:2181:2182

server.2=192.168.1.102:2181:2182

server.3=192.168.1.103:2181:2182

6、将修改完后的配置文件拷贝到集群中所有机器上

scp zoo.cfg [email protected]:/opt/zookpeer/conf

7、myid

在dataDir指定的目录下,创建一个  myid  文件,写入当前机器的id(就是server.1,那么就写1)

注意:每台机器都有配置

8、启动

进入到bin目录下,有一个叫 zkserver.sh 的文件

./zkserver.sh start

./zkserver.stop

把集群中所有的机器都启动

验证是否启动成功:telnet 192.168.1.101 2181   执行 stat  命令  这个telnet的ip是本机的ip

如果只有一台服务器启动的话,是不会成功的。因为ZooKeeper中,当超过一半的机器成功启动的时候,才认为是成功的,能够向外提供访问

我需要运行几个ZooKeeper?

你运行一个zookeeper也是可以的,但是在生产环境中,你最好部署3,5,7个节点。部署的越多,可靠性就越高,当然最好是部署奇数个,偶数个不是不可以的,但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳。你需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保zookeeper是高性能的。).如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上面。就像DataNodes 和 TaskTrackers一样。

机器的角色,可以在telnet命令后,输入stat,查看其中的mode参数

伪集群

zoo.cfg的配置文件中

server.1=192.168.1.101:2181:2182

server.2=192.168.1.101:2183:2184

server.3=192.168.1.101:2185:2186

其实就是ip一样,端口不同

注意:我自己试了不行,应该还有其他配置,因为只有一台机器,那么myid上写什么,启动就一次够了?

正确的方式应该是在本地不同目录安装多套zk

单机

zoo.cfg的配置文件中

server.1=192.168.1.101:2181:2182

配置一台就是了

成功

——————————————————————————————————————————————————————

时间: 2024-10-13 17:19:19

ZooKeeper概述及其安装的相关文章

(转)ZooKeeper 笔记(1) 安装部署及hello world

ZooKeeper 笔记(1) 安装部署及hello world 先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Getting Started(开始入门) http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html Tutorial(教程) http://zookeeper.apache.

第一课 MongoDB 概述与安装

1.课程大纲 本次课主要介绍 MongoDB 背景知识和 MongoDB 的安装与配置,让大家对 MongoDB 有一个初认识. 其基本的知识点包含: NoSQL数据库概述 MongoDB 数据库简单介绍 Linux 下安装 MongoDB 数据库 Mac 和 Windows 下安装 MongoDB 数据库 2.课程简单介绍 MongoDB是由MongoDB.inc研发的一款NoSQL类型的文档型数据库,MonogoDB名字来源于英文单词humongous,这个单词的意思是巨大无比.暗喻Mong

Zookeeper概述、特点、数据模型

Zookeeper 1.Zookeeper概述 Zookeeper是一个工具,可以实现集群中的分布式协调服务. 所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作. Zookeeper之所以能够实现分布式协调服务,靠的就是它能够保证分布式数据一致性. 所谓的分布式数据一致性,指的就是可以在集群中保证数据传递的一致性. Zookeeper能够提供的分布式协调服务包括:数据发布订阅.负载均衡.命名服务.分布式协调/通知.集群管理.分布式锁.分布式队列等功能 2.Zookee

ZooKeeper概述(转)

ZooKeeper是一个用于分布式应用的开源分布式协调服务.它提供了简单的原语集合,分布式应用可在这些原语之上构建用于同步.配置维护.分组和命名的高层服务.ZooKeeper的设计使得编程容易,并且使用类似于广泛熟知的文件系统目录树结构的数据模型.它运行在Java环境中,但是有Java和C语言绑定. 分布式协调服务是出了名的难得编写正确,很容易出现竞争条件和死锁之类的错误.ZooKeeper的动机是减轻为分布式应用开发协调服务的负担. 1 设计目标 1.1 简单 ZooKeeper让分布式进程可

【转】Struts1.x系列教程(4):标签库概述与安装

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/15/251411.html Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript.HTML等)实现的.这些Struts标签被写在JSP页面中,用于生成客户端代码.进行逻辑判断等工作,使用Struts标签可以尽量

zookeeper 集群安装(单点与分布式成功安装)

参考 http://www.blogjava.net/hello-yun/archive/2012/05/03/377250.html ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务--分布式同步(Distributed Synchronization).命名服务(Naming Service).集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务.ZooKeeper本身可以以Standa

Flask 学习(一)概述及安装

Flask 概述及安装 Flask 简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 官方网址 :http://flask.pocoo.org/ 了解 Flask:首先,Flask 是Python 的一个Web 应用框架:其次,它是“微型”的 . 比起同类现有的web框架(如:Django),Flask 并不包含数据库抽象层,表单验证等.Flask 旨在保持代码简洁且易于扩展(Flask源码十

Zookeeper概述和基本概念

一.Zookeeper背景 随着互联网技术的发展,企业对计算机系统的计算,存储能力要求越来越高,各大IT企业都在追求高并发,海量存储的极致,在这样的背景下,单纯依靠少量高性能单机来完成计算机,云计算的任务已经无法满足需求,企业的IT架构逐渐由集中式往分布式过渡.所谓的分布式是指:把一个计算任务分解成若干个计算单元,并分派到不同的计算机中去执行,最终汇总计算结果的过程. 二.Zookeeper概述 Zookeeper是源代码开放的分布式协调服务,是一个高性能的分布式数据一致性的解决方案,它将那些复

ZooKeeper概述

1.Zookeeper概述 Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务.它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper的角色:  zk可以用来保证数据在zk集群之间的数据的事务性一致. 解释:如果客户端client1改变了server1的数据文件1,那么其它server的数据文件1也同时改变,那么其他客户端也能访问到改变了的数据文件. 2.为什么使用Zookeeper? 大部分