欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

ZooKeeper笔记,笔记怎么做

来源: javaer 分享于  点击 30581 次 点评:141

ZooKeeper笔记,笔记怎么做


简介:

Zookeeper是一个高可用的分布式管理与协调框架,基于Paxos算法(原子消息广播协议),能够很好地保证分布式环境中数据的一致性

顺序一致性:从客户端发起的事务请求,最终会严格地按照其发起的顺序被应用到Zookeeper中

原子性:所有事务请求的结果在集群环境中所有机器上的应用情况应该是一致的,也就是说要么集群中所有的机器都应用了这一事务,要么所有机器都没有应用这一事务.

单一视图:无论客户端连接的是哪一个Zookeeper服务器,其获取的服务端数据都是一致的

可靠性:一旦服务器成功地应用了某一事务,并完成了对客户端的响应,那么该事务引起的服务端状态将被一致地保留下来,除非有另一个事务对其进行更改.

 

树形结构!

Zookeeper服务分三种角色:leader,Follower,Observer,其中Follower与Observer又统称为Learner

Leader:负责客户端的writer请求类型

Follower:负责客户端的reader类型请求和leader选举等

Observer:特殊的Follower,可以接受客户端的reader请求,但不参与选举,不接受任何的同步写入请求,只负责与leader同步数据

典型应用场景:

配置管理

集群管理

发布订阅

数据库切换

分布式日志收集

分布式锁与队列管理

Zookeeper的安装:

启动zookeeper:

路径:/usr/local/zookeeper/bin

执行:zkServer.sh start (注意这里3台机器都要进行启动)

状态:zkServer.sh status(在三个节点上检验zk的mode,一个leader和俩个follower)

操作zookeeper (shell)

zkCli.sh 进入zookeeper客户端:

根据提示命令进行操作: 

查找:ls /   ls /zookeeper

创建并赋值:create /ym 1111

获取:get /ym 

设值:set /ym 2222

可以看到zookeeper集群的数据一致性

创建节点有俩种类型:短暂(ephemeral):仅当前连接有效,连接断开,则失效被删除 

          持久(persistent):永久有效,除非被删除

zoo.cfg详解

        tickTime: 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。

        dataDir: 存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

        clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

        initLimit: 这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

        syncLimit: 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒

        server.A = B:C:D : 

         A表示这个是第几号服务器,

         B 是这个服务器的 ip 地址;

         C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

         D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader

Stat详解:

cZxid  数据节点创建时的事务ID
ctime  数据节点创建时的时间
mZxid  数据节点最后一次更新时的事务ID
mtime  数据节点最后一次更新时的时间
pZxid  数据节点的子节点列表最后一次被修改(是子节点列表变更,而不是子节点内容变更)时的事务ID
cversion  子节点的版本号
dataVersion  数据节点的版本号
aclVersion  数据节点的ACL版本号 
ephemeralOwner   如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为0
dataLength  数据内容的长度
numChildren  数据节点当前的子节点个数

 

 

 

 

 

 

 

 

 

 

 

 

Zooleeper原生API:

ZkClient API:

ZkClient对于Zookeeper原生API进行了封装

主要封装:

Curator API

Curator是Netflix公司开源的一个Zookeeper客户端,后捐献给Apache,Curator框架在zookeeper原生API接口上进行了包装,解决了很多ZooKeeper客户端非常底层的细节开发。提供ZooKeeper各种应用场景( 比如:分布式锁服务、集群领导选举、共享计数器、缓存机制、分布式队列等)的抽象封装,实现了Fluent风格(链式)的API接口

特性:

 

 

 

相关文章

    暂无相关文章
相关栏目:

用户点评