zookeeper源码学习笔记(一)

一、缘起

1、CP还是AP

作为一个在大数据行业工作了7~8年的老兵,在被问到zookeeper和CAP时,竟然有些恍惚,AP还是CP?

看了一些博文,答案几乎都是CP?

zookeeper的实现中,P是一定的,A在zookeeper集群leeder故障时,也是不能保障的(即便在短时间选举了新的leader)。A不能满足,就一定满足C吗?

2、最终一致性的C

zookeeper保障顺序写入,如下图,leader发送Commit消息时,Follower A和Follower B的并不一定一致的。A的客户端和B的客户端看到的内容不完全一致。

因此,zookeeper解决的顺序写入,保障数据写入顺序是一致的。zookeeper实现的是最终一致性。

通过这个问题,让我有一种强烈的学习zookeeper源代码的冲动。

二、如何开始

zookeeper是开源项目,源代码在github上非常容易获得,如何阅读源代码呢?

1、下载源代码

        在Idea中,使用git clone,把远端的代码下载到本地。

2、编译源代码

        zookeeper主分支的代码,是可以编译和工作的。但在编译之前,需要mvn clean install -DskipTests。否则,直接在idea上编译会报错。

        执行了mvn clean install -DskipTests之后,会把一些jar包安装到本地的repo。

3、入口函数

        zookeeper是client、server架构,从代码的组织结构也能清晰的看到这一点。因此,在学习源代码的过程中,可以学习server、client的代码。

  •         server入口函数

        zookeeper/bin/zkServer.sh脚本:ZOOMAIN变量中java的入口类org.apache.zookeeper.server.quorum.QuorumPeerMain

        QuorumPeerMain是zookeeper server的入口类。

  •        client入口函数 

        zookeeper/bin/zkCli.sh脚本:java入口类

        org.apache.zookeeper.ZooKeeperMain

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/106111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码提速应用开发

低代码介绍 低代码平台是指一种能够帮助企业快速交付业务应用的平台。自2000年以来,低代码市场一直充斥着40大大小小的各种玩家,比如国外的Appian、K2、Pega Systems、Salesforce和Ultimus,国内的H3 BPM。 2015年以后,这个市场更是…

2023年厦门市高等职业院校技能竞赛软件测试竞赛规程

2023年厦门市高等职业院校技能竞赛 软件测试竞赛规程 一、赛项名称 赛项名称:软件测试 竞赛形式:团体赛 赛项专业大类:电子信息 二、竞赛目的 (一)检验教学成效 本赛项竞赛内容以《国家职业教育改革实施方案》为设计方…

Docker逃逸---procfs文件挂载

一、产生原因 将宿主机/proc目录挂载进了容器,而该目录内的/proc/sys/kernel/core_pattern文件是负责进程奔溃时内存数据转储的,当第一个字符是| 管道符时,后面的部分会以命令行的方式进行解析并运行,攻击者可以将恶意文件写入该…

如何使用 Python 中 Pandas 进行数据分析?

Pandas是Python中一个常用的数据分析库,它提供了丰富的数据结构和工具,可以轻松地进行数据分析和处理。下面是一些使用Pandas进行数据分析的示例: 1、加载数据 在进行数据分析之前,我们需要加载数据。Pandas提供了多种方法来加载…

VM设置共享文件夹方法

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 主要是设置完了需要执行上面这个命令 主机与VMware虚拟机共享文件夹:解决虚拟机找不到共享文件夹问题 - 知乎

【Python数据分析工具】

文章目录 概要整体架构流程技术名词解释 概要 数据分析是一种通过收集、处理、分析和解释大量数据,以发现有价值信息、洞察趋势、制定决策并解决问题的过程。在现代科技和互联网的推动下,数据分析变得日益重要。它不仅仅是对数字和图表的简单解释&#…

代码随想录算法训练营第23期day21| 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 一、(leetcode 235)二叉搜索树的最近公共祖先 二、(leetcode 701)二叉搜索树中的插入操作 三、(leetcode 450)删除二叉搜索树中的节点 一、(leetcode 235)二叉搜索树的最近公…

(※)力扣刷题-字符串-实现 strStr()(KMP算法)

28 实现 strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack “hello”, needle “ll” 输出: 2 示例…

网站上传文件2M限制的一种解决办法

网站上传文件2M限制的解决办法。原因是php读取的初始化文件是php安装目录下的etc/php.ini文件,将修改过但是不起作用的/etc/php.ini文件复制到php安装目录下的etc/子目录,然后重启apche或者云服务器,在php.ini里修改过的参数才能生效。 主要…

Python多种方法实现九九乘法表

你好,我是悦创。 九九乘法表是一种常见的算术学习工具,通常用于帮助学生记住乘法的基本运算。以下是使用Python实现九九乘法表的几种方法: 1. 使用两个嵌套循环 for i in range(1, 10):for j in range(1, i 1):print(f"{j}x{i}{i * …

MacOS ventura跳过配置锁

Macbook pro 2021跳配置锁 1.什么是配置锁? 配置锁顾名思义就是美国一些企业和公司向苹果工公司定制采购的机器,这些机器一般供应内部员工使用,这种机器和正常机没有什么区别,也是无锁三网机器,功能和正常机器一摸一…

如何用精准测试来搞垮团队?

测试行业每年会冒出来一些新鲜词:混沌工程、精准测试、AI测试…… 这些新概念、新技术让我们感到很焦虑,逼着自己去学习和了解这些新玩意,担心哪一天被淘汰掉。 以至于给我这样的错觉,当「回归测试」、「精准测试」这两个词摆在一…

解决git在window11操作很慢,占用很大cpu的问题

【git在window11操作很慢,占用很大cpu,最后也执行失败】 在谷歌输入:git very slow in window 11。通过下面链接终于找到了解决方案: https://www.reddit.com/r/vscode/comments/sulebx/slow_git_in_wsl_after_updating_to_window…

怒刷LeetCode的第26天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:动态规划 第二题 题目来源 题目内容 解决方法 方法一:有限状态自动机 方法二:正则表达式 第三题 题目来源 题目内容 解决方法 方法一:从最后一位向前遍历 方法二…

测试除了点点点,还有哪些内容呢?

今天和一个网友讨论了一下关于互联网行业中测试的情况,希望能够了解现在的互联网行业主要的测试工作内容。小编根据以往的工作经历和经验情况,来做一个总结和整理。 1、岗位分类 现在的岗位划分主要是分为两大类:测试工程师 和 测试开发工程…

matlab相机标定实验

实验原理 1. 相机标定坐标系 相机的参数对目标的识别、定位精度有很大的影响,相机标定就是为了求出相机的内外参数。标定中有3个不同层次的坐标系:世界坐标系、相机坐标系和图像坐标系(图像物理坐标系和图像像素坐标系)。世界坐…

数据结构--》掌握数据结构中的排序算法

当我们面对海量数据时,如何高效地将其排序是数据结构领域中一个重要的问题。排序算法作为其中的关键部分,扮演着至关重要的角色。 无论你是初学者还是进阶者,本文将为你提供简单易懂、实用可行的知识点,帮助你更好地掌握排序算法在…

pdf怎么压缩?pdf文件缩小的方法在这里

PDF文件由于其跨平台、可打印性强等特点,成为了我们日常工作中经常使用的一种文件格式。然而,这种格式的文件有时候会因为过于庞大而给我们的存储和传输带来困扰,其实,这种情况只需要通过一些工具对PDF文件进行压缩,即…

【RocketMQ系列二】通过docker部署单机RocketMQ

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

小程序uView2.X框架upload组件上传方法总结+避坑

呈现效果: 1.1单图片上传 1.2多图片上传 前言:相信很多人写小程序会用到uView框架,总体感觉还算OK吧,只能这么说,肯定也会遇到图片视频上传,如果用到这个upload组件相信你,肯定遇到各种各样的问题,这是我个人总结的单图片和多图片上传方法. uView2.X框架:uView 2.0 - 全面兼容…