1. ZooKeeper简介
1. ZooKeeper是什么
ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件
1.1 ZooKeeper设计目标
简单的数据结构:共享的树形结构,类似文件系统,存储于内存;
可以构建集群:避免单点故障,3-5台机器就可以组成集群,超过半数正常工作就能对外提供服务;
顺序访问:对于每个读请求,zk会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务;
高性能:基于内存操作,服务于非事务请求,适用于读操作为主的业务场景。3台zk集群能达到13w QPS;
1.2 ZooKeeper的使用场景
数据发布订阅
负载均衡
命名服务
Master选举
集群管理
配置管理
分布式队列
分布式锁
2. ZooKeeper的安装部署
ZooKeeper安装部署方式分为三种
单机模式:在一台机器上部署
集群模式:在多台机器上部署,通过zoo.conf配置不同机器ZooKeeper之间的关联关系
伪集群模式:在一台机器上部署,复制多个ZooKeeper,在zoo.conf中配置这几个拷贝之间的关系
2.1 windows单机安装
首先要安装jdk
安装ZooKeeper,在官网http://zookeeper.apache.org/下载zookeeper,解压即可
解压后目录
zoo.cfg中的dataDir配置Zookeeper工作中相关的data及log目录
2.2 集群配置(Linux环境)
安装jdk,配置环境变量【vi /etc/profile】【关闭防火墙】
安装ZooKeeper
下载ZooKeeper安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
解压
tar -zxvf zookeeper-3.4.10.tar.gz
重命名
mv zookeeper-3.4.10 zookeeper
修改配置文件【复制zoo_sample.cfg到zoo.cfg】
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
------------zoo.cfg-------------
(1)dataDir=/usr/local/zookeeper/data(注意同时在zookeeper创建data目录)
创建服务器标识:myid
服务器标识配置:
创建文件夹: mkdir data
创建文件myid并填写内容
vi myid (内容为服务器标识【id】)
(2)最后面添加集群服务器配置
server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识
id:myid中的内容,服务器标识
host:服务器ip地址
port:第一个端口,用于从follower连接到leader机器的端口
port:第二个端口,用来进行leader选举时所用的端口
e.g
server.0=192.168.212.154:2888:3888
server.1=192.168.212.156:2888:3888
server.2=192.168.212.157:2888:3888同样的在其它服务器上配置剩余节点 可以远程复制
scp -r /soft root@zk2:/
scp -r /soft root@zk3:/最后注意修改不同节点的myid文件内容
启动集群所有节点ZooKeeper
路径: /usr/local/zookeeper/bin
执行: zkServer.sh start
(注意这里每台机器的ZooKeeper都要进行启动)查看集群节点状态
zkServer.sh status【在三个节点上检验zk的node,一个leader和俩个follower】
伪集群模式其实就是在一台机器上通过不同端口号来模仿集群模式部署的
2.3 目录结构
目录 | bin | conf | contrib | dist-maven | docs | lib | recipes | src |
---|---|---|---|---|---|---|---|---|
作用 | 存放系统脚本 | 存放配置文件 | zk附加功能支持 | maven仓库文件 | zk文档 | 依赖的第三方库 | 经典场景样例代码 | zk源码 |
其中最重要的就是bin和conf两个目录
bin目录c
zkServer为服务器,启动后默认端口为2181
zkCli为命令行客户端
conf目录
conf目录为配置文件存放的目录,zoo.cfg为核心的配置文件,这里面的配置有很多,这配置是运维的工作,没必要全部掌握,挑选几个讲解:
clientPort: 参数无默认值,必须配置,用于配置当前服务器对外的服务端口,客户端必须使用这端口才能进行连接
dataDir: 用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)
dataLogDir: 用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争
snapCount: 新安装zk这文件夹里面是没有文件的,可以通过snapCount参数配置产生快照的时机
以下配置集群中才会使用
tickTime: 心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间
initLimit: 多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值
syncLimit: 多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃
1. ZooKeeper简介的更多相关文章
- ZooKeeper简介
本文中,我们将对ZooKeeper进行介绍.简单地说,ZooKeeper是一个用来在构成应用的各个子服务之间进行协调的一个服务. 由于其本身并没有特别复杂的机制,因此我们将会把更多的笔墨集中在如何对Z ...
- Zookeeper简介与安装
Zookeeper:A Distributed Coordination Service for Distributed Applications. 一.Zookeeper简介 众所周知,协同服务是分 ...
- Zookeeper简介与集群搭建
Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...
- Zookeeper简介与集群搭建【转】
Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...
- Zookeeper简介及单机、集群模式搭建
1.zookeeper简介 一个开源的分布式的,为分布式应用提供协调服务的apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...
- Zookeeper简介及使用
一.Zookeeper简介 1.zookeeper简介 动物管理员 Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调. 2.什么是ZooKeeper? ZooKee ...
- ZooKeeper学习之路(一)—— ZooKeeper简介及核心概念
一.Zookeeper简介 Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护.Zookeeper可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知. ...
- ZooKeeper系列(一)—— ZooKeeper 简介及核心概念
一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调 ...
- Zookeeper简介及安装(一)
1 Zookeeper入门1.1 概述Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景提供的服务包括:统一命名服务 ...
- 第1章 分布式系统概念与ZooKeeper简介
ZooKeeper分布式专题与Dubbo微服务入门 第1章 分布式系统概念与ZooKeeper简介 1-1 zookeeper简介 1-2 什么是分布式系统 略 1-3 分布式系统的瓶颈以及zk的相关 ...
随机推荐
- [USACO07DEC]Sightseeing Cows(负环,0/1分数规划)
[USACO07DEC]Sightseeing Cows Description Farmer John has decided to reward his cows for their hard w ...
- 10 | MySQL为什么有时候会选错索引? 学习记录
<MySQL实战45讲>10 | MySQL为什么有时候会选错索引? 学习记录http://naotu.baidu.com/file/e7c521276650e80fe24584bc9a6 ...
- linux nginx管理
1.添加 Nginx 服务 vim /lib/systemd/system/nginx.service 添加如下内容: [Unit]Description=nginxAfter=network.tar ...
- 字符串(二):string
字符串使用方法整理 系列: 字符串(一):char 数组 字符串(二):string string 是 C++ STL 的一个字符串类型,原型是 vector<char> 并对字符串处理做 ...
- 基于canvas实现的高性能、跨平台的股票图表库--clchart
什么是 ClChart? ClChart是一个基于canvas创建的简单.高性能和跨平台的股票数据可视化开源项目.支持PC.webApp以及React Native和Weex等平台.在React Na ...
- 网站名,服务器名,url,ip,域名的区别和联系。
平时我们可能容易混淆这几个名词含义,今天我打算捋一捋这几个概念. 我们知道,两台计算机要想互相通信,就像古代写信一样,地址必须要唯一的,不然就会出错.计算机之间通信也是一样的,要保证计算机的地址的唯一 ...
- vue2.0 之 douban (七)APP 打包
在打包之前需要修改一个地方,那就是config->index.js文件,修改assetsPublicPath: '/'为assetsPublicPath: './',截图如下 上面文件改好后,开 ...
- 129、TensorFlow计算图的可视化
import tensorflow as tf # Build your graph x = tf.constant([[37.0, -23.0], [1.0, 4.0]], name="i ...
- 使用sqlalchemy创建单条数据-分层管理代码
这里主要是如何把整个流程的代码分层管理,方便维护 不拆分层次,整个流程顺下来的代码看这里:sqlAlchemy基本使用 项目结构: model.py用来描述表结构: from sqlalchemy i ...
- ArrayList 源码解读
ArrayList 源码解读 基于JDk 1.7.0_80 public class ArrayList<E> extends AbstractList<E> impl ...