`

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

分享到:
评论

相关推荐

    工具变量城市供应链创新试点数据(2007-2023年).xlsx

    详细介绍及样例数据:https://blog.csdn.net/m0_65541699/article/details/144095543

    基于Python django-simpleui开发的博客系统详细文档+资料齐全.zip

    【资源说明】 基于Python django-simpleui开发的博客系统详细文档+资料齐全.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    嵌入式开发 操作系统教程 全部PPT课件 共8个章节.rar

    嵌入式开发课程 操作系统1-简述 共15页.pptx 嵌入式开发课程 操作系统2-进程基本描述 共39页.pptx 嵌入式开发课程 操作系统3-互斥 共24页.pptx 嵌入式开发课程 操作系统4-同步 共21页.pptx 嵌入式开发课程 操作系统5-进程管理 共19页.pptx 嵌入式开发课程 操作系统6-处理机调度 共32页.pptx 嵌入式开发课程 操作系统教程 进程、线程 共40页.pptx 嵌入式开发课程 操作系统教程 进程管理-进程同步 共21页.pptx

    基于Python Django教学资源管理系统网站+源码案例设计详细文档+资料齐全.zip

    【资源说明】 基于Python Django教学资源管理系统网站+源码案例设计详细文档+资料齐全.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    <项目代码>YOLOv8 建筑工地楼层空洞识别<目标检测>

    YOLOv8 建筑工地楼层空洞识别项目代码 项目详细介绍请看链接: https://blog.csdn.net/qq_53332949/article/details/144092423 数据集详细介绍请看:https://blog.csdn.net/qq_53332949/article/details/141019974 数据集下载请看:https://download.csdn.net/download/qq_53332949/89720050?spm=1001.2101.3001.9500 按文件中requirements.txt文件配置环境即可使用。

    【路径规划】未来搜索算法栅格地图机器人最短路径规划【含Matlab仿真 2868期】.zip

    CSDN Matlab武动乾坤上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【CVRP】蚁群算法求解带容量的车辆路径规划问题【含Matlab仿真 2635期】.zip

    CSDN Matlab武动乾坤上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于PythonPyQT5的产生式动物识别系统资料齐全+详细文档.zip

    【资源说明】 基于PythonPyQT5的产生式动物识别系统资料齐全+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    基于Python3.5+Django 2.0 开发的运维管理系统资料齐全+详细文档.zip

    【资源说明】 基于Python3.5+Django 2.0 开发的运维管理系统资料齐全+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    (完整数据)全国31个省按hs码分的22类细分产品的出口数据2009-2022年

    ## 数据指标说明 01、数据简介 整理全国31个省直辖市自治区按hs码分的22类细分产品的出口数据,只包含22类的细分,不包含更细的类目。可用来计算出口产品质量,出口产品技术复杂度等指标,数据区间为2002-2022年。 数据名称:31省细分产品出口数据 数据年份:2009-2022年 02、数据指标 时间、流向名称、商品编码、商品名称、伙伴名称、主体编码、主体名称、方式名称、金额(美元) 03、数据截图

    (完整数据)全国各省、市、县人工智能企业数量2000-2023年

    ## 数据指标说明 本份数据更新至2023年7月,涵盖了2000年至2023年7月间中国各省市县的人工智能(AI)企业数量的面板数据。这些数据通过在天眼查特定搜索人工智能企业,并保留存续企业的方式进行收集。其中包括了各个省市县内人工智能企业的数量。这一数据可以被视为衡量各地区人工智能发展水平的重要代理变量,为了解不同地区在人工智能领域的企业发展情况提供了有价值的参考。 一、数据介绍 数据名称:全国各省、市、县人工智能企业数量 数据年份:2000-2023年 数据范围:数据含省级、城市级、区县维度 数据来源:通过在天眼查特定搜索人工智能企业,并保留存续企业的方式进行收集 数据格式:同时提供Excel+Dta格式面板数据 二、指标说明 共计5个指标:所属年度、所属省份、所属城市、所属区县、人工智能企业数量 三、数据展示 数据含省级、城市级、区县维度:

    基于树莓派、Python、Django的家居控制系统资料齐全+详细文档.zip

    【资源说明】 基于树莓派、Python、Django的家居控制系统资料齐全+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    (完整数据)全国地级市人口分布数据2022年

    ## 数据指标说明 资源名称:2022年全国地级市人口分布数据 区域范围:全国地级市 数据格式:.shp格式 数据规模:大于2G

    (完整数据)国自然地学部立项名单(近7000项)2022-2023年

    ## 数据指标说明 2022-2023年国自然立项名单(地学部),2022-2023年国家自然科学基金地球科学部项目名单,2022-2023年NSFC地学部资助名单。 说明: 1.样本量:一共6800多个样本,其中2022年3300多个、2023年3500多个 2.统计项:包括年份、题目、单位和负责人等。

    新生报到系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程.zip

    新生报到系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程 项目启动教程:https://www.bilibili.com/video/BV1BfB2YYEnS

    java毕设项目之基于校园论坛系统(lw+PPT)(源码+说明文档+mysql).zip

    环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目均可完美运行

    修改后的 AMCap DirectX SDK 示例.zip

    修改后的 AMCap DirectX SDK 示例修改 AMCap DirectX SDK 示例一个轻量级全屏网络摄像头查看器,具有摄像头提供的所有分辨率设置。新增功能保存视频 Pin 设置全屏预览

    【APF三维路径规划】人工势场算法球体障碍下无人机三维路径规划【含Matlab仿真 2581期】.zip

    CSDN Matlab武动乾坤上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    免费的 DirectMusic 文件格式加载实用程序.zip

    项目目标libdmusic旨在提供一个框架和一套工具,使应用程序和游戏能够播放 Microsoft DirectMusic 音频文件。该项目目前的主要目标是为REGoth 项目提供一种方法来重现原版 Gothic 和 Gothic II 游戏中的音乐文件。编译预编译的二进制文件适用于 32 位和 64 位 Windows,请参阅发布部分最简单的构建方法libdmusic是使用vcpkg。安装 vcpkg 后,您可以检索所需的依赖项./vcpkg install args sf2cute然后配置并构建cmake项目git clone https://github.com/frabert/libdmusiccd libdmusicmkdir buildcd buildcmake -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake ..cmake --build .用法.sgt您可以通过以下两种方式之一重现片段文件( )使用dmrender将

    使用支持 DirectX 光线追踪的 GPU 进行实时基于物理的渲染.zip

    DirectX 光线追踪球体演示使用具有 DirectX 光线追踪功能的 GPU 进行基于物理的实时渲染。 使用 NVIDIA PhysX 进行光线追踪球体.mp4 DirectX.光线追踪.球体.mp4 特征PBR 金属/粗糙度工作流程使用 NVIDIA PhysX 进行刚体模拟图形设置窗口模式窗口 | 无边框 | 全屏解决HDR垂直同步NVIDIA Reflex相机抖动水平视场光线追踪俄罗斯轮盘赌跳出率采样数/像素NVIDIA 着色器执行重新排序NVIDIA RTXDI重新搅拌重新审视细胞尺寸可视化构建示例初始采样局部光照模式统一 | Power RIS | ReGIR RIS示例BRDF 采样时间重采样偏差校正模式基本 | 成对 | 光线追踪沸腾过滤强度空间重采样偏差校正模式基本 | 成对 | 光线追踪示例NVIDIA RTXGI夏普降尺度因子场景比例粗糙度阈值哈希网格可视化后期处理NVIDIA 实时降噪器降噪器ReBLUR | ReLAX验证覆盖超级分辨率NVID

Global site tag (gtag.js) - Google Analytics