Zookeeper基础

来源:互联网 发布:js 导出文件选择路径 编辑:程序博客网 时间:2024/05/19 05:05
Zookeeper


1、Zookeeper是一个开放源代码的分布式协调服务是雅虎创建,是Google Chubby的开源实现。
设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。


2、Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于Zookeeper实现数据发布/订阅、负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁和分布式队列等功能。


3、Zookeeper可以保证如下分布式一致性特性:

顺序一致性:从同一客户端发起的请求,最终将会严格按照其发起顺序被应用到Zookeeper中。
原子性:所有的事务请求结果在整个集群中所有机器上的应用情况是一致的。不会出现集群中部分机器应用了该事务,而另一部分没用应用的情况。
单一视图:无论客户端连接那个Zookeeper服务器,看到的服务器数据模型是一致的。
可靠性:一旦服务器成功地应用了一个事务,并完成对客户端的响应,那么该事务引起的服务端状态变更将会一直保留下来,除非有另一个事务对其进行变更。
实时性:Zookeeper仅仅保证在一定时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。


4、Zookeeper的设计目标:


Zookeeper致力于提供一个高性能、高可用,且具有严格的顺序访问控制能力的分布式协调服务。


目标一:简单的数据模型
Zookeeper使得分布式程序能够通过一个共享的、树型结构的名字空间来进行相互协调。


目标二:可以构建集群
一个Zookeeper集群通常由一组机器组成。
组成Zookeeper集群的每台机器都会在内存中维护当前的服务器状态,并且每一台机器之间都互相保持通信。只要集群中超过一半机器正常工作,那么整个集群就能够正常对外服务。


目标三:顺序访问
对于来自客户端的每个更新请求,Zookeeper都会分配一个全局的递增编号,来反映所有事务操作的顺序,应用程序可以使用Zookeeper的这个特性来实现更高层次的同步原语。


目标四:高性能
Zookeeper将全量数据存储在内存中,并直接服务于客户端的所有的非事务请求,因此Zookeeper尤其适用以读操作为主的应用场景。


5、如何使用(搭建集群服务器):




1、准备java运行环境,下载Zookeeper安装包。


2、初次使用Zookeeper需要把zoo_sample.cfg文件重新命名为zoo.cfg,并按照以下配置
tickTime=2000
initLimit=10
syncLimit=8
maxClientCnxns=300
dataDir=/var/lib/Zookeeper/data
dataLogDir=/var/lib/Zookeeper/logs
clientPort=2181
server.1=11.114.26.38:2181:3181//集群中的服务器1
server.2=11.114.26.39:2181:3181//集群中的服务器2
server.3= 11.114.26.40:2181:3181//集群中的服务器3


server.id=host:port:port//代表一个机器


3、在dataDir目录相爱创建myid文件,该文件只有一行数据,并且是一个数字,对应于每一台机器的server.id数字。
例如在server.1=11.114.26.38:2181:3181机器上的myid文件就是1。

4、启动:
启动Zookeeper
sh zkServer.sh start
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

5、验证:
ps -ef | grep Zookeeper
有相应的进程信息,表示运行成功。

6、Zookeeper的单机模式(Zookeeper支持单机部署,启动一台Zookeeper机器就可以提供服务)


单机模式的部署与集群模式的部署步骤基本一致,只有zoo.cfg 文件配置有差异。
tickTime=2000
initLimit=10
syncLimit=8
maxClientCnxns=300
dataDir=/var/lib/Zookeeper/data
dataLogDir=/var/lib/Zookeeper/logs
clientPort=2181
server.1=11.114.26.38:2181:3181//单机模式只有一台


集群模式与单机模式输出的服务器验证信息基本一致,只有Mode属性不一样,集群模式下Mode显示leader或者follower。单机模式显示standalone。



7、伪集群模式;


集群所有的机器都在一台机器上,但还是以集群的特性来对外提供服务。

tickTime=2000
initLimit=10
syncLimit=8
maxClientCnxns=300
dataDir=/var/lib/Zookeeper/data
dataLogDir=/var/lib/Zookeeper/logs
clientPort=2181
server.1=11.114.26.38:2181:3181//集群中的服务器1
server.2=11.114.26.38:2182:3182//集群中的服务器2
server.3= 11.114.26.38:2183:3183//集群中的服务器3



配置信息如上:每一行机器列表都是同一个Ip地址,但是后面的端口配置已经不一样了。

8、启动与停止Zookeeper

/zookeeper/bin/目录下有这几个脚本
.sh和.cmd,分别适用UNIX系统和Windows系统。


启动Zookeeper
sh zkServer.sh start
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

停止Zookeeper
sh zkServer.sh stop


每天努力一点,每天都在进步。
原创粉丝点击