本文作者:HelloGitHub-老荀
一、起因
良好的开端,是成功的一半。
我是作者老荀,一个普通的程序员,没有和的背景,也从没在大厂工作过。仅仅是喜欢研究技术,一直想做一个讲解技术的完整系列。然后我加入了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区留言。
我一定会尽力回复每一位读者,同时如果有不少人都有疑惑的知识点,也会收集后通过单篇文章的方式,整理issue后统一解答。
请不要吝啬你们的留言,你们的留言很可能会帮助到其他有相同困惑的人,让我们一起来把HelloZooKeeper建设得更好吧~
各个阶段的小伙伴,都可以加入到教程的编写和校审中。欢迎:
新手:参与到修改文中的错字、病句、拼写、排版等问题使用者:参与到内容的讨论和问题解答、帮助其他人的事情老司机:参与到文章的编写中,让你的名字出现在作者一栏不懂编程的小白:点个Star支持我们在做的事吧!
预告:是安装和上手,带你进入ZooKeeper的世界。下周见!
五、最后
我是HelloGitHub的卤蛋:
荀哥儿是我们HelloGitHubJava技术群的群主,他是个资深Java程序员,不仅技术好、热爱开源还很幽默和谦逊。他经常在群里耐心地回答大家的问题,我说他一个人盘活了Java群,他却说:“别这么说,都是群里的兄弟们挺我!”
由荀哥儿编写的HelloZooKeeper系列,从筹划到最终发布用了2个月的时间,他为了让枯燥的文字变得风趣,自己画了50多张图+并插入了各种有趣的图片,相信大家一定会喜欢的。还为了保证连载不断,他完成了9篇才决定开始发布,期间还不断打磨文章的质量。对于我提出的修改建议,他都会认真考虑并在保持自己文章风格的情况下进行采纳。该教程还采用开源和开放的编写方式,方便大家贡献和运行,后面会有帮助理解的示例项目。
讲解技术的连载文章往往都没有好看的阅读数,但HG会把这个系列(10+篇)从头到尾连载完成!我们就是想让大家能从《讲解开源项目》中学到东西,找到乐趣爱上开源。
HelloGitHub感恩有你!