zookeeper基本概念

一 定义
zookeeper是一个高性能、分布式的、开源分布应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名字空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑着java上,提供java和C的客户端API。

二 什么是分布式
1 多台计算机构成
2 计算机之间通过网络进行通信
3 彼此进行交互
4 共同目标

三 分布式系统协调
协调:多个节点一起完成的一个动作
举例:
1 集群成员管理
2 锁
3 选主
4 同步
5 发布/订阅

四 数据模型
1 分层结构
2 树形结构中的每个节点叫Znode
3 每个Znode都有数据(byte[]类型),也可以有子节点
4 节点路径
    斜线分割:/Zoo/Duck
    没有相对路径
5 通过数据结构stat来存储数据结构的变化、ACL的变化和时间戳
6 数据发生变化时,版本号会递增
7 可以对Znode中的数据进行读写操作

五 典型应用场景
1 数据发布/订阅
数据发布/订阅即所谓的配置中心:发布者将数据发布到zk的一个或者一系列节点上,订阅者进行数据订阅,当数据有变化时,可以及时得到数据的变化通知。
2 负载均衡
本质是利用zookeeper的配置管理功能,涉及的步骤如下:
服务提供者把自己的域名及IP端口映射注册到zk中。
服务消费者通过域名从zk中获取对应的IP及端口,这个IP及端口有多个,只获取其中一个。
当服务提供者宕机时,对应的域名与IP的对应就会减少一个映射。

3 命名服务
在分布式系统中,命名服务也是很重要的,通过zk也可以实现类似于J2EE中的JNDI的效果分布式环境下,命名服务更多是资源定位,并不是真正的实体资源,其本质也是用到zk的集中配置管理和查找。

4 分布式协调/通知
通过watch和通知实现
分布式锁
分布式事务

5 集群管理
当前集群中的机器数量
集群中机器的运行状态
集群中节点的上下线操作
集群节点的统一配置

6 Master选举
临时节点
顺序节点

7 分布式锁
排他锁
共享锁

8 分布式队列
FIFO

六 集群角色
Leader:为客户端提供读操作和写服务。
Follower:提供读服务,所有的写服务都需要转交给Leader角色,参与选举。
Observer:提供读服务,不参与选举过程,一般是为了增强zk集群的读请求并发能力。

七 会话
1 zk客户端与zk的服务端之间的连接
2 通过心跳检测保持客户端连接存活
3 接受来自服务端的watch事件通知
4 可以设置超时时间

八 数据节点(Znode)
1 不是机器的意思。
2 zk树形结构中的数据节点,用于存储数据。
3 持久节点:一旦创建,除非主动调用删除操作,否则一致存储在zk上。
4 临时节点:与客户端会话绑定,一旦客户端会话失效,这个客户端创建的所有临时节点都会被移除。
5 顺序节点:创建节点时,如果设置属性为SEQUENTIAL,则会自动在节点后追加一个整型数字,

九 版本
version:当前znode的版本
cverson:当前znode的子节点版本
aversion:当前znode的ACL(访问控制)版本

十 Watcher
作用于znode节点上
多种事件通知:数据更新,子节点状态

十一 单机模式
在开发测试环境下,没有较多的物理资源,因此采用单机模式;当然,在单台物理机下面也可以部署集群模式,但是这会增大单台物理机的资源消耗;所以,在开发环境我们一般使用单机模式。
单机模式不可以用于生产环境,因为无论从系统可靠性还是读写性能都不能满足生产的需求。
zk是基于java语言开发,因此单机模式的资源需求跟普通java程序差不多,1个核的CPU核1G内存就足够。

十二 参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值