zookeeper学习与实战(一)环境部署
【背景】:最近需要做这样一件事,在一台服务器上通过客户端生成配置文件,然后需要将该配置文件实时的传输到上百台应用服务器,供应用程序读取。同时,该配置文件是不定时更新内容,只要有更新,远程应用服务器应该及时感知文件的变化,并进行同步到本地。
这时,zookeeper就派上用场了。本篇只介绍zookeeper的部署安装使用。对于zookeeper是什么还不清楚的,请参考这里。
一、zookeeper单机部署
1、【环境说明】:window 7 64bit(10.249.9.19)
2、【安装】:
2.1、下载地址:http://apache.fayea.com/zookeeper/
下载的安装包放到c盘根目录(可以放到任意盘),减压到本地。
2.2、配置文件
修改C:\zookeeper-3.4.6\conf下的zoo_sample.cfg,并重命名为zoo.cfg,名称随便取。
内容为:红色部分文件夹需要手工创建
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=C:\\zookeeper-3.4.6\\data
dataLogDir=C:\\zookeeper-3.4.6\\log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
tickTime
Zookeeper使用的基本时间,时间单位为毫秒。它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间
dataDir
保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。
clientPort
监听客户端连接的端口。
安装非常简单,到这里已经安装好了,下面就是把它运行起来:
C:\zookeeper-3.4.\bin>zkServer.cmd
到安装目录的bin目录下,运行zkServer.cmd即可。
2.3、客户端连接测试
上面我们在10.249.9.19上安装了zookeeper服务并已经启动,下面另起一个cmd,作为客户端进行连接:
zkCli.sh -server 10.249.9.19:
到这里就已经连接成功了!表明我们zookeeper server安装正确。下面进行简单的命令行测试:
1)添加数据:
[zk: 10.249.9.19:(CONNECTED) ] create /test1 'helloworld'
Created /test1
2)查看数据:
[zk: 10.249.9.19:(CONNECTED) ] get /test1
'helloworld'
cZxid = 0x25
ctime = Thu Nov :: CST
mZxid = 0x25
mtime = Thu Nov :: CST
pZxid = 0x25
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
3、查看路径
[zk: 10.249.9.19:(CONNECTED) ] ls /
[zk, zookeeper, test1, db]
4、更新数据
[zk: 10.249.9.19:(CONNECTED) ] set /test1 hellowzookeeper
到此为止,我们已经完成了第一步,相当于我们可以把配置文件任意的存在这个zookeeper server上了。
但是,还有两个问题需要解决:
1、如果要传输文件到其他服务器,怎么传输呢?那么远程的那么多应用服务器怎么知道我这个zookeeper上配置文件有过更新呢?怎么同步呢?
回答:这些问题就需要我们利用zookeeper提供的客户端api进行编程了。通过java或者c等客户端语言进行编程来同步文件。具体内容下篇演示。
先来看看下面的整体结构图:
【解释】:
【ZooKeeper Service部分】:表示一组zookeeper server集群,它提供服务,因为它是分布式的,所以部署多台防止单点故障,能够高可用。就相当于mysql数据库的主从复制架构,主库挂了可以切换到从库进行服务。当然如果业务不重要,部署一台也是可以的。(对应于运维人员)
【Client部分】:指我们利用编程语言如java,c,python,通过zookeeper提供的api进行编程,对zookeeper server上的数据进行增删改查数据,可以理解为php连接mysql服务器进行操作一样,php作为客户端。(对应于开发人员)
2、我们上面只部署了单机版本,对于业务比较重要的,如何避免单点故障?
这时就需要部署zookeeper server集群了,zookeeper天生就是分布式的,不用它的分布式集群简直就是暴殄天物。具体我们演示以后补上。
【参考文档】
http://www.cnblogs.com/chengxin1982/p/3997706.html
http://zookeeper.majunwei.com/document/3.4.6/GettingStarted.html
(原理)http://cailin.iteye.com/blog/2014486/
zookeeper学习与实战(一)环境部署的更多相关文章
- Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现
昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...
- zookeeper学习与实战(二)集群部署
上一篇介绍了单机版zookeeper安装,这种情况一般用于开发测试.如果是生产环境建议用分布式集群部署,防止单点故障,增加zookeeper服务的高可用. [环境介绍] 三台机器:192. ...
- zookeeper学习之集群环境搭建
一.安装环境 zookeeper:3.4.6 JDK:1.8 linux:centos6.5 64位 主机: server0:192.168.0.224server1:192.168.0.225se ...
- lua源码学习篇一:环境部署
研究生即将毕业,答辩完成后,这几天有些时间.开始写一些自己的东西,记录自己的学习历程. --前言 本着学习和交流的原则,本文的内容仅供参考,而不是权威版本,如有任何问题,欢迎指出. --声明 跨专业考 ...
- 深度学习Tensorflow生产环境部署(上·环境准备篇)
最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...
- Java学习-032-JavaWeb_001 -- Tomcat环境部署及基本配置
首先到 Tomcat 官网,下载对应的版本,我本机的系统是 WIN7 64BIT 的,因而我选择的是64bit 的zip包,如下图所示:
- Docker容器学习梳理 - 应用程序容器环境部署
关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...
- Zookeeper 源码学习(一)环境搭建
前言 最近准备学习 Zookeeper,想从 Zookeeper 开始逐步深入了解各类中间件,学习分布式计算. 下载源码 执行指令,下载代码: git clone https://github.com ...
- (个人)Zookeeper集群环境部署
一.准备工作 1. 下载zookeeper,下载地址:https://zookeeper.apache.org/releases.html#download 2. 下载CentOS7的镜像,下载地址 ...
随机推荐
- (九)Thymeleaf用法——Themeleaf注释
4. 注释 模板名称:comment.html 4.1 标准 HTML/XML注释 语法:<!-- --> 4.2 解析器级注释块(Parser-level ...
- apk文件反编译
apk文件的反编译,需要的工具apktool(反编译资源文件)和dex2jar-0.0.7.9-SNAPSHOT(反编译源码) 1. 下载相关软件 1)Apktool,下载地址:http://cod ...
- create table #temptable 临时表 和 declare @bianliang table ()表变量
create table #temptable 临时表 和 declare @bianliang table ()表变量 在开发过程中,经常会遇到使用表变量和本地临时表的情况.下面是对二者的一个介绍: ...
- nginx根据目录反向代理到后端服务器
nginx根据目录反向代理到后端不同的服务器 server { listen 80; server_name demo.domain.com; #通过访 ...
- php SSL certificate problem: unable to get local issuer certificate
加上 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); 就可以了 百度语音的demo: <?php header("Content-type ...
- Android Studio 2.0 正式版公布啦 (首次中文翻译)
Android Studio 2.0 公布了,添加了一些新特性: 1. 更加完好的 Instant Run 2. 更快的 Android Emulator 3.GPU Debugger Preview ...
- How to Use HTML5 FUll Screen API(怎样使用HTML5全屏接口)
原文链接:http://www.sitepoint.com/use-html5-full-screen-api/ 假设你不太喜欢变化太快的东西,那么web开发可能不适合你. 我曾在2012年末有写过F ...
- 【Caffe代码解析】Blob
主要功能: Blob 是Caffe作为传输数据的媒介,不管是网络权重參数,还是输入数据,都是转化为Blob数据结构来存储,网络,求解器等都是直接与此结构打交道的. 其直观的能够把它看成一个有4纬的结构 ...
- linux设备驱动的分层设计思想--input子系统及RTC
转自:linux设备驱动的分层设计思想 宋宝华 http://blog.csdn.net/21cnbao/article/details/5615493 1.1 设备驱动核心层和例化 在面向对象的程序 ...
- PHP代码中使用post参数上传大文件
今天连续碰到了两个同事向我反应上传大文件(8M)失败的事情! 都是在PHP代码中通常使用post参数进行上传文件时,当文件的大小大于8M时,上传不能不成功. 首先,我想到了nginx的client_m ...