云原生技术中台:从分布式到云平台设计
上QQ阅读APP看书,第一时间看更新

在传统的计算机行业中,开发人员通常擅长开发单机程序,却很难高效地开发出多个独立程序协同工作的功能。开发这种协同功能是非常困难的,这是因为开发人员很可能会投入大量的时间来考虑协同工作的逻辑,没有时间更好地处理并实现应用程序的业务逻辑。

ZooKeeper最初由知名互联网公司雅虎创建,该项目最早起源于雅虎研究院的一个研究小组。当时雅虎研究人员发现,雅虎内部很多大型系统都需要依赖一个分布式协调系统,但是这些系统存在分布式单点故障问题。雅虎开发人员尝试开发了一个无单点故障问题的通用分布式协调框架,使用该框架后业务开发人员可以将精力全部集中在业务逻辑的处理上。

ZooKeeper是基于分布式计算的核心概念设计的,以中心化的管理方式,提供了注册中心和配置中心,旨在解决分布式框架数据一致性的难题。分布式系统的核心要素就是构建中心化平台,集群中每个子节点都需要通过中心化平台保障数据的最终一致性。ZooKeeper一词的来源是“动物园管理者”,原因是Apache软件基金会有多个以动物名称命名的框架,这些框架都需要中心化服务。当然,ZooKeeper遵守Apache协议,代码开源且可免费商用。

本章先介绍ZooKeeper应用场景和设计理念,给出ZooKeeper源码的下载地址。然后分别从数据结构、通信协议、事务、内存数据模型、磁盘数据模型、会话模型等方面介绍ZooKeeper内核原理。在读者对ZooKeeper有一定了解以后,本章后半部分将分析ZooKeeper集群原理,涉及集群角色、通信算法和协议、集群管理原理和启动流程等。最后,本章结合开源客户端框架Apache Curator(简称Curator)给出实例,涉及数据的增删改查操作和分布式锁等通用功能。