Apache zookeeper Overview翻译

  • 名字由来

zookeeper:中文翻译动物园管理员,是用来协调分布式程序的服务框架。之所以起名zookeeper,是因为作者把这些分散的、分布式的系统协调任务看成是一个动物园管理员做的事情。

  • 设计目标

    • 操作简单:zookeeper主要用来协调处理分布式任务通过一个叫多层次的命名空间的东东,这个东东很类似文件系统。一个命名空间就是一个数据寄存器 - 称为znode,按照zookeeper的说法,多层次的命名空间就是文件与目录的关系。但zookeeper的数据是保存在内存中
    • 自我复制:像下面的这个分布式系统,zookeeper主要是在各个server间复制数据,zookeeper 服务必须彼此知道对方的存在。它们将维持同一个内存镜像,通过事务控制。只要大多数的zookeeper机器可以运行,zookeeper就可以提供正常的服务。当一个client需要服务是可通过tcp链接到一个server,如果这个server挂掉了,它就会自动链接另一个server
    • 有序:zookeeper通过更新一个计数器,来反映zookeeper的事务顺序,子操作可以通过这个这个计数器来实现更高层次的抽象,例如原语同步。
    • 快速:zookeeper尤其在读取时表现的性能更为强悍,因为zookeeper service可以同时有很多机器提供且读是写的速度的10倍;

  • 数据模型和多层次命名空间

ZooKeeper 的多层次命名空间:zookeeper的命名空间就像常见的文件系统,每个节点的路径是唯一的,如下

  • 节点
  • zookeeper不像标准的文件系统,每个节点都会关联这个节点和它子节点相关的信息(zookeeper被设计主要是用来存储协调信息,比如状态信息,配置,zookeeper位置信息等)
  • 条件更新和观察

zookeeper支持观察的概念,客户端可以设置对一个节点的观察岗。如果节点发生改变将会触发观察事件同时移除观察事件。当一个观察岗发现一个节点发生变化,客户端就会收到一个消息包说这个节点发生改变了。假如这个客户端和服务器不能建立连接,客户端将会收到一个本地消息通知。

  • 数据保证机制

    • zookeeper的运行时非常快和简单的。尽管设计目标如此,但它是构造复杂服务的基础。例如异步,它可以提供很多保证机制

      • 顺序一致性-来自于客户端的更新请求将会按顺序被发送
      • 原子性 - 更新结果要么是成功要么是失败,没有其它可能性。
      • 单一系统映像 - 客户端不管连接到哪台服务器看到的结果都是一样的
      • 可靠性 - 一旦更新被运用,它将持续覆盖客户端。
      • 及时 - 客户端及时收到消息
  • 简单的API接口
    • zookeeper 设计要达到的目标之一是提供一个很简单的程序接口。正如下面的结果,它仅支持下面这些操作

      • create

        creates a node at a location in the tree

        delete

        deletes a node

        exists

        tests if a node exists at a location

        get data

        reads the data from a node

        set data

        writes data to a node

        get children

        retrieves a list of children of a node

        sync

        waits for data to be propagated

  • 实践

zookeeper 展现了自己高水平的组件服务,在允许一些请求异常外,组成zookeeper服务的每台服务器都会在彼此之间复制。

ZooKeeper Components

复制数据是在内存中维持整个数据树,更新的log被记录子啊磁盘上以便为了恢复,在它们更新的内存中数据库之前先被序列化到磁盘上,每个zookeeper服务器为好几个客户端提供服务,客户端连接到一台服务器上提交请求,提供服务的是本地服务的数据库,对于状态改变的数据请求和写入请求是按照一种叫做统一意见的协议。

统一意见协议是这样的,所有写入的请求都被送到一个统一的服务器,可以叫这台服务器为老大,其余的zookeeper服务器可以叫做小弟。老大发布信息,小弟们收到信息进行同步,信息传送层值关心小弟们是否成功更新,和数据是否和老大保持了一致。

zookeeper使用了常用的原子信息传送协议,正因为原子性,zookeeper才能保证各个小弟上得数据是无误的,当老大收到一条写入的数据的请求,它会计算整个系统的状态当数据被复制在各个小弟上,它把它作为一种事物并且捕获各个状态

  • 使用

zookeeper接口故意设计的很简单,但是你也可以实现更高水平的操作,例如,异步原语,分组等等,一些分布式程序已经开始这样这样干了

  • 性能

zookeeper设计特点是高性能。下面是雅虎开发团队研究的结果,特别是在读和写做对比时,zookeeper表现出了更高的性能,因为写操作是在所有的zookeeper服务器上同步数据状态

ZooKeeper Throughput as the Read-Write Ratio Varies

  • 可靠测试

下面是zookeeper运行在7台服务器上发生错误时的行为记录,我们运行饱和测试,写入的速读的30%,下面是保守的数据测试

Reliability in the Presence of Errors

从上面这个图表中可以看到几点重要的观测,假如同步失败并且立马恢复,zookeeper也是能保持在一个非常高的吞吐量。更重要的是,老大选择的算法允许整个系统快速的恢复并在不影响吞吐量的情况下。zookeeper不在选出一个新老大时耗时超过200ms。第三,zookeeper在恢复后可以立马处理请求。

  • 使用zookeeper的项目

zookeeper已经成功的运行在很多商业项目中。在雅虎中,用来协调和失败恢复

时间: 2024-08-11 03:33:08

Apache zookeeper Overview翻译的相关文章

Apache ZooKeeper Getting Started Guide 翻译

ZooKeeper 開始向导 開始:用zookeeper协调分布式程序 单例操作 管理zookeeper存储 连接zookeeper 执行zookeeper 以复制模式执行zookeeper 其他优化 Getting Started:通过zookeeper协调分布式程序 这份文档包括了让你高速開始使用zookeeper的帮助信息. 文章主要是针对0基础想尝试使用zookeeper的开发人员,当中包括了一些简单的样例.仅用一台zookeeperserver,一些命令确认server正在执行,一个简

Download and Install Apache Zookeeper on Ubuntu

http://www.techburps.com/misc/download-and-install-apache-zookeepr/36 In previous article of this Big-Data tutorials series we have seen, What is Apache Zookeeper, Why do we need it and How it works ?. In this particular article we will see how to do

Apache Sqoop - Overview Apache Sqoop 概述

使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的其他数据进行结合处理.从生产系统加载大块数据到Hadoop中或者从大型集群的map reduce应用中获得数据是个挑战.用户必须意识到确保数据一致性,消耗生产系统资源,供应下游管道的数据预处理这些细节.用脚本来转化数据是低效和耗时的方式.使用map reduce应用直接去获取外部系统的数据使得应用变得复杂和增加了生产系统来自集群节点过度负载的风险. 这就是Apache Sqoop能够做到的.Aapche Sqoop

Apache ZooKeeper 服务启动源码解释

转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper-code/ 本文首先讲解了 Apache ZooKeeper 服务启动的三种方式,即 Standalone.伪分布式.分布式.然后针对分布式模式启动步骤进行逐步介绍,从 Shell 脚本开始,一直介绍到服务完全启动过程中所有的执行过程.通过本文读者基本可以掌握 ZooKeeper 如何启动.启动过程中做了哪些工作. 分布式系统从根本上来说就是不同节点上的进程并发

Apache ZooKeeper Watcher 机制源码解释

分布式系统从根本上来说就是不同节点上的进程并发执行,并且相互之间对进程的行为进行协调处理的过程.不同节点上的进程互相协调行为的过程叫做分布式同步.许多分布式系统需要一个进程作为任务的协调者,执行一些其他进程并不执行的特殊的操作,一般情况下哪个进程担当任务的协调者都无所谓,但是必须有一个进程作为协调者,自动选举出一个协调者的过程就是分布式选举.ZooKeeper 正是为了解决这一系列问题而生的.上一篇我们介绍了 ZooKeeper 服务启动原理和源代码剖析,这一讲我们来谈谈 Watcher 机制,

alimama open source mdrill启动后访问蓝鲸任务时出错:Caused by:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss

启动后,访问:http://IP:1107/mdrill.jsp  蓝鲸任务 即http:/IP:1107/topology.jsp 页面出现如下错误: HTTP ERROR 500 Problem accessing /topology.jsp. Reason: KeeperErrorCode = ConnectionLoss Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperError

Android推送服务(GCM)----GCM Architectural Overview翻译

GCMArchitectural Overview Google Cloud Messaging for Android (GCM)是一个能够帮助开发者从服务器端发送数据到运行在Android手机上的程序的服务.这个服务提供了一个简单,轻量级的机制使得服务器端可以告诉移动端的程序与服务器端建立直接的联系,来获取更新的程序或者用户的数据.C2DM服务可以处理所有的消息队列的问题并且可以把消息发送到目标机器上运行的目标程序. 简介 GCM的主要特点: 1  它允许第三方的程序服务端发送消息到他们的安

zookeeper报错[org.apache.zookeeper.ClientCnxnSocketNIO.cleanup()]: Ignoring exception during shutdown output

今天启动项目控制台报错: [DEBUG]-[Thread: main-SendThread(192.168.1.45:2181)]-[org.apache.zookeeper.ClientCnxnSocketNIO.cleanup()]: Ignoring exception during shutdown output 找了半天发现因为我们公司停电了,ip被重置了.呵呵呵呵

apache zookeeper的安装

original article:http://zookeeper.praveendeshmane.co.in/zookeeper/zookeeper-3-4-6-single-server-setup-on-ubuntu-14-04.jsp --------------------------------------------------------- Apache ZooKeeper is a software project of the Apache Software Foundati