zookeeper知识点总结

Zookeeper简介

Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式 协调 服务 service
包含一个简单的原语集,分布式应用程序可以基于它实现:
攘其外状态下
在这里插入图片描述

  • (1:)Zookeeper: - - 个领导者(Leader) ,多个跟随者(Follower) 组成的集群。
  • (2:)集群中只要有半数以上节点存活,Zookeeper集 群就能正常服务。
  • (3:)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个 Server,数据都是一致的
  • (4:)可靠性:如果消息被其中一台服务器接受,那么将被所有服务器接收
    更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。
  • (5:)数据更新原子性,一次数据更新要 么成功,要么失败。不存在中间状态
  • (6:)实时性,保证客户端再一定事件间隔范围内获取服务器的更新信息。

  • 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)

  • 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器

-ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

-Keepalived监控节点不好管理

-Keepalive 采用优先级监控

-没有协同工作

-功能单一

-Keepalive可扩展性差

-Hadoop,使用Zookeeper的事件处理确保整个集群只有一个NameNode,存储配置信息等.

-HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,
察觉HRegionServer联机和宕机,存储访问控制列表等.

Zookeeper特点

在这里插入图片描述

提供集群模式的服务

原子性

  • 准确的反馈成功或失败

一致性

  • 每个server都有统一的数据视图

可用性

  • 节点故障不影响使用
  • 网络分区/脑裂:过半通过
  • 3台机器 挂一台 2>3/2
  • 4台机器 挂2台 2!>4/2

顺序性

  • List item
  • 队列FIFO

主从模型

  • 一写多读

## ****
角色模型

  • 集群状态(可用/不可用)
  • 主从分工

攘其外:

  • 统一视图
    -会话session
    -数据模型Znode
    —目录结构
    —节点类型
  • 事件监听Watcher

原理:

  • 原子消息广播协议ZAB
  • paxos
    journalnode
    sentinel
    zookeeper  ZAB
  • zxid ,myid:
  • ZXID:epoch+ID

广播模式原理
恢复模式原理:无主模型:zab: zxid ,myid

应用场景

  • 统一命名
  • 配置管理
  • 集群管理

角色模型

集群状态

  • 选举模式 安其内
  • 广播模式 壤其外

Server状态

  • LOOKING:当前Server不知道leader是谁,正在搜寻
  • LEADING:当前Server即为选举出来的leader
  • FOLLOWING:leader已经选举出来,当前Server与之同步

主从分工

  • 领导者(leader)
  • 负责进行投票的发起和决议,更新系统状态
  • 学习者(learner)
  • 包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票
  • Observer
  • 可以接受客户端连接,将写请求转发给 leader,但observer不参加投票过程,只同步leader
    的状态,observer的目的是为了扩展系统,提高读取 速度

客户端(client)

  • 请求发起方

会话session

  • 客户端与集群节点建立TCP连接后获得一个session 如果连接的Server出现问题,在没有超过Timeout时间时,可以连接其他节点
    同一session期内的特性不变

Session是由谁来创建的?

  • Leader:产生一个唯一的session,放到消息队列,让所有server知道 (过半)

事件监听Watcher

Watcher 在 ZooKeeper 是一个核心功能,Watcher 可以监控目录节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录节点上的Watcher,从而每个客户端都很快知道它所
关注的目录节点的状态发生变化,而做出相应的反应 可以设置观察的操作:exists,getChildren,getData
可以触发观察的操作:create,delete,setData

回调client方法
业务核心代码在哪里?

  • client
    在这里插入图片描述

模式:

  • 恢复模式
    —无主,无服务
    —选举leader
  • 广播模式
  • —主从模式
    —leader维护事物的唯一和有序性
    —队列机制

在这里插入图片描述

广播模式

广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。 所有的提议 (proposal)都在被提出的时候加上了zxid。 实现中zxid是一个64为的数字,它高32位是epoch用来标识
leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,低32位是个递增计数

恢复模式

  • Leader选举:
    首先,是在一种无主的模型下
    毛遂自荐:自我投票
    需要对事实,对黑白,对正反的自我判断
  • 公开、公正、公平或者说准确的选出有能力者
  • 公平竞争:zxid事务id最大的持有的数据最新
  • 说出事实真相:传递投票

总结:

  • 攘其外

主从模型

  • 消息队列
  • zxid

  • 数据模型:znode
  • 事件通知:Watcher
  • session

必先:快速
安其内

  • 无主模型

  • 选举:
    判定(zxid,myid)
    投票传递性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值