12 Zookeeper简介 实现,数据发布/订阅,负载均衡,命名服务,分布式协调/通知、集群管理、Master选举、分布式锁、和分布式队列等功能.设计目标

Zookeeper

zookeeper为分布式应用提供高效可靠的分布式协调服务,统一命名,配置管理和分布式锁等分布式基础服务。没有采用Paxos算法,而采用ZAB(zookeeper Atomic Broadcast)的一致性协议。

1、zookeeper是什么?

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

Zookeeper分布式一致性特性

  • 顺序一致性:客户端事务请求,会按照顺序严格执行。
  • 原子性:只有成功失败,没有部分成功,部分失败的情况。
  • 单一视图:客户端连接哪个服务器看到的数据模型都是一样的。
  • 可靠性:服务端的状态变更被保留下来
  • 实时性:一定时间段内,客户端最终能够从服务器上读取到最新的数据。

2、Zookeeper的设计目标

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

  • 简单的数据模型
  • Zookeeper将全量数据存储在内存中,以此来实现提高服务器吞吐、减少延迟的目的。
  • 可以构建集群
  • 顺序访问
  • 高性能:3台机器100%读请求压测结果是12-13W的QPS,

3、Zookeeper的基础概念

集群角色

传统的Master/Slave模式(主备模式),处理写操作的机器成为Master机器,异步复制方式获取最新数据,提供读服务的机器成为Slave机器。

Zookeeper引入了Leader、Follower、Observer三种角色
集群通过选举程序选举一台机器为Leader服务器,为客户端提供读和写的服务,Follower和Observer都能提供读服务,但Observer不参与选举Leader的过程,也不参与写入操作的“过半成功”策略

会话(Session)

  • zk中,客户端连接是指客户端和服务器之间的一个TCP长连接。
  • zk服务器端口默认为2181;
  • 客户端启动时,会与服务器建立一个TCP连接,通过该连接,客户端通过心跳检测与服务器保持有效的会话,也能向zk服务器发送请求并接受响应,还能通过该连接接受服务器的Watch事件通知
  • Session的sessionTimeout值用来设置会话超时时间。只要不超过该时间,客户端无论什么原因断开重连,该会话仍然有效。

数据节点(Znode)

  • 分布式中的节点通常指集群中的每一台服务器。
  • zk中,集群中的机器成为机器节点;数据模型中的数据单元,成为数据节点–Znode。
  • zk的所有数据都存储在内存中。
  • Znode上保存数据内容和节点属性信息。

版本

zk会为每个Znode维护一个叫作Stat的数据结构,记录三个数据版本:
version:当前Znode的版本。
cversion:当前Znode子节点的版本。
aversion:当前Znode的ACL版本。

Watcher 事件监听器

zk允许用户在指定节点上注册一些Watcher,且在一些特定事件触发的时候,zk服务器会将事件通知到对应的客户端上。
该机制是zk实现分布式协调服务的重要特性。

ACL 权限控制

五种权限:

  • CREATE:创建节点的权限。
  • READ:获取节点数据和子节点列表的权限。
  • WRITE:更新节点数据的权限。
  • DELETE:删除子节点的权限。
  • ADMIN:设置节点ACL的权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

EngineerForSoul

你的鼓励是我孜孜不倦的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值