ZooKeeper的介绍


前言

  软件的发展从单体应用到现在的分布式应用,软件的架构也变得越来越复杂,作为一个架构师,肯定需要了解大量的软件为自己的软件架构奠定基础,而zookeeper作为一款分布式协调的软件,被许许多多的中间件使用,如:Kafka、Hadoop、HBase、Solr等,为什么这么多的软件都使用到了ZooKeeper呢,他的好处到底在哪里呢?让我们来一起了解下。


一、zookeeper是什么?

  ZooKeeper 是apache软件基金会的顶级项目,先看看官网是怎么描述zookeeper的,如下图:
在这里插入图片描述
  这段描述总结一句话就是zookeeper是一款为分布式应用提供分布式协调的开源软件。

二、zookeeper的设计理念

1、服务结构图

  先看看官方提供的ZooKeeper的服务结构图
在这里插入图片描述
  从图中可以看得出来,ZooKeeper服务有5台Server组成,分为两种角色,Leader和Follower,Leader只能有一台,从图上可以看出,正中间的Server是Leader角色,剩下的都是Follower角色,这些后续会通过实际操作来进行查看和证实。
  另外还有一批Client(具体应用)连接到Server,通过各自连接的Server实现各自的分布式功能。

2、ZooKeeper的数据模型

在这里插入图片描述
  ZooKeeper采用目录树的结构来设计的数据模型,每个节点都可以存储数据,但是每个节点存储的数据不能超过1M,这是官方为了避免使用者把ZooKeeper当作数据库来使用了,为什么不能把ZooKeeper当作数据库来使用呢,这个话题我们后面在讲性能时再进行解释。

3、性能

在这里插入图片描述
  官方宣称ZooKeeper快,简单,那我们先看看官方的压测数据,上图横坐标是读请求所占的比例,纵坐标是每秒发送的请求数,红色实线是ZooKeeper自身是3台服务器集群的性能曲线,绿色虚线是5台,蓝色虚线是7台,紫色虚线是9台,浅蓝色虚线是13台

读写比例并发量
20%20000左右
40%22000左右
60%30000左右
80%60000左右
95%110000左右

  表格只是我个人目测的大概的数据,但是从图形结合表格来看,ZooKeeper在处理读数据请求时,性能是非常优秀的。所以如果我们把ZooKeeper当作数据库来用的话,不仅违背了作者当初的设计初衷,同时也无法真正发挥ZooKeeper的性能优势。

4、可靠性

在这里插入图片描述
  上图是官方的压测结果,官方使用910个客户端并发压测,期间出现2次低谷,这两次低谷都是重新选主导致的,根据官方描述,ZooKeeper重新选主只消耗了200ms,性能非常可靠,重新选主后的ZooKeeper有可以对外正常提供服务,并且性能并没有受到什么影响。

总结

  以上就是今天要讲的内容,本文仅仅简单介绍了ZooKeeper。
  ZooKeeper目前已经被成功的广泛应用到大量的工业级应用中,比如Yahoo。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值