最近开始对zookeeper源码进行学习,本篇为zookeeper源码学习的开篇,从整体上对zookeeper进行剖析.
一、ZooKeeper总体介绍
1.1、什么是zookeeper
1.2、ZooKeeper 应用场景
二.ZooKeeper源码环境
2.1、ZooKeeper版本选择
2.2、 ZooKeeper源码环境准备
三.ZooKeeper基础之序列化机制
3.1、序列化使用场景
3.2、什么是序列化, 为什么要进行序列化操作
3.3、序列化实现方式
3.3.1、java序列化实现
Java 中进行序列化和反序列化的过程中,主要使用 ObjectInputStream 和 ObjectOutputStream 来进行具体的序列化和反序列化。
3.3.2、hadoop的序列化实现
3.3.3、ZooKeeper 中的序列化机制
序列化的 API 主要在 zookeeper-jute 子项目中。
3.3.4、重点API:
四、ZooKeeper基础之持久化机制
对于只要底层涉及到关于数据的存储,读写操作, 一般都会有一个持久化机制来保证.那么ZooKeeper的数据模型主要涉及两类知识:数据模型 和 持久化机制, 背后是两套API来支撑
ZooKeeper 本身是一个对等架构(内部选举,从所有 learner 中选举一个 leader, 剩下的成为follower)
ZooKeeper的数据模型,抽象出了重要的三个API用来完成数据的管理:
关于 ZooKeeper 中的数据在内存中的组织,其实就是一棵树:
ZooKeeper 的持久化的一些操作接口,都在org.apache.zookeeper.server.persistence 包中。
主要的类的介绍:
五、ZooKeeper基础之网络通信机制
Java IO 有几个种类:
NIO 的三大API:
ZooKeeper 中的通信有两种方式:
两个最重要的API:
关于客户端和服务端的一个定义:谁发请求,谁就是客户端,谁接收和处理请求,谁就是服务端
ServerCnxn实现包:org.apache.zookeeper.server.ServerCnxn
六、Zookeeper基础之Watcher工作机制
客户端的 Watcher 注册:
两条主线
组件说明:
Watcher 主要工作流程:
未完待续,下篇接着继续分析