開篇:免費開源的趣講 ZooKeeper 教程(連載)

本文做者:HelloGitHub-老荀git

1、原由

良好的開端,是成功的一半。程序員

我是做者老荀,一個普通的程序員,沒有 985 和 211 的背景,也從沒在大廠工做過。僅僅是喜歡研究技術,一直想作一個講解技術的完整系列。而後我加入了 HelloGitHub 開源組織,在你們的鼓勵和幫助下,我開啓了講解系列。github

通過和蛋蛋討論,最終肯定了此次系列的主題是頂級開源項目 ZooKeeper 如下簡稱 ZK。面試

ZooKeeper 是 Apache 軟件基金會的一個軟件項目,它爲大型分佈式計算提供開源的分佈式配置服務、同步服務和命名註冊。 ZooKeeper 曾經是 Hadoop 的一個子項目,如今是一個頂級獨立的開源項目。編程

選它的緣由以下:網絡

  • ZK 我曾經大概是在去年的時候,有深刻研究過一段時間,只是當時沒有作過多的記錄,就本身隨便看看,可是沒能整理出來,內心總留着一絲的遺憾架構

  • 我自己是 Java 程序員,因此從閱讀理解上來講,仍是看 Java 的代碼最親切,最舒服,並且我已經練就了必定程度的肉眼 DEBUG 能力,不須要將程序運行起來就能在腦中推導整個流程框架

  • ZK 自己是一個基礎的協調框架,並且其餘編程語言也有對應的客戶端,因此受衆比較廣,而且 ZK 自己架構是分佈式的,具備必定的複雜性,很是值得學習編程語言

  • ZK 市面上的書本資料不多(相較於 MySQL 或 Redis)並且基於的也是 ZK 的舊版本(不是最新版本),我想盡本身所能爲開源社區添磚加瓦分佈式

2、介紹

系列文章基於當前 ZK 最新的版本:3.6.2

這個系列仍是延續 HelloGitHub 的 Hello 宇宙,起名爲 「HelloZooKeeper」。文章大體分幾個部分來說解:

  • 基本介紹(安裝和使用)
  • 業務處理流程
  • 數據內存模型
  • 選舉
  • 會話管理
  • 持久化 & 協議
  • 面試題
  • 配置大全及其餘 ZK 的隱藏功能

差很少就以上這些主題,又由於 ZK 自己的話題仍是比較大的,另外一方面受限於本人水平,沒辦法作到事無鉅細、面面俱到,因此以後若是有補充我會作成單篇文章,添加進去。

3、內容

不積跬步,無以致千里。

不積小流,無以成江海。

講解原理不免會和枯燥掛鉤起來,我和蛋蛋也在交流究竟是怎麼樣的形式才更容易讓你們接受,而咱們的目標就是但願你們都能經過咱們的文章有所收穫,因此這一次:

  • 採用基本不講解源碼的方式來說解 ZK 的原理

  • 在講解的過程當中我本身會虛(chui)構(niu)一個生動的小故事幫助你們理解

  • 儘可能用通俗、幽默的語言把一個個複雜難懂的知識點講清楚、講明白

  • 以圖爲主,文字爲輔的方式,儘可能減小讀者的閱讀負擔

  • 在文章中時不時穿插一些我認爲很搞笑的網絡梗、表情包,進一步提升讀者的閱讀興趣

開始以前,有兩句話想要說在前面:

文章中的觀點不必定是客觀的事實,可是都是本人經過源碼推敲得出的結果,至少在本人主觀的認知上都是正確的結論,盡最大的努力對讀者負責。因此,有問題歡迎你們指出和討論,不要留一句:「垃圾」就走了。這是不負責任的表現!

開始動手寫該系列的時候 ZK 最新版本是 3.6.2,若是在寫的過程當中 ZK 迎來重大升級,怕不是在玩我?講解的版本號不會作變更,針對有必要的新特性,會在以後的單篇中進行單獨介紹。爲了兼顧有趣和深度,文章中舉的有些例子未必是準確的,只能說是儘可能貼近事實的同時會省略一些不重要的流程,從而減小讀者的閱讀負擔。

4、展望

HelloGitHub 因大家而精彩

既然是 HelloGitHub 出品的系列,怎麼能少了和 GitHub 的夢幻聯動呢?

咱們會提供一個倉庫用來存放文章,但願你們能夠把關於文章的建議或者關於 ZK 相關的討論,在 issue 區留言:

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

我必定會盡力回覆每一位讀者,同時若是有很多人都有疑惑的知識點,也會收集後經過單篇文章的方式,整理 issue 後統一解答。

請不要吝嗇大家的留言,大家的留言極可能會幫助到其餘有相同困惑的人,讓咱們一塊兒來把 HelloZooKeeper 建設得更好吧~

各個階段的小夥伴,均可以加入到教程的編寫和校審中。歡迎:

  • 新手:參與到修改文中的錯字、病句、拼寫、排版等問題
  • 使用者:參與到內容的討論和問題解答、幫助其餘人的事情
  • 老司機:參與到文章的編寫中,讓你的名字出如今做者一欄
  • 不懂編程的小白:點個 Star 支持咱們在作的事吧!

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

預告:下一篇是安裝和上手,帶你進入 ZooKeeper 的世界。下週見!

5、最後

我是 HelloGitHub 的滷蛋:

荀哥兒是咱們 HelloGitHub Java 技術羣的羣主,他是個資深 Java 程序員,不只技術好、熱愛開源還很幽默和謙遜。他常常在羣裏耐心地回答你們的問題,我說他一我的盤活了 Java 羣,他卻說:「別這麼說,都是羣裏的兄弟們挺我!」

由荀哥兒編寫的 HelloZooKeeper 系列,從籌劃到最終發佈用了 2 個月的時間,他爲了讓枯燥的文字變得風趣,本身畫了 50 多張圖+並插入了各類有趣的圖片,相信你們必定會喜歡的。還爲了保證連載不斷,他完成了 9 篇才決定開始發佈,期間還不斷打磨文章的質量。對於我提出的修改建議,他都會認真考慮並在保持本身文章風格的狀況下進行採納。該教程還採用開源和開放的編寫方式,方便你們貢獻和運行,後面會有幫助理解的示例項目。

講解技術的連載文章每每都沒有好看的閱讀數,但 HG 會把這個系列(10+篇)從頭至尾連載完成!不忘初心,由衷的但願讀者能從《講解開源項目》中學到東西,找到樂趣愛上開源。

HelloGitHub 感恩有你!


關注 HelloGitHub 公衆號 收到第一時間的更新。

還有更多開源項目的介紹和寶藏項目等待你的發掘。

相關文章
相關標籤/搜索