最近在看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中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时Flag设置为EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在...
Zookeeper学习 Zookeeper是一个由Java编写并开源的,为分布式系统提供协调服务的框架. Zookeeper概述 Zookeeper最早起源于雅虎研究院的一个小组.当时研究人员发现,在雅虎内部的很多系统基本都依赖一个类似的系统来...
本文适合但不限于软件开发人员阅读。本文档能够使阅读者对zookeeper有一个宏观且全面的了解,内容主要包含zookeeper架构、数据模型、读写及工作原理、典型应用场景、指令汇总等,
Zookeeper学习笔记
ZooKeeper是一个开源的分布式协调服务,最初由雅虎公司开发,后来成为Apache基金会的顶级项目。它为分布式应用程序提供了高性能的协调服务,包括配置管理、命名服务、分布式同步和组服务等功能。 ZooKeeper的主要...
在之前的一个《Java学习之SpringBoot整合SSM Demo》分享中说到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技术问题没能成功,只分享了其中的一个中间产物,那就是大家看到的《Java学习之SpringBoot整合SSM Demo》...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和...
1、前言前面我们学习的了Zookeeper的集群搭建和管理,也学习和探讨了它的选举原理,我们这一章节来学习zookeeper集群的升级和迁移在学习集群的升级和迁
这是一个学习zookeeper+dubbo+spring的代码例子,一个maven工程
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、...
公司最近开发的一个项目需要用到ZK,内部分享的一个Zookeeper 入门的一个PPT,共享出来
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是 Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域 名服务、...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。其中,ZooKeeper-3.4.13.tar.gz 是非常适合学习的版本,在很多教材中本被使用。欢迎大家...
系统的学习Dubbo技术栈,掌握Dubbo、Zookeeper架构原理及应用。 lZookeeper 分布式CAP原则 2PC、3PC Paxos、ZAB ZK单机&集群 快速入门 源码解析 场景应用 分布式锁、队列 1Dubbo RPC核心 RPC实现 容错&治理 IO模型&...
压缩包内含有Dubbo后台管理系统、Zookeeper服务器以及Dubbo提供者和消费者源码。还有一份本人手写Txt文档使用详细介绍,内含本人联系方式,欢迎爱学习的你联系我,相互学习、交流。
ZooKeeper是一个分布式协调服务、分布式数据一致性的解决方案,是Google Chubby的开源实现。分布式应用程序可以基于它实现诸如发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和...
本项目是集成dubbo和zookeeper的一个练习项目,基于注解的配置形式,没有xml文件 ## 环境 #### 操作系统:ubuntu 16.04 LTS #### 开发工具:Idea ## 搭建过程 ### 一、安装zookeeper #### 1、下载zookeeper源码包 >...
本文来自于技术世界,本文介绍了Zookeeper的架构,并组合实例分析了原子广播(ZAB)协议的原理,希望对您的学习有所帮助。Zookeeper是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。这...