分布式系统概念与Zookeeper简介

zookeeper简介

官方文档对zookeeper的介绍:
Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

ApacheZooKeeper是一项开发和维护开源服务器的工作,它能够提供高可靠的分布式协调服务。
zookeeper主要有以下几个作用:

1)中间件,提供协调服务。

2)作用于分布式系统,发挥其优势,可以为大数据服务。

3)支持java,提供java和c语言的客户端api。

特点

1)一致性

数据一致性,按照顺序分批入库。

2)原子性

事务要么成功要么失败。

3)单一视图

客户端连接集群中的任一zk结点,数据都是一致的。

4)可靠性
每次对zk的操作状态都会保存在服务端。

5)实时性
客户端可以读取到zk服务端的最新数据 。

目录说明

Bin:主要的一些执行命令。

Conf:存放配置文件,需要修改zk.cfg。

Contrib:附加的一些功能。

Dist-maven:Mvn编译后的目录。

Docs:文档。

Lib:需要依赖的jar包。

Recipes:案例demo代码。

src:源文件。

分布式概念

分布式系统主要有以下几个特征:

1)很多台计算机组成一个整体,一个整体一致对外并且处理同一请求。

2)内部的每台计算机都可以相互通信(rest/rpc)。

3)客户端到服务端的一次请求到相应结束会历经多台计算机。

优点

1)增大系统容量

2)加强系统可用

3)提高模块重用度

4)提高运行速度

5)系统可扩展性高

zk数据模型介绍

Zookeeper是一个树形结构,类似于前端开发中的tree.js组件
在这里插入图片描述

1)zk的数据模型也可以理解为linux/unix的文件目录:/usr/local/…

2)每一个结点都称之为znode,它可以有子结点,也可以有数据

3)每个结点分为临时结点永久结点,临时结点在客户端断开后消失

4)每个zk结点都有各自的版本号,可以通过命令行来显示结点信息

5)每当结点数据发生变化,那么该结点的版本号会累加(乐观锁)

6)删除/修改过时结点,版本号不匹配则会报错

7)结点可以设置权限acl,可以通过权限来限制用户的访问

Zookeeper数据模型基本操作

1561814758839

zk的作用体现

1)master结点选举,主结点挂了以后,从结点就会接手工作,并且保证这个结点是唯一的,这也是所谓首脑模式,从而保证我们的集群是高可用的

2)统一配置文件管理,只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算中用的特别多

3)发布与订阅,类似消息队列MQ,dubbo发布者把数据存在znode上,订阅者会读取这个数据

4)提供分布式锁,分布式环境中不同进程之间争夺资源,类似于多线程中的锁

5)集群管理,集群中保证数据的强一致性(一致性可分为强一致性,顺序一致性,弱一致性)

zk特性-session的基本原理

zookeeper中session意味着一个物理连接,客户端连接服务器成功之后,会发送一个连接型请求,此时就会有session 产生

1)客户端与服务端之间的连接存在会话

2)每个会话都可以设置一个超时时间

3)心跳结束,session则过期

4)Session过期,则临时结点znode会被抛弃

5)心跳机制:客户端向服务端的ping包请求

常用的zookeeper命令行

ls /:查看目录
在这里插入图片描述
ls2 /:显示数据的目录和状态信息
在这里插入图片描述

cZxid Zookeeper为结点分配的Id
cTime 结点创建时间
mZxid 修改后的id
mtime 修改时间
pZxid 子结点id
cversion 子结点的version //更新一次版本加一
dataVersion 当前结点数据的版本号
aclVersion 权限Version
dataLength 数据长度
numChildren 子结点个数

stat /:查询数据的状态信息
在这里插入图片描述
get /:取出结点数据
在这里插入图片描述
create /xxx content:创造xxx结点,内容为content
在这里插入图片描述
create -e /xxx content:创造xxx临时结点
在这里插入图片描述在这里插入图片描述
可以发现ephemeralOwner发生了变化,不再是0x0,0x0为永久结点,上图为临时结点。临时结点会话断开后经过心跳机制的时间周期就会被消除:在这里插入图片描述
create -s xxx content:创建顺序结点
在这里插入图片描述
节点名后面的数字会递增

set /xxx content:修改结点内容
在这里插入图片描述
set /xxx content number:使用乐观锁进行修改
在这里插入图片描述
如果不使用最新的datafVersion会出错

delete /xxx:删除结点
在这里插入图片描述
delete /xxx number:删除对应版本号的结点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值