像讀一本書那樣,去學習一項程式設計技術
這段時間,以一個輕量級的MQ中介軟體——Nsq為例子,寫了一系列關於訊息中介軟體的部落格,現將它們彙總,一方面便於大家查閱,另一方面,我在總結的時候也發現了自己的學習過程,和自己經常採用的閱讀方法有些類似,也順帶分享一下。
粗讀
一本書,上來就翻開第一頁,一直讀到最後一頁,這是在讀教科書,只有老師講課時才有可能這樣。
更好的方法,是先看看書評,再把書快速瀏覽一遍,知道大概在講些什麼。
同樣,要學習一箇中間件,最好的方法,也不是上來就直接安裝、搭建環境、跑hello world。
因為,在安裝和執行的過程中,你可能會遇到一些坑,會花費你不少時間去上網搜解決方案,你的滿腔學習熱情,可能會被澆滅,甚至你很不幸,在你的機器上,安裝時遇到了一個大坑,那你的學習之旅也就到此結束了,出師未捷身先死。
個人推薦的學習方法,是先回答兩個問題:
- 為什麼要使用這個中介軟體
- 這個中介軟體的大致實現原理,比如由哪些元件構成,各自起到什麼作用等
所以,學習訊息中介軟體,首先要問自己,為什麼需要訊息中介軟體?不用會怎麼樣?用了又有什麼好處?
然後,再去了解訊息中介軟體的某個具體實現,比如說Nsq,通過閱讀官方文件,瞭解它的大致結構。
這就是這一系列文章的第一篇:ofollow,noindex" target="_blank">MQ(1) —— 從佇列到訊息中介軟體 ,我從一條佇列開始,給你演示了佇列是如何一步步進化為訊息中介軟體的。
事實上,所有的MQ,都可以從一條佇列開始研究起,看他們是如何往佇列上面新增功能,最後形成一箇中間件。
瞭解完這些之後,如果你對這個領域真的感興趣,你再去安裝、搭建環境、跑hello world,這時候,由於你已經對這個中介軟體有一定了解,定位問題和看網上解決方案時也更加輕鬆。
提問
現在你已經大致翻看了一遍,覺得這本書不錯,想繼續深入閱讀,從哪讀起呢?
這時候不妨向自己主動發問,通過提問的方式,去逼迫自己到書中尋找答案。
同樣,瞭解完Nsq的幾個元件,就不妨問問自己,一條訊息,從生產者釋出,到被消費者消費,這一整個流程,是怎麼樣的?這就是第二篇文章所回答的問題:MQ(2) —— 一條訊息是如何從生產到被消費的
研讀
現在你已經翻看了一遍,也已經通過提問的方式,解決了翻看過程中發現的一些疑惑。
但是你總覺得還不夠,這本書還有精髓沒被自己發現,於是你決定再仔細地讀一遍。
同樣,你覺得這個中介軟體還有很多細節性的知識,於是你覺得重新對它審視一番,你可以開啟官方文件,從頭到尾讀一遍,或者在谷歌上搜索一些部落格,又或者找來一些書籍,總之,你想對這個中介軟體,有一個徹頭徹尾的瞭解,這就是第三篇文章:MQ(3) —— 刨根問底
同主題閱讀
你已經讀完了這本書了,但是你還是覺得不滿足,也許這本書是《哈姆雷特》,你驚歎於莎翁的筆法,於是你去找了他寫的另一本書,《麥克白》;也許這本書是南懷瑾的《論語別栽》,你想看看別人對論語的理解,於是你找來了李霖的《喪家狗》和《去聖乃得真孔子》……
同樣,學完了Nsq,這個輕量級的訊息中介軟體,你覺得還不夠,你想看看別人是怎麼實現的,於是你找來了Kafka,在對比中繼續學習,這就是第五篇文章:MQ(5) —— Nsq vs Kafka ,在此之前,你還嘗試總結了一下這個領域的通用知識,這是第四篇文章:MQ(4) —— 如何設計一個靠譜的訊息中介軟體
身臨其境
現在你已經“走火入魔”了,你被你這段時間來所研究的主題深深的吸引住,你看完了大家們對《論語》的解讀,也想結合自己的經歷,嘗試解讀一番,這就是大量輸入後的輸出。
同樣,你學習了Nsq,又瞭解了Kafka,甚至還學習了其他一些MQ,你覺得把你“畢生所學”整合起來,設計一套自己的MQ,當然,你完全可以“站在巨人的肩膀”,選擇其中一個開源軟體,開啟你的構建之旅,這就是最後一篇文章:MQ(6) —— Nsq in 有贊
我想,閱讀一本書和學習一項程式設計技術,兩者的相似,就如同寫作之於程式設計吧。
寫的一手好文章的人,大概寫出來的程式碼,也很優雅。
以上。