`

zookeeper学习(一)

 
阅读更多

    最近在看Zookeeper的源码,发现有很多包名中有“jute”的字符,查了一下,原来是这样的:

 1.

     在看ZooKeepr的实现是,发现了有几个包缺失了(e.g. data, proto)。以为是code下载错了,后来发现,其实这些包的code都是由Jute自动生成的。

     Jute主要用到了JavaCC。以前还总是想着使用Bison和JNI来做一个编译器,最近看了ZooKeeper,才发现,原来java早就有个类似的解析器生成工具了JavaCC, 决定使用它来继续之前的项目。

    简单梳理一下ZooKeeper是如何使用JavaCC的吧。ZooKeeper 其实是在Apache Jute (Hadoop Record Compiler)中使用的。Jute已经被Hadoop弃用了,目前只有ZooKeeper在使用(据说)。Jute相关的文档也非常少,有些零零散散的code和jira。所以这里就凭感觉加上些许ZooKeeper的code来猜猜其是如何被使用的了。

    ZooKeeper使用Jute来生成RPC和Serialization相关的code。定义生成哪些文件是在“ZooKeeper.jute”里面进行的。为了解析该文件,ZooKeeper需要使用一个解析器。而该解析器则正是由JavaCC编译而成。解析器的编译文件在rcc.jj文件中。然后再阅读一下ZooKeeper的build.xml即可知道ZooKeeper是如何一步一步的使用Jute来生成所需要的code了。具体的细节只要慢慢阅读那些枯燥的语法和接口定义就好了。

 

   2.看了百度百科,以为Zookeeper使用的是Paxos算法,网上搜到了李海磊老师的视频<<Paxos和分布式系统>>算是入门的学习了一下Paxos。视频是知行学社提供的,我还加了知行学社的群:107166353。视频地址:

http://www.tudou.com/programs/view/e8zM8dAL6hM/

 

  3. 在知行学社的群里,有前辈告诉我Zookeeper使用的不是Paxos而是ZAB,并给我推荐了一篇博客:http://blog.csdn.net/m_vptr/article/details/9325405

 

     4. 顺便说一句,最近在熟悉hadoop和hbase;发现有一个社区叫“炼数成金”,感觉不错。还出了教学视频。

 

     5. 看到ClientCnxnSocketleit类的readConnectResult()方法中的逻辑,自己测试了一下:

       

public static void main(String args[]){
		ByteBuffer incomingBuffer=ByteBuffer.allocate(12);
		incomingBuffer.putInt(10);
		incomingBuffer.putLong(20L);
		StringBuilder buf = new StringBuilder("0x[");
        for (byte b : incomingBuffer.array()) {
            buf.append(Integer.toHexString(b) + ",");
        }
        buf.append("]");
        
        System.out.println(buf);
	}
//运行结果;
0x[0,0,0,a,0,0,0,0,0,0,0,14,]
//解释,int占4个字节,所以前四个位置留给了10,10对应16进制的a,所以为a。long占8个字节,所以十六进制14代表了十进制的20L。

 

 

  6.推荐一篇许式伟先生写的《存储系统的那些事》,是在infq上看到的:

http://www.infoq.com/cn/articles/storage-system-stuff

分享到:
评论

相关推荐

    zookeeper一站式学习资料

    《Zookeeper一站式学习资料》是一份全面覆盖Zookeeper基础到高级知识的学习资源包,旨在帮助初学者快速入门并深入理解Zookeeper。这份资料包含了丰富的文本资料、视频教程以及相关的实践代码,是学习分布式协调服务...

    Zookeeper学习笔记

    【Zookeeper学习笔记】 Zookeeper是一个分布式协调服务,它的核心目标是简化分布式环境下的数据管理与系统协调。作为Apache Hadoop和HBase的重要组件,Zookeeper提供了简单的原语集,支持分布式应用程序之间的通信...

    zookeeper 自己学习资料

    总的来说,这些学习资料提供了从基础到实践的全面理解Zookeeper的途径,对于学习者来说,可以先从文档中了解Zookeeper的基本概念和原理,然后通过阅读网页文章深入理解其在实际项目中的应用,最后结合附件中的示例...

    Zookeeper搭建和原理学习

    Zookeeper 搭建和原理学习 Zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现。它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理...

    Zookeeper学习笔记.pdf

    Zookeeper是一种重要的分布式协调服务,尤其在处理高可用性、高性能的应用场景中。它最初设计的核心功能是提供分布式锁服务,但随着社区的发展,Zookeeper的功能得到了扩展,现在还用于配置维护、组服务、分布式消息...

    Zookeeper学习教程 包括java源码

    Zookeeper学习 Zookeeper是一个由Java编写并开源的,为分布式系统提供协调服务的框架. Zookeeper概述 Zookeeper最早起源于雅虎研究院的一个小组.当时研究人员发现,在雅虎内部的很多系统基本都依赖一个类似的系统来...

    Zookeeper学习手册

    ### Zookeeper 学习手册知识点概览 #### 1. ZooKeeper 基本概念 - **角色**: - **Leader**:集群中的领导者,负责处理客户端的写请求,并保持集群状态的一致性。 - **Follower**:集群中的跟随者,处理客户端的...

    zookeeper 学习资料 上篇

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...

    zookeeper学习笔记

    ### Zookeeper 学习笔记 #### 一、Zookeeper 简介与安装配置 **Zookeeper** 是一个分布式协调服务框架,它提供了一种高效可靠的机制来维护集群中的配置信息、命名服务以及提供分布式锁等功能,使得开发人员能够...

    zookeeper 学习资料 中篇

    《Zookeeper学习资料 中篇》 Zookeeper,作为Apache Hadoop的一个子项目,是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作...

    Zookeeper学习笔记.docx

    ZooKeeper 学习笔记 ZooKeeper 是一个开源的分布式协调服务,由 Hadoop 的创始人 Doug Cutting 等人开发。它为分布式应用提供了一个高效、可靠的协调机制,帮助开发者快速构建高可用、可扩展的分布式系统。 ...

    zookeeper学习视频.rar

    《Zookeeper学习视频》压缩包包含了深入理解与掌握Apache ZooKeeper这一分布式协调服务的重要资源。Zookeeper是一个开源的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈...

    zookeeper学习笔记.pptx

    本文适合但不限于软件开发人员阅读。本文档能够使阅读者对zookeeper有一个宏观且全面的了解,内容主要包含zookeeper架构、数据模型、读写及工作原理、典型应用场景、指令汇总等,

    zookeeper学习资料

    ZooKeeper是一个分布式协调服务,由Apache Hadoop项目开发,广泛应用于分布式系统中,如大数据处理、微服务架构等场景。这个"zookeeper.rar"压缩包包含的学习资料可以帮助我们深入了解和掌握ZooKeeper的核心概念、...

    zookeeper 学习资料 下篇

    《Zookeeper学习资料 下篇》 在Zookeeper的学习过程中,下篇主要涵盖了更深入的理论概念、实战技巧以及常见问题的解决策略。Zookeeper,作为分布式协调服务的基石,广泛应用于大数据、云计算等领域,它的核心功能...

    Zookeeper学习中的疑难问题总结,很受用!

    ### Zookeeper 学习中的疑难问题总结 #### 一、Zookeeper 概念与特性 Zookeeper 是一个分布式的、开放源码的应用程序协调服务,它最初是 Google 的 Chubby 项目的开源版本。Zookeeper 在分布式系统中扮演了一个至...

    Zookeeper学习资源和笔记(附代码)

    Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。Zookeeper的设计目标是为分布式应用提供一致性服务,它主要用来解决分布式...

    ZooKeeper学习笔记

    ZooKeeper通过提供一系列的服务来简化分布式系统的开发,这些服务包括但不限于: - **同步机制**:确保分布式系统中的进程能够以有序的方式运行。 - **配置维护**:集中存储配置信息,方便更新和分发。 - **群组...

    zookeeper学习之三(Curator客户端)

    在IT行业中,ZooKeeper是一个广泛使用的分布式协调服务,它为分布式应用提供了高效且可靠的命名服务、配置管理、集群同步等。本篇文章将专注于ZooKeeper的客户端——Curator,这是一个由Apache提供的Java库,旨在...

Global site tag (gtag.js) - Google Analytics