zookeeper详解

zookeeper是什么

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

为什么使用Zookeeper?

1、 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进 程(如资源、任务分配等)
2、 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 » 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
3、 ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
Keepalived监控节点不好管理
Keepalive 采用优先级监控
没有协同工作
功能单一
Keepalive可扩展性差

zookeeper能帮我们做什么?

1、Hadoop,使用Zookeeper的事件处理确保整个集群只 有一个NameNode,存储配置信息等.
2、HBase,使用Zookeeper的事件处理确保整个集群只有 一个HMaster,察觉HRegionServer联机和宕机,存储 访 问控制列表等.

zookeeper优点

最终一致性: 为客户端展示同一个视图,这是zookeeper里面一 个非常重要的功能
可靠性: 如果消息被到一台服务器接受,那么它将被所有的 服务器接受。
实时性: Zookeeper不能保证两个客户端能同时得到刚更新 的数据,如果需要最新数据,应该 在读数据之前调 用sync()接口。
独立性: 各个Client之间互不干预 原子性 更新只能成功或者失败,没有中间状态。
顺序性: 所 有Server,同一消息发布顺序一致。

zookeeper的工作原理

1.每个Server在内存中存储了一份数据;
2.Zookeeper启动时,将从实例中选举一个leader(Paxos 协议)
3.Leader负责处理数据更新等操作
4.一个更新操作成功,当且仅当大多数Server在内存中成功修 改数据

zookeeper的特性

1、Zookeeper是简单的
2、Zookeeper是富有表现力的
3、Zookeeper具有高可用性
4、Zookeeper采用松耦合交互方式
5、Zookeeper是一个资源库

Zookeeper选举流程简述

目前有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:

服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
服务器5启动,后面的逻辑同服务器4成为小弟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值