zookeeper

ZooKeeper是一种分布式协调服务。

 

一、下载&安装&配置&启动:

1、下载:

 

https://www.apache.org/dyn/closer.cgi/zookeeper/  # 点击进入到镜像中(Linux)

http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/  # 下载zookeeper-3.4.14

 

2、安装:

需要依赖Java环境

tar -zxf zookeeper-3.4.14.tar.gz

mv zookeeper-3.4.14 zookeeper-3.4.14-first   # 搭建集群形式(还有:zookeeper-3.4.14-second和zookeeper-3.4.14-thrid)

 

3、配置:

cd zookeeper-3.4.14-first

mkdir data

cd data

vi myid:# 这里数据与zoo.cfg中的配置的server.x=这的x保持一致

0

cd conf

vi zoo.cfg # 下面主要是zoo.cfg的配置内容

tickTime = 2000
dataDir = /home/work/huangshouxi/elk/install/zookeeper-3.4.14-first/data
clientPort = 12181
initLimit = 5
syncLimit = 2

server.0=127.0.0.1:11001:11101
server.1=127.0.0.1:11002:11102
server.2=127.0.0.1:11003:11103

后面zookeeper-3.4.14-second和zookeeper-3.4.14-thrid也是同样的修改。

上面的端口说明:

clientPort = 12181   zookeeper提供给客户端的port

server.0=127.0.0.1:11001:11101   “前面的11001端口是zookeeper集群中通讯使用的(Leader需要监听)”、“后面的11101端口是选举Leader使用的port”

 

4、启动&停止:

cd zookeeper-3.4.14-first/bin

./zkServer.sh start    # 启动

./zkServer.sh status   # 检查状态

./zkCli.sh -server 127:0.0.1:12181   # 打开,后面的操作需要在学

./zkServer.sh stop   # 停止

 

二、运行

1、创建(create)

create [-s] [-e] path data acl

其中,-s或-e分别指定节点特性:顺序或临时节点。默认情况下,即不添加-s、-e参数的,创建的是持久节点。path为节点,data为节点的数据内容,acl表示权限控制。

create /zk-book 123
Created /zk-book

2、读取(ls和get)

1)ls path [watch]

ls命令,可以列出zookeeper指定节点下所有的子节点。

 ls /
[zk-book, zookeeper]

上面返回的“zookeeper”节点是默认的

2)get path [watch]

get命令,可以获取zookeeper指定节点的数据内容和属性信息。

 get /zk-book
123
cZxid = 0x50000000b
ctime = Tue May 21 17:19:01 CST 2019
mZxid = 0x50000000b
mtime = Tue May 21 17:19:01 CST 2019
pZxid = 0x50000000b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

上面的“123”是节点数据内容,cZxid是全局唯一的事物ID

3、更新(set)

set path data [version]

data是要更新的内容,注意:set命令后面还有个version,在Zookeeper中,节点的数据是有版本的概念,这个参数用于指定本次更新操作是基于Znode的拿一个数据版本进行的。

 set /zk-book 456
cZxid = 0x50000000b
ctime = Tue May 21 17:19:01 CST 2019
mZxid = 0x50000000c
mtime = Tue May 21 17:32:01 CST 2019
pZxid = 0x50000000b
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

上面命令执行完,data的内容发生变化,dataVersion的值从0变为1,这是因为刚才的更新操作导致节点的数据版本也发生了变化。

4、删除(delete)

delete path [version]

 delete /zk-book

注意:不能删除某个有子节点的节点,否则报错:Node not empty: /zk-book

 

三、zookeeper的额外知识

  • 分布式架构

1、什么是集中式?

     集中式系统是指一台或者多台主计算机组成中心节点,数据集中存储于这个中心节点,并且整个系统的所有单元都集中部署在这个中心节点上,系统的所有功能均由其集中处理。

       在集中式系统中,每个终端或者客户端机器仅仅负责数据的录入和输出,而数据的存储和控制处理完全交由主机完成。

     集中式系统最大的特点是部署结构简单。但是集中式系统基于底层性能卓越的大型主机,不需要考虑进行多节点的部署,也就不用考虑多节点之间的分布式协作问题。

2、什么是分布式?

     分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

     分布性、对等性、并发性、缺乏全局时钟、故障总是会发生

3、分布式环境会出现的问题?

     通信异常:网络本身不可靠、延时

     网络分区:网络问题导致某些节点不能正常工作

     三态:成功、失败、超时(集中式没有超时)

     节点故障:某些节点服务器宕机

4、ACID

     原子性:Atomicity

           要么全部成功执行、要么全部不执行

     一致性:Consistency

           事物在执行过程中不能破坏数据库数据的完整性和一致性,从一个一致性转变到另一个一致性状态

     隔离性:Isolation

           并发的事物相互隔离的,一个事物的执行不能被其他事物干扰。

           4种隔离级别:未授权读取、授权读取、可重复读取、串行化

     持久性:Durability

           一个事务一旦提交,它对数据库中对应的数据的状态变更就是永久性的。

5、CAP定理

     一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这3个基本需求,最多只能同时满足其中的两项。

6、BASE理论

     BASE是基本可用(Basically Avilable)、软状态(Soft state)、最终一致性(Eventually consistent)组成。BASE是对CAP中的一致性个可用性权衡的结果,其核心思想是即使无法做到强一致性,但是每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

  • 一致性协议

1、2PC与3PC

     2PC(二阶段提交):提交事务请求、执行事务请求

     3PC(三阶段提交):CanCommit、PreCommit、DoCommit

2、Paxos?

Paxos的工程实践

  1. Chubby
  2. Hypertable
  • Zookeeper
  1. Zookeeper的设计目标
  1. 简单的数据模型:可以通过一个共享的、树型结构的名字空间进行相互协调(内部就像一个文件系统)
  2. 可以构建集群:一个Zookeeper集群通常由一组机器组成,一般3~5台机器就可以组成一个可用的Zookeeper集群
  3. 顺序访问:对每一个来自客户端的请求,Zookeeper都会分配一个全局唯一的递增编号,这个编号反应所有事务操作的先后顺序
  4. 高性能:Zookeeper将全量的数据存储在内存中。
  •      ZAB?

ZAB(Zookeeper Atomic Broadcast)原子消息广播协议,一钟支持崩溃的原子广播协议。(所有事务请求必须由一个全局唯一的服务器来协调处理,这样的服务器被称为Leader服务器,而余下的其他服务器则成为Follower服务器。Leader服务器负责将一个客户端事务请求转换成一个事物proposal(提议),并将该proposal分发给集群真能干所有的Follower服务器。之后Leader服务器需要等待所有Follower服务器的反馈,一旦超过半数的Follower服务器进行了正确的反馈后,那么Leader就会再次向所有的Follower服务器分发Commit消息,要求其将前一个proposal进行提交。)两个过程:消息广播、崩溃恢复

 

  • 使用Zookeeper

1、部署&使用:https://mp.csdn.net/postedit/90270638

 

  • Zookeeper的典型应用场景
  1. 数据发布/订阅
  2. 负载均衡
  3. 命名服务
  4. 分布式协调/通知
  5. 集群管理
  6. Master选举
  7. 分布式锁
  8. 分布式队列

 

  • Zookeeper计数内幕
  1. 数据模型

树:在Zookeeper中,每一个数据节点多被称为一个ZNode,所有的ZNode按层次化结构进行组织,形成一颗树。Znode的节点路径标志方式和Unix文件系统路径非常相似,都是由一系列使用斜杠(/)进行分割的路径表示,开发人员可以向这个节点中写入数据,也可以在节点下创建子节点。

事务ID:狭义上的事物通常指的是数据事务,一般包含一系列对数据库有序的读写操作,这些数据库事务具有的所谓的ACID特性。在Zookeeper中,事务是指能够改变Zookeeper服务器状态的操作,我们也称为事务操作或更新操作,一般包含数据节点创建与删除、数据节点内容更新和客户端会话创建与失效等操作。ZXID表示的是一个全局唯一的事务ID。

 

  1. 节点特性

节点类型:持久节点、持久顺序节点、临时节点、临时顺序节点

 

  1. 版本

保证分布式数据原子性操作

 

  1. Watcher

数据变更的通知(客户端注册Watcher、服务端处理Watcher、客户端回调Watcher)

 

  1. ACL

保障数据的安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼王呵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值