开篇:免费开源的趣讲 ZooKeeper 教程(连载)

削微寒 2021-01-21 09:42:51
教程 开源 免费 zookeeper 开篇


本文作者:HelloGitHub-老荀

一、起因

良好的开端,是成功的一半。

我是作者老荀,一个普通的程序员,没有 985 和 211 的背景,也从没在大厂工作过。仅仅是喜欢研究技术,一直想做一个讲解技术的完整系列。然后我加入了 HelloGitHub 开源组织,在大家的鼓励和帮助下,我开启了讲解系列。

经过和蛋蛋讨论,最终确定了这次系列的主题是顶级开源项目 ZooKeeper 以下简称 ZK。

ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper 曾经是 Hadoop 的一个子项目,现在是一个顶级独立的开源项目。

选它的原因如下:

  • ZK 我曾经大概是在去年的时候,有深入研究过一段时间,只是当时没有做过多的记录,就自己随便看看,但是没能整理出来,心里总留着一丝的遗憾

  • 我本身是 Java 程序员,所以从阅读理解上来说,还是看 Java 的代码最亲切,最舒服,而且我已经练就了一定程度的肉眼 DEBUG 能力,不需要将程序运行起来就能在脑中推导整个流程

  • ZK 本身是一个基础的协调框架,而且其他编程语言也有对应的客户端,所以受众比较广,并且 ZK 本身架构是分布式的,具有一定的复杂性,非常值得学习

  • ZK 市面上的书本资料很少(相较于 MySQL 或 Redis)而且基于的也是 ZK 的旧版本(不是最新版本),我想尽自己所能为开源社区添砖加瓦

二、介绍

系列文章基于当前 ZK 最新的版本:3.6.2

这个系列还是延续 HelloGitHub 的 Hello 宇宙,起名为 「HelloZooKeeper」。文章大致分几个部分来讲解:

  • 基本介绍(安装和使用)
  • 业务处理流程
  • 数据内存模型
  • 选举
  • 会话管理
  • 持久化 & 协议
  • 面试题
  • 配置大全及其他 ZK 的隐藏功能

差不多就以上这些主题,又因为 ZK 本身的话题还是比较大的,另一方面受限于本人水平,没办法做到事无巨细、面面俱到,所以之后如果有补充我会做成单篇文章,添加进去。

三、内容

不积跬步,无以至千里。

不积小流,无以成江海。

讲解原理难免会和枯燥挂钩起来,我和蛋蛋也在交流到底是怎么样的形式才更容易让大家接受,而我们的目标就是希望大家都能通过我们的文章有所收获,所以这一次:

  • 采用基本不讲解源码的方式来讲解 ZK 的原理

  • 在讲解的过程中我自己会虚(chui)构(niu)一个生动的小故事帮助大家理解

  • 尽量用通俗、幽默的语言把一个个复杂难懂的知识点讲清楚、讲明白

  • 以图为主,文字为辅的方式,尽量减少读者的阅读负担

  • 在文章中时不时穿插一些我认为很搞笑的网络梗、表情包,进一步提高读者的阅读兴趣

开始之前,有两句话想要说在前面:

文章中的观点不一定是客观的事实,但是都是本人通过源码推敲得出的结果,至少在本人主观的认知上都是正确的结论,尽最大的努力对读者负责。所以,有问题欢迎大家指出和讨论,不要留一句:“垃圾”就走了。这是不负责任的表现!

开始动手写该系列的时候 ZK 最新版本是 3.6.2,如果在写的过程中 ZK 迎来重大升级,怕不是在玩我?讲解的版本号不会做变动,针对有必要的新特性,会在之后的单篇中进行单独介绍。为了兼顾有趣和深度,文章中举的有些例子未必是准确的,只能说是尽量贴近事实的同时会省略一些不重要的流程,从而减少读者的阅读负担。

四、展望

HelloGitHub 因你们而精彩

既然是 HelloGitHub 出品的系列,怎么能少了和 GitHub 的梦幻联动呢?

我们会提供一个仓库用来存放文章,希望大家可以把关于文章的建议或者关于 ZK 相关的讨论,在 issue 区留言:

https://github.com/HelloGitHub-Team/HelloZooKeeper/issues/new

我一定会尽力回复每一位读者,同时如果有不少人都有疑惑的知识点,也会收集后通过单篇文章的方式,整理 issue 后统一解答。

请不要吝啬你们的留言,你们的留言很可能会帮助到其他有相同困惑的人,让我们一起来把 HelloZooKeeper 建设得更好吧~

各个阶段的小伙伴,都可以加入到教程的编写和校审中。欢迎:

  • 新手:参与到修改文中的错字、病句、拼写、排版等问题
  • 使用者:参与到内容的讨论和问题解答、帮助其他人的事情
  • 老司机:参与到文章的编写中,让你的名字出现在作者一栏
  • 不懂编程的小白:点个 Star 支持我们在做的事吧!

项目地址:https://github.com/HelloGitHub-Team/HelloZooKeeper

预告:下一篇是安装和上手,带你进入 ZooKeeper 的世界。下周见!

五、最后

我是 HelloGitHub 的卤蛋:

荀哥儿是我们 HelloGitHub Java 技术群的群主,他是个资深 Java 程序员,不仅技术好、热爱开源还很幽默和谦逊。他经常在群里耐心地回答大家的问题,我说他一个人盘活了 Java 群,他却说:“别这么说,都是群里的兄弟们挺我!”

由荀哥儿编写的 HelloZooKeeper 系列,从筹划到最终发布用了 2 个月的时间,他为了让枯燥的文字变得风趣,自己画了 50 多张图+并插入了各种有趣的图片,相信大家一定会喜欢的。还为了保证连载不断,他完成了 9 篇才决定开始发布,期间还不断打磨文章的质量。对于我提出的修改建议,他都会认真考虑并在保持自己文章风格的情况下进行采纳。该教程还采用开源和开放的编写方式,方便大家贡献和运行,后面会有帮助理解的示例项目。

讲解技术的连载文章往往都没有好看的阅读数,但 HG 会把这个系列(10+篇)从头到尾连载完成!不忘初心,由衷的希望读者能从《讲解开源项目》中学到东西,找到乐趣爱上开源。

HelloGitHub 感恩有你!


关注 HelloGitHub 公众号 收到第一时间的更新。

还有更多开源项目的介绍和宝藏项目等待你的发掘。

版权声明
本文为[削微寒]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/xueweihan/p/14304671.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云