手把手带你撸zookeeper源码(前言)

先提出两个问题:

1、我们用zookeeper来做什么事?

2、你所熟知的业务系统、分布式中间件系统中都有哪些使用了zookeeper?用zookeeper做了什么事?

 

前言

           既然标题写的是手把手的带你撸zookeeper源码,那么我们总要有一个开头,那怎样学习一个中间件系统呢?首先你得我们得知道它用来干什么的?主要有哪些功能?你让有必须使用它的优点,同时也要考虑各种特殊情况下,它可能会出现什么问题?比如故障宕机、数据丢失、是否支持高并发、高可用等问题。把它的功能摸清楚之后,知道它有哪些功能,可以干什么事了之后,然后再去一步步的撸源码,深入学习它底层是怎么实现的?学习它设计上的优点,然后运用到自己的实践中去

 

学前提问?

大家学习一个中间件系统的时候,或者看一个框架的源码的时候先去怎么学习呢?上网找一些demo级别的博客,然后手动把环境搭建起来,运行一下,执行成功,大功告成。是不是这样?但是你学过之后有没有问过自己一些问题, 以本系列的主角zookeeper为例,比如: zookeeper是如何进行选举leader的? 根据哪些条件来判断自己是leader还是follower或者是observer的?zookeeper集群之间是如何通信的? 底层的数据是怎么保存的?客户端如何和服务端建立连接的?如何创建会话的?心跳如何维护?会话超时后如何处理?如何进行监听回调,ZAB怎么保持数据的一致性的?等等问题?如果你有问过,并且去学习了,并且底层源码、核心机制都了解了,那么你就是大牛,本系列文章不适合你。如果没有,或者进去看了源码,但是要么被源码绕晕了,要么是一知半解,那么就请跟着我来一起学习,我会按照我学习的思路带一步步带你搞清楚zookeeper内部源码核心机制,让你对源码不再那么恐惧,也最终培养自己的一套学习方法,然后去看其他框架的各种源码。中间如果有任何不懂的或者模糊的地方也希望大家多多积极留言

 

学前准备

学习一个框架源码最好的方式就是看它的官方文档,像spring、mybatis、springboot、zookeeper等框架都有非常详细的官方文档,教你它都有哪些功能,解决哪些问题等,虽然都是英文文档,看着不方便。当然你可以使用google翻译,把他们直接翻译成中文去看,虽然中间有些坏味道,但是不太能阻碍你的学习。还是建议大家直接看英文文档,两点:1、基本上开源框架都是外国大牛写的,都是英文的。2、刚开始别扭、恐惧,但是慢慢就好了,关键是你能坚持下来

1、zookeeper官网,我直接粘出来了,看的是v3.4.13版本的文档 https://zookeeper.apache.org/doc/r3.4.13/zookeeperStarted.html

大家可以看左侧的菜单栏,里面把它的使用,以及开发、API、运维等都有,大家可以先通过Getting Started来先快速了解一下

2、下载源码并导入本地idea中

      zookeeper源码下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

      然后把它们导入到你的idea中,一个maven项目,相信大家都能导入进去吧?在这里不演示了,直接发出来我导入成功之后的截图

 

说明: 本系列文章主要是基于3.4.13版本来讲解zookeeper源码,现在大部分公司的zk用的都是3.4.5,这个版本的zk源码已经相对比较稳定,用的公司也比较多,所以暂不会拿最新版本来讲解,3.4.13已经足够,如果对版本有异议的同学请绕行

总结

学习是一个痛并快乐着的事情,唯有坚持,才能更好,用极挑里面的一句话: 一起拼、一起赢

一切准备妥当,万事俱备,只剩发车

 

每周不定期更新三篇,初步估计zookeeper源码会有20篇文章左右,希望感兴趣的同学点击关注或者收藏

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值