zookeeper第一课-基础介绍

官网:http://zookeeper.apache.org/

继redis之后,今天开始对zookeeper进行学习。

学习zookeeper我们可以参照官网文档进行学习
https://zookeeper.apache.org/doc/r3.5.7/zookeeperOver.html
有这么一句描述:
ZooKeeper: A Distributed Coordination Service for Distributed Applications
zookeeper是一个分布式应用程序的分布式协调服务。

zookeeper的设计理念

ZooKeeper is simple.

zookeeper使用起来是非常简单的。

ZooKeeper is replicated.

zookeeper也是可以被复制的,也就是说它自身也是多节点的:
在这里插入图片描述

组成ZooKeeper服务的服务器都必须彼此了解。它们维护内存中的状态图像,以及持久存储中的事务日志和快照。只要大多数服务器可用,ZooKeeper服务将可用。
客户端连接到单个ZooKeeper服务器。客户端维护一个TCP连接,通过它发送请求,获取响应,获取监视事件并发送心跳。如果与服务器的TCP连接断开,则客户端将连接到其他服务器。
ZooKeeper是有序的。ZooKeeper用一个反映所有ZooKeeper事务顺序的数字标记每个更新。后续操作可以使用该命令来实现更高级别的抽象,例如同步原语。
ZooKeeper很快。在“读取为主”的工作负载中,它特别快。ZooKeeper应用程序可在数千台计算机上运行,​​并且在读取比写入更常见的情况下,其性能最佳,比率约为10:1。

作为一个分布式协调服务,它自身也是多节点集群的,既然谈到多节点,那大致方向上就是分片和集群副本两种模式。
就像我们之前讲的redis的主从复制一样,zookeeper也是采用的主从复制模型。
但是我们知道,之前的redis的主从复制,采用的是弱一致性,不能完全保障数据的一致性,可能会导致数据的丢失。
zookeeper的主从复制采用的方案是最终一致性

客户端请求

在这里插入图片描述
类似于redis的主从复制一样,zookeeper中的follower只接受读请求,当接受到写请求时,会转发到leader上去。
单台机器想要保证操作的时序性复杂度是比较低的。
且,zookeeper对于一次请求可认为是一次带session的请求,基于session,可以有例如创建临时节点的操作。

数据模型和分层名称空间

ZooKeeper提供的存储节点的名称空间与标准文件系统的名称空间非常相似。名称是由斜杠(/)分隔的一系列路径元素。ZooKeeper名称空间中的每个节点都由路径标识。
ZooKeeper的层次命名空间

在这里插入图片描述

节点
在这里插入图片描述

与标准文件系统不同,ZooKeeper命名空间中的每个节点都可以具有与其关联的数据以及子节点。
就像拥有一个文件系统一样,该文件系统也允许文件成为目录。
ZooKeeper旨在存储协调数据:状态信息,配置,位置信息等,因此存储在每个节点上的数据通常很小,在字节到千字节范围内,
也就是1M以内。因此不推荐存储数据在节点上,不要把zookeeper当数据库用。
zookeeper的节点分为二种:持久节点和临时节点。
其中的临时节点其实是基于一次客户端连接会话session的。
还有一种是序列节点,但这个节点不是单独的节点,而是一种特征,持久节点和临时节点其实都可以是序列节点。

保障/特征

在这里插入图片描述
ZooKeeper非常快速且非常简单。但是,由于其目标是作为构建更复杂的服务(例如同步)的基础,因此它提供了一组保证。这些是:
顺序一致性-来自客户端的更新将按照发送的顺序应用。
原子性-更新成功或失败。没有部分结果。
统一视图-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。
可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。 也就是持久性,zookeeper虽为内存存储数据,但必然也会涉及到持久化存储。
及时性-确保客户端访问系统的数据在特定时间范围内是最新的。 因为zookeeper是最终一致性,因此可能在请求某个节点的时候此节点还未被同步,此时可以发起同步sync主节点数据,然后返还最新数据给客户端,所以说是需要一个时间去同步。

故障恢复

zookeeper作为主从复制模型,主机自然存在单点故障问题,此时我们结合之前redis哨兵的做法,此时这里是不是也应该有一个第三方监控呢?
zookeeper没有使用第三方,而是使用自身内部机制来完成当leader挂断时,选举出新的leader。
在这里插入图片描述

当主机挂掉时,zookeeper会有一个时刻是没有主机的,此时整体对外是不可用状态。
当然,ZooKeeper官方宣称只需不到200毫秒即可选举新的leader,这个过程对外界是比较透明的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值