ZooKeeper部署和应用(一)

本文介绍了ZooKeeper的基本概念,探讨了其在大型分布式系统中的作用,并详细解释了ZooKeeper的特点、架构、角色以及写数据流程。

1.   ZooKeeper 是什么

ZooKeeper 是一个针对大型分布式系统的可靠协调系统;它提供的功能包括:配置维护、名字服务、分布式同步、组服务等; 它的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户; ZooKeeper 已经成为 Hadoop 生态系统中的基础组件。

2.   ZooKeeper特点

1、最终一致性:为客户端展示同一视图,这是 ZooKeeper 最重要的性能。

2、可靠性:如果消息被一台服务器接受,那么它将被所有的服务器接受。

3、实时性:ZooKeeper 不能保证两个客户端同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。

4、等待无关(wait-free):慢的或者失效的 client 不干预快速的client的请求。

5、原子性:更新只能成功或者失败,没有中间其它状态。

6、顺序性:对于所有Server,同一消息发布顺序一致。


3.   ZooKeeper 架构

                                                                 ZooKeeper 的架构图如下:

       
                                  通过ZooKeeper 架构图我们可以了解以下几点 :

1、每个Server 在内存中存储了一份数据。

2、ZooKeeper 启动时,将从实例中选举一个 leader(根据Paxos协议来选举,大家知道有这么个协议即可)。

3、Leader 负责处理数据更新等操作(这里用到Zab协议,大家知道有这么个协议即可)

4、一个更新操作成功的标志是当且仅当大多数Server在内存中成功修改数据。


4.   Zookeeper 角色

Zookeeper中的角色主要有以下三类:
领导者(leader)、跟随者(Follower)、观察者(ObServer)。

领导者(leader)是整个集群的主节点,复制响应所有对Zookeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO。负责进行投票的发起和决议,更新系统状态。
跟随者(Follower)用于接收客户请求并向客户端返回结果,在选主过程中参与投票。
ObServer 可以接收客户端连接,将写请求转发给leader节点。Observer 可以同步 leader的状态,但observer不属于法定人数,即不参加选举也不响应提议。ObServer 的目的是为了扩展系统,提高读取速度。observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。

5.    ZooKeeper Server

1、Leader 选举算法采用了 Paxos 协议。
2、Paxos 核心思想是当多数 Server 写成功,则任务数据写成功。
1)如果有3个Server,则需两个写成功即表示任务数据写成功。
2)如果有4或5个Server,则需三个写成功即表示任务数据写成功。
3、Server 数目一般为奇数,例如 3、5、7等等。
1)如果有3个Server,则最多允许1个Server 挂掉。
2)如果有4个Server,则同样最多允许1个Server挂掉。
既然3个或者4个Server,同样最多允许1个Server挂掉,那么它们的可靠性是一样的,所以选择奇数个ZooKeeper Server即可,这里选择3个Server。

6.   ZooKeeper 写数据流程

                                                     ZooKeeper 写数据的流程图如下所示:
 

                                        ZooKeeper 的写数据流程主要分为以下几步:
  1、比如 Client 向 ZooKeeper 的 Server1 上写数据,发送一个写请求。
  2、如果Server1不是Leader,那么Server1 会把接受到的请求进一步转发给Leader,因为每个ZooKeeper的Server里面有一个是Leader。这个Leader 会将写请求广播给各个Server,比如Server1和Server2, 各个Server写成功后就会通知Leader。
  3、当Leader收到大多数 Server 数据写成功了,那么就说明数据写成功了。如果这里三个节点的话,只要有两个节点数据写成功了,那么就认为数据写成功了。写成功之后,Leader会告诉Server1数据写成功了。
  4、Server1会进一步通知 Client 数据写成功了,这时就认为整个写操作成功。ZooKeeper整个写数据流程就是这样的。 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值