Zookeeper介绍

一、什么是Zookeeper?

如果我们把HADOOP系列看成动物园的话 Zookeeper的功能就和它的名字一样了,管理各种小动物,比如Hadoop、Hive……。

Logo:

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠的分布式协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

Zookeeper(以下简称ZK)的开发动机就是为了减轻分布式应用从头开发协作服务的负担。

二、Zookeeper干什么

  1. 统一命名服务(Name Service)
  2. 配置管理(Configuration Management)
  3. 集群管理(Group Membership)
  4. 共享锁(Locks)
  5. 队列管理(基于锁)

三、Zookeeper实际应用

  1. HADOOP并行计算时控制reduce函数接受调度
  2. 各种大型分布式中间件自身集群协调控制和运行控制
  3. 管理hbase集群
  4. 雅虎的Message Broker:高效的发布/订阅系统,zoo在其管理着用于备份和数据迁移的主题
  5. 雅虎的爬虫的抓取服务
  6. 淘宝商品排查系统
  7. 百度hadoop集群控制和自动化运维平台
  8. lucene + hadoop 分布式运行框架Nut(开源产品)
  9. Twitter开发了一款分布式实时统计系统Rainbird

四、Zookeeper架构

 

五、Zookeeper基本原理

Zookeeper的数据模型

Zookeeper数据节点类型

  1. 临时节点(EPHEMERAL):随回话结束,被服务端干掉
  2. 永久节点(PERSISTENT):可以持久化
  3. 序列节点 (SEQUENCE): 顺序节点

临时节点

 

服务器节点

  1. leader : 通过选举出的zookeeper领导类型服务器
  2. follower: 负责参与选举的所有服务器(除了leader机器)
  3. observer: 不参与Election的服务器

服务端原理

  1. 选举算法:paxos类似算法(一种变形)官方称为:FastLeaderElection
  2. 与客户端通信方式:JAVA-NIO (TCP 服务端-客户端)

通信模型

 

 

FastLeaderElection选举算法

  1. 服务端集群通信方式:TCP方式
  2. 成为Leader的必要条件 :获得n/2 + 1个Server同意
  3. 初始化选择方式:根据myid中的ID。
  4. 心跳:follow定时像leader发送心跳包,收不到则自身转换成looking状态

ZooKeeper运行

  1. server启动时首先从配置文件中读取数据
  2. 各个server发送自己的投票进行选举(选举过程不超过200ms)
  3. 选出leader之后,各个server接收/监听客户端请求
  4. leader与followers+observers同步数据,当数据同步完成后就可以回复 客户端的请求
  5. 读请求可以由接受请求的followers或observers直接回复,写请求要发送到leader进行处理
  6. 当leader宕机时。Follower发现leader失效则发起新一轮的选举
  7. 选出新的leader后leader与followers+observers同步数据……如此进行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值