-
ZooKeeper-30-ZooKeeper 原理之数据与存储
数据与存储
至此,我们已经知道了整个ZooKeeper客户端和服务端的一些工作原理,下面我们来看看 ZooKeeper 最底层数据与存储的技术内幕。
在 ZooKeeper 中,数据存储分为两部分:内存数据存储与磁盘数据存储。
内存数据
在 7.1.1 节中,我们已经提到,ZooKeeper 的数据模型是一棵树,而从使用角度看,ZooKeeper 就像一个内存数据库一样。
在这个内...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-29-ZooKeeper 原理之各服务请求 request
请求处理
上文中我们已经对一个ZooKeeper集群的启动、Leader选举以及各服务器的工作原理等方面进行了介绍,下面我们一起来看看,针对客户端的一次请求,ZooKeeper 究竟是如何进行处理的。
7.8.1 会话创建请求
在 7.3.1 节中,我们曾经介绍了会话创建过程中 ZooKeeper 客户端的大体流程。
在本节中,我们再一起来看看会话创建过程中ZooKeeper服务端的...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-28-ZooKeeper 原理之各服务器角色介绍 role
各服务器角色介绍
通过上面的介绍,我们已经了解到,在ZooKeeper集群中,分别有Leader、Follower和Observer三种类型的服务器角色。
在本节中,我们将一起来深入了解这三种服务器角色的技术内幕。
Leader
Leader服务器是整个ZooKeeper集群工作机制中的核心,其主要工作有以下两个。
· 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。
· ...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-27-ZooKeeper 原理之选举 vote
Leader选举
在4.1.3节中,我们已经了解了ZooKeeper集群中的三种服务器角色:Leader、Follower和 Observer。
接下来,我们将从 Leader 选举概述、算法分析和实现细节三方面来看看ZooKeeper是如何进行Leader选举的。
Leader选举概述
Leader选举是ZooKeeper中最重要的技术之一,也是保证分布式数据一致性的关键所在。
...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-26-ZooKeeper 原理之服务端启动 server start
服务器启动
从本节开始,我们将真正进入ZooKeeper服务端相关的技术内幕介绍。首先我们来看看ZooKeeper服务端的整体架构,如图7-27所示。
本节将向读者介绍ZooKeeper服务器的启动过程,下面先从单机版的服务器开始介绍。
单机版服务器启动
ZooKeeper 服务器的启动,大体可以分为以下五个主要步骤:配置文件解析、初始化数据管理器、初始化网络I/O管理器、数据恢...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-25-ZooKeeper 原理之会话 session
会话
会话(Session)是ZooKeeper中最重要的概念之一,客户端与服务端之间的任何交互操作都与会话息息相关,这其中就包括临时节点的生命周期、客户端请求的顺序执行以及Watcher通知机制等。
在 7.3.1 节中,我们已经讲解了 ZooKeeper 客户端与服务端之间一次会话创建的大体过程。
以 Java 语言为例,简单地说,ZooKeeper 的连接与会话就是客户端通过实例...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-24-ZooKeeper 原理之客户端 client
客户端
客户端是开发人员使用ZooKeeper最主要的途径,因此我们有必要对ZooKeeper客户端的内部原理进行详细讲解。
ZooKeeper的客户端主要由以下几个核心组件组成。
ZooKeeper实例:客户端的入口。
ClientWatchManager:客户端Watcher管理器。
HostProvider:客户端地址列表管...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-23-ZooKeeper 原理之序列化与协议
序列化与协议
在前面的章节中,我们对整个ZooKeeper的系统模型进行了全局性的了解,从本节开始,我们将深入ZooKeeper的每个组成部分来讲解其内部的实现原理。
从上面的介绍中,我们已经了解到,ZooKeeper 的客户端和服务端之间会进行一系列的网络通信以实现数据的传输。
对于一个网络通信,首先需要解决的就是对数据的序列化和反序列化处理,在ZooKeeper中,使用了Jute这...
2016-09-25 04:21:05 |
Apache