本章开始讲解Zookeeper重要的技术实现。上一篇我们讲解了Zookeeper客户端的原理与实现,本篇深入解析Zookeeper服务端的相关原理。
Zookeeper的原理(3)
本章开始讲解Zookeeper重要的技术实现。之前一篇我们讲解了Zookeeper的系统模型,并详细讲解了Watch机制,其中提到了客户端与服务端通信的问题,就此我们深入挖掘Zookeeper的客户端与会话原理。
客户端
核心组件
客户端是开发人员使用ZooKeeper最主要的途径。包括以下核心组件:
ZooKeeper实例:客户端的入口;
ClientWatchManager:客户端Watcher管理器;
HostProvider:客户端地址列表管理器;
ClientCnxn:客户端核心线程,其内部又包含两个线程,即SendThread和EventThread。前者是一个I/O线程,主要负责ZooKeeper客户端和服务端之间的网络I/O通信;后者是一个事件线程,主要负责对服务端事件进行处理。
Zookeeper的原理(2)
本章开始讲解Zookeeper重要的技术实现。在分布式系统基础理论(3)中,我们讲到了Zookeeper是采用ZAB协议保持一致性的。
系统模型
树形结构
Zookeeper的数据节点称为ZNode,ZNode是Zookeeper中数据的最小单元,每个ZNode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。ZNode的节点路径标识方式和Unix文件系统路径非常相似,都是由一系列使用斜杠(/)进行分割的路径表示。
分布式系统基础理论(3)
本篇主要讲解分布式一致性或者叫共识(Consensus)算法(不考虑可能出现消息篡改即拜占庭问题),包括Paxos算法,Raft算法, Viewstamped Replication,ZAB协议。
Paxos算法
Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。协议本身并没有多难理解,它的难理解性主要体现在:为何如此设计协议以及如何证明其正确性。
分布式系统基础理论(2)
本篇主要讲解2PC和3PC以及TCC理论,同时介绍一个解决分布式事务的开源项目saga。
最近看了《从Paxos到zookeeper 分布式一致性原理与实践》以及《分布式服务架构:原理,设计与实战》这本书,结合之前的看到的优秀博客,做一下梳理。
在了解2PC和3PC之前先来了解XA规范。XA是由X/Open组织提出的分布式事务的规范。X/Open DTP模型(1994)包括应用程序(AP)、事务管理器(TM)、资源管理器(RM)、通信资源管理器(CRM)四部分。事务管理器(TM)是交易中间件,资源管理器(RM)是数据库,通信资源管理器(CRM)是消息中间件。
分布式系统基础理论(1)
本篇主要讲解ACID, CAP和 BASE。
最近看了《从Paxos到zookeeper 分布式一致性原理与实践》这本书,想提取总结一些分布式相关的内容,做一下梳理,本篇主要讲解ACID, CAP和 BASE。
在《分布式系统概念与设计》一书中对分布式定义如下:
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。