背景介绍
相信每一名后端工程师都知道,分布式架构在如今这个时代有多重要。几乎任何一家知名互联网公司,面试的时候都会考察分布式技术原理,其重要性仅次于数据结构与算法。
如果你想精通分布式技术体系,那你必须先熟练掌握作为分布式应用协调框架的 ZooKeeper 。它更像机场的调度中心,协同不同程序或组件有序工作。这种兼容、协调、有序让 Zookeeper 的源码变得“非常烂”(庞大且复杂)。
如果你觉得ZooKeeper 源码看不懂、学不会、用得懵,那「ZooKeeper 源码分析与实战」这个专栏对你很有帮助,32讲就可以带你搞懂 Zookeeper 源码和经典应用场景。
你会学到什么?
课程内容共 4 个模块,合计 32 篇文章,从基础知识点到底层原理全面深入地展开介绍:
基础篇: 介绍 ZooKeeper 的数据节点、Watch 机制、ACL 权限控制、Jute 序列化等基础知识,并结合实际工作中的应用场景帮助你强化对这些知识点的理解,为后面的学习打下基础。
进阶篇: ZooKeeper 主要通过客户端与服务端的相互通信完成工作,而会话则是其中最核心的概念。诸如临时节点、Watch 监控机制等功能和特性都与客户端的会话状态紧紧相关,所以了解 Zookeeper 服务器从创建到对外提供服务的整个过程,清楚会话在 Zookeeper 服务运行过程的不同状态,以及掌握 Zookeeper 的会话管理策略和底层实现原理非常重要。
高级篇: 介绍了 ZooKeeper 集群的工作方式以及内部的实现原理,重点介绍了 ZooKeeper 的 Leader 群首选举算法,集群中的 Leader、Follow、Observer 3 种角色和其各自功能,更深入源码层面分析了 3 种角色处理请求的内部实现,以及相互间的通信协作机制。
核心原理与实战篇: 在掌握了 ZooKeeper 相关知识点的情况下,这个模块会带你学习分布式事务算法二阶段提交、三阶段提交,以及 Paxos、ZAB 协议等算法,进一步加强你对 Zookeeper 的理解,并通过大量的实战案例分析,帮助你提高在日常工作中使用 ZooKeeper 解决问题的能力。
课程目录
模块一:基础篇
第01讲:ZooKeeper 数据模型:节点的特性与应用
第02讲:发布订阅模式:如何使用 Watch 机制实现分布式通知
第03讲:ACL 权限控制:如何避免未经授权的访问?
第04讲:ZooKeeper 如何进行序列化?
第05讲:深入分析 Jute 的底层实现原理
第06讲:ZooKeeper 的网络通信协议详解
模块二:进阶篇
第07讲:单机模式:服务器如何从初始化到对外提供服务?
第08讲:集群模式:服务器如何从初始化到对外提供服务?
第09讲:创建会话:避开日常开发的那些“坑”
第10讲:ClientCnxn:客户端核心工作类工作原理解析
第11讲:分桶策略:如何实现高效的会话管理?
第12讲:服务端是如何处理一次会话请求的?
第13讲:Curator:如何降低 ZooKeeper 使用的复杂性?
模块三:高级篇
第14讲:Leader 选举:如何保证分布式数据的一致性?
第15讲:ZooKeeper 究竟是怎么选中 Leader 的?
第16讲:ZooKeeper 集群中 Leader 与 Follower 的数据同步策略
第17讲:集群中 Leader 的作用:事务的请求处理与调度分析
第18讲:集群中 Follow 的作用:非事务请求的处理与 Leader 的选举分析
第19讲:Observer 的作用与 Follow 有哪些不同?
第20讲:一个运行中的 ZooKeeper 服务会产生哪些数据和文件?
模块四:实战篇
第21讲:ZooKeeper 分布式锁:实现和原理解析
第22讲:基于 ZooKeeper 命名服务的应用:分布式 ID 生成器
第23讲:使用 ZooKeeper 实现负载均衡服务器功能
第24讲:ZooKeeper 在 Kafka 和 Dubbo 中的工业级实现案例分析
第25讲:如何搭建一个高可用的 ZooKeeper 生产环境?
第26讲:JConsole 与四字母命令:如何监控服务器上 ZooKeeper 的运行状态?
第27讲:crontab 与 PurgeTxnLog:线上系统日志清理的最佳时间和方式
模块五:原理篇
第28讲:彻底掌握二阶段提交/三阶段提交算法原理
第29讲:ZAB 协议算法:崩溃恢复和消息广播
第30讲:ZAB 与 Paxos 算法的联系与区别
第31讲:ZooKeeper 中二阶段提交算法的实现分析
第32讲:ZooKeeper 数据存储底层实现解析
结束语
结束语 | 分布技术发展与 ZooKeeper 应用前景
讲师介绍
那朋,前京东资深架构师
曾负责京东白条、金条、企业小贷等项目的架构研发工作,目前在一家知名在线教育公司担任架构师,负责公司整体的系统架构工作。
他在 Java 领域从业十年,平时喜欢研究开源项目代码,擅长分布式架构设计,对 ZooKeeper 架构以及底层实现原理,以及如何解决不同应用场景下多变的现实问题具有丰富的实践经验。