美文网首页
Zookeeper源码分析-前言

Zookeeper源码分析-前言

作者: 进击的蚂蚁zzzliu | 来源:发表于2020-12-06 10:51 被阅读0次

zookeeper为什么会出现?

关于分布式系统先来思考几个问题

  1. 对于leader/follower或master/slave结构的分布式系统,leader挂了怎么办?
  2. 分布式系统中,一个应用的多个节点相同的配置如何变更?变更后如何让节点不需要重启就能做出反应?
  3. 分布式系统中如何动态新增、移除节点?

上面所有这些问题分布式系统都可以自行实现并管理,但既然是大部分系统都需要的功能,那么何不单独把这些功能独立地实现在一个单独的协调服务软件中,实际上zookeeper也正是作为hadoop的一个组件独立出来的。这就是Zookeeper/Consul/etcd等这类软件的作用。

zookeeper代码量

zookeeper是CS架构包含客户端和服务端,下图是使用Sonar扫描Zookeeper源码的总大小情况统计信息:


zk代码量

从上图统计信息可以看出Zookeeper代码行数不到3万行,有效代码行大致只有1万4千行,涉及到的类有382个,源码文件210个,总体来看代码量比较少。

zookeeper功能

zookeeper功能并不多,通常包含下面四类:

  • 统一命名服务
  • 配置管理
  • 集群管理
  • 队列管理
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit
        getAcl path
        close
        connect host:port

通过help命令可以看出zk提供的命令也很少,基本都是一些最基本的命令。

小结

通过上面几点可以粗略的看出,zookeeper就是一个代码很少、功能也不多的小组件,而且zookeeper整体代码相比较netty/spring/tomcat这些来说还是比较简单的,非常适合茶余饭后研究一下。

相关文章

网友评论

      本文标题:Zookeeper源码分析-前言

      本文链接:https://www.haomeiwen.com/subject/zktowktx.html