一、zookeeper的定义

  打开zookeeper官网,赫然一行大字,写着:“Apache ZooKeeper致力于开发和维护实现高度可靠的分布式协调的开源服务器”。什么意思呢?就是Apache ZooKeeper的目标是开发维护开源服务器,这服务器是干什么的呢?是做分布式协调的。这服务器的特点是什么呢?是高度可靠的。关键就是高度可靠,不用去验证,也不用怀疑zookeeper的高度可靠性,搜索应用界的大佬solr和大数据服务界的大佬Hadoop就是使用zookeeper提供集群管理。

二、什么是zookeeper

  ZooKeeper诞生于Yahoo,后转入Apache孵化,最终孵化成Apache的顶级项目,是Hadoop和Hbase的重要组件。ZooKeeper是一种集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。由于实现上述需求都需要做很多工作来修复不可避免的错误和竞争条件。因此,这些服务的实现变得非常困难,即使这些服务顺利完成,管理和运维的成本也非常高,所以zookeeper以救世主的身份出现,解决上述技术难题,降低了分布式应用程序的开发难度和工作量,让程序员专注于分布式架构的设计。

三、zookeeper的三中部署方式

  1、独立部署模式,即部署在单台机器上的一个zookeeper服务,适用于学习、了解zookeeper基础功能。

  2、伪分布模式,即部署在一台机器上的多个(原则上大于3个)zookeeper服务,虚拟分布式的zookeeper集群,适用于学习、开发和测试,不适用生产环境。

  3、全分布式模式(复制模式),即在多台机器上部署zookeeper服务,真正的集群模式,适合于学习、开发和测试,可投入到生产环境中使用。

三、在什么场景下使用zookeeper

  1、集群管理

  ①、节点监控:集群环境下,有很多节点,节点可能因为网络故障连接不上,可能因为机器故障无法工作,要求保证集群中的节点都能正常工作,就需要把异常的节点从集群中屏蔽掉,这时使用zookeeper的短暂节点和watcher机制,可以很好的实现集群的管理。

  ②、领导者选举:集群是多个节点(可把节点理解为机器)协同工作,这是需要一个把控全局的领导者节点来接收外部请求、任务派发等,那么,领导者节点如何产生?领导者节点出现故障怎么处理?领导者选举是zookeeper最优秀的功能之一,如果当前领导者节点出现故障,zookeeper可在很短的时间内选举出新的领导者来接替故障领导者的工作。

  2、配置管理

  实际应用中,配置使应用变得灵活,但是在分布式应用下,需要到每一台机上面修改配置,维护配置则复杂很多,基于这种场景,把配置放在zookeeper的znode中,分布式应用的机器到zookeeper的znode中读取配置应用到系统中即可。此外,利用zookeeper的watcher机制,如果配置(znode)发生改变,zookeeper通知各个机器配置信息已经被修改,各机器通过刷新来获取到最新的配置。

  zookeeper还可以应用到很多场景,比如分布式锁、数据的发布和订阅、队列管理等等,此处就不一一介绍了。

四、zookeeper的性能

  zookeeper旨在提供高性能,但是zookeeper的性能如何呢?zookeeper官网提供了一份性能测试结果图,通过分析测试结果图,可以大概了解zookeeper的性能,如下图所示:

  

  从测试结果图得知测试分为5组,分别为3台服务器一组(暂且称为A组)、5台服务器一组(暂且称为B组)、7台服务器一组(暂且称为C组)、9台服务器一组(暂且称为D组)、13台服务器一组(暂且称为E组),观察到几个现象:

    ①、读取请求的百分比在60%之前,吞吐率为A>B>C>D>E。

    ②、读取请求百分比到达80%偏左侧一点,大概75%时,吞吐率开始发生变化,A组的吞吐率开始被其他组超越。

    ③、读取请求百分比到达约95%时,吞吐率发生逆转,约为E>D>C>B>A,读取请求百分比趋近于瓶颈时,zookeeper集群约庞大,满足的吞吐率约高。

    ④、zookeeper集群的吞吐率起点大约在10000左右,性能下限很高。

  结论:

    ①、zookeeper小规模集群也能提供较高的吞吐率,如果对吞吐率有较高要求时,可以通过新增zookeepe服务节点来满足需求。

    ②、随着zookeeper服务节点的增加,zookeeper的性能呈指数上升。

  这篇博文是zookeeper系列的第一篇,对zookeeper做一个简单的介绍,关于zookeeper的更多内容和实际操作,会在后续博文中详述。

  由于能力有限,如有不足和错误之处,还望不吝指出!

zookeeper系列之:zookeeper简介浅谈的更多相关文章

  1. zookeeper系列之六—zookeeper之应用

    http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3113923.html Zookeeper是hadoop的一个子项目,虽然源自hadoop ...

  2. 【Zookeeper系列】Zookeeper命令操作(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4031881.html 一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他 ...

  3. 【Zookeeper系列】zookeeper面试题(转)

    原文链接:https://segmentfault.com/a/1190000014479433 1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是 ...

  4. 【Zookeeper系列】ZooKeeper一致性原理(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4138580.html 一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过Zo ...

  5. 【Zookeeper系列】ZooKeeper机制架构(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...

  6. 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)

    原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...

  7. 【Zookeeper系列】ZooKeeper安装配置(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4018459.html 一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪 ...

  8. 【Zookeeper系列】Zookeeper简单介绍(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技 ...

  9. zookeeper系列之一—zookeeper入门

    Zookeeper是什么? Zookeeper故名思议动物管理员,它是拿来管大象(Hadoop).蜜蜂(Hive).小猪(Pig)的管理员,Apache Hbase和Apache Solr以及Link ...

随机推荐

  1. java的小学生四则运算

    import java.awt.*; import java.awt.event.*; import java.io.FileNotFoundException; import java.io.IOE ...

  2. angularJS1笔记-(13)-自定义指令(controller和controllerAs实现通信)

    index.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  3. Spring 计划 7.0

    Sprint回顾 让我们一次比一次做得更好.   1.回顾组织 主题:“我们怎样才能在下个sprint中做的更好?” 时间:设定为1小时. 参与者:整个团队. 场所:宿舍. 秘书:李新佳.    2. ...

  4. selenium获取新页面标签页(只弹出一个新页面的切换)

    selenium获取新页面标签页(只弹出一个新页面的切换) windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver. ...

  5. 学习mysql触发器遇到的问题

    在 mysql.exe 下面运行的.如果是的话, 可能是需要加一个 定义 DELIMITER // 意思是告诉 mysql , 遇到 // 符号以后, 才认为语句结束了. 否则 mysql 遇到 分号 ...

  6. 固态盘经常性蓝屏处理方法(WIN7/8)

    型号:intel 520S 大小;120G 我的是笔记本,这段时间辞职,有了时间折腾自己的电脑系统了,想装WIN8来着,PE下直接把固态盘的分区都干掉了,分了C,D(40G,剩下的空间),安装阶段完美 ...

  7. final,finally和 finalize的区别

    中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联:  final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承.因 ...

  8. Visual Categorization with Bags of Keypoints

    1.Introduction and backgrounds 作为本周的论文之一,这是一篇bag of features的基本文章之一,主要了解其中的基本思路,以及用到的基本技术,尽量使得细节更加清楚 ...

  9. C语言中变量名及函数名的命名规则与驼峰命名法

    一.C语言变量名的命名规则:(可以字母,数字,下划线混合使用) 1. 只能以字母或下划线开始:2. 不能以数字开始:3. 一般小写:4. 关键字不允许用(eg:int float=2//error  ...

  10. java中的变量各占得字节数

    boolen,8位1个字节int,32位,4个字节float,32位 4个字节double,64位8个字节char 16位,2个字节byte 8位1个字节short 16位 2个字节long 64位 ...