美文网首页
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