http://zookeeper.apache.org/doc/r3.3.2/zookeeperOver.html#fg_zkPerfRW
ZooKeeper A Distributed Coordination Service for Distributed Applications
====================================================
zk 提供了一系列的原语(primitives),基于这些原语,可以构建出更高层次的服务,诸如同步、配置维护、分组、命名等。zk 使用了类似文件系统的树结构。
Design Goals:
简单 - zk使用类似文件系统结构的层级化命名空间实现分布式过程的协同
replicated - zk如同它所协同的系统一样,也被设计成可复制的系统,基于被称为ensemble的主机群
有序 - zk的每一次更新都会被赋予一个编号, 编号能够反映所有zk事务的顺序
快速 - 对于高读写比的场景,zk能够提供特别快的速度,zk的应用在数千台机器上运行,通常读写的比例大约在10:1的情况下,zk能以最好的状态运行
Guarantees:
·顺序一致性 - client提交的update会按照其发送顺序执行
·原子性 - update 要么成功要么失败,没有其他结果
·单一系统镜像 - 连接到任意server的client获取到的服务是相同的
·可靠 - 一次生效的update会一直存在,直到client的再次update将其覆盖
·时效性 - 在一定的时间范围内,clients将会看到最新的server状态
Operations:
create - 在tree上创建一个node
delete - 删除一个node
set date - 向一个node写入数据
get date - 从一个node读取数据
exits - 测试在某个位置是否存在一个node
get children - 读取(retrievs)一个node的children列表
sync - 等待数据的传播
Nodes and ephemeral nodes
和标准的文件系统不同的是,zk名称空间里的node既可以存储数据也可以关联,为了含义明确zk里的node被称为znode。
znode维护一个状态结构,包扩数据变更与acl变更的版本信息、用于缓存验证和协同更行的时间戳。znode数据的每次更新都会伴随着版本号的增加。客户端每次检索数据也会同时检索该数据的版本。
命名空间里每个znode的读写动作都是原子的。读取会获得znode上的所有数据,写会替换所有数据。每个znode拥有一个访问控制列表(ACL),定义了谁可以做什么
zk有ephemeral node。ep node存在于创建该node的会话的活动期间,当会话结束时,该node被删除。
Conditional updates and watches
zk支持watches的概念。客户端可以在znode上设置watch,当znode变更时watch将会被触发以及移除。当一个watch被触发时,它将会接收到一个表示znode发生了变更的数据包。当client与其中一个server的连接断开时,client将会受到一个local notification 。
Implementation
每个zk集群中的server除了request proccessor结构意外,都对其他server做了本地副本。在server上,整个data tree是放到一个内存数据库replicated database里的。通过将更新记录到磁盘日志里提供了可恢复性,写入会先序列化到磁盘然后再应用到in-memory database。
每个zk server都对client提供服务。client连接到一个具体的server进行请求的提交。读请求通过每个server的副本db得到处理。改变server状态的请求、写请求通过一致性协议(agreement protocol)处理。
作为一致性协议的一部分,所有的写请求都被传递到一个被称为leader的server进行处理。其余的被称为followers的server,接收来自leader的建议消息并对消息的传递达成一致。消息层负责替换失效的leader,并使followers同步到leader
zk使用一种自定义的原子消息协议。消息协议的原子性保证了本地副本不会产生偏差。当leader接收到一个写请求时,它会计算写请求生效后的状态,并生成一个表达该新生状态的事务
agreement protocol:
·所有来自client的请求都会被传递到被称为leader 的一个server,其他的server被称为 followers, follower 接收来自于leader的提议消息(message proposals)并对消息的传递达成一致(agree upon message delivery)。消息层(message layer)负责当leader 失败时替换新的leader并将follower同步到新的leader。
·消息层使用定制的原子消息传送协议(sustom atomic messaging protocol)。 消息传递的原子性保证了本地副本不会产生不一致。当leader接收到写请求时,它会计算写操作应用之后的系统状态然后将写操作转化为一个相应的事务。
ZooKeeper Programmer's Guide
================================
分享到:
相关推荐
《SAML V2.0 Technical Overview》(委员会草案02版)是一份由OASIS(组织为开放标准)安全服务技术委员会(Security Services TC)发布的文档,该文档详细介绍了SAML 2.0的技术框架与应用范围。SAML 2.0(Security ...
ASAM_XCP_Part1-Overview_V1-1-0
maven-overview-plugin-1.6.jar
maven-overview-plugin-1.5.jar
maven-overview-plugin-1.4.jar
maven-overview-plugin-1.3.jar
本项目“1-Collections-Overview-Section-Java-Collections-S_overview”着重于概述Java集合框架的基本概念和关键组件,旨在帮助开发者理解和掌握这个强大的工具。 在Java中,集合框架包括两种主要类型:集合...
ey-overview-of-china-outbound-investment-of-2020.pdf
在本文中,我们将深入探讨IDE-overview,特别是它在OMNeT网络编程软件中的应用。OMNeT++是一款强大的开源C++模拟框架,广泛用于分布式系统、网络、嵌入式系统和通信协议的建模与仿真。 IDE-overview是OMNeT++的可视...
总的来说,"opc-ua-part-1-overview-and-concepts-1.03-specification-20151222"是学习和理解OPC UA技术基础的重要资源,无论你是设备制造商、系统集成商还是开发者,都能从中获益,为构建高效、安全的自动化和...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)。在本文中,我们将深入探讨MySQL的基本概念、架构、功能、优势以及如何在实际应用中使用它。 一、MySQL概述 ...
Red_Hat_Enterprise_Linux_Atomic_Host-7-Overview_of_Containers_in_Red_Hat_Systems-en-US
### TTEthernet:一种强大的网络解决方案 #### 引言 在现代信息技术领域,网络技术的发展日新月异,其中以太网作为一种普遍使用的局域网技术,在办公、Web应用及生产设施等领域得到了广泛的应用。...
ERP信息化专业资料:SAP专业学习资料2.01-xxxx ERP Overview-MM-09-Returnable packaging.pptx
"Acoustic Overview -- cross reference from Intel" 提供了一个全面了解电脑噪音产生的原理和测量方法的框架。下面将详细探讨这个主题。 一、电脑噪音来源 1. 风扇噪音:电脑内部的散热风扇是主要噪音源之一。当...
资源linux安装包doris-overview_rev4
Adaptive AUTOSAR00_AASR_Fundamentals_Overview_and_Objectives