这段时间,写了一系列关于消息中间件的博客,现将它们汇总,一方面便于大家查阅,另一方面,也分享一下我用阅读一本书的方法,来学习一项新技术的一些心得。
粗读
一本书,上来就翻开第一页,一直读到最后一页,这是在读教科书,只有老师讲课时才可能这样做。
更好的方法,是先看看书评,再把书快速浏览一遍,知道大概在讲些什么。
同样,要学习一个中间件,最好的方法,也不是上来就直接安装、搭建环境、跑hello world。
因为在安装和运行的过程中,你可能会遇到一些坑,会花费你不少时间去上网搜解决方案,你的满腔学习热情,可能会被浇灭,甚至你很不幸,在你的机器上,安装时遇到了一个大坑,那你的学习之旅也就到此结束了,出师未捷身先死。
个人推荐的学习方法,是先回答两个问题:
- 为什么要使用这个中间件
- 这个中间件的大致实现原理,比如由哪些组件构成,各自起到什么作用等
所以,学习消息中间件,首先要问自己,为什么需要消息中间件?不用会怎么样?用了又有什么好处?
然后,再去了解消息中间件的某个具体实现,比如说Nsq,通过阅读官方文档,了解它的大致结构。
这就是这系列文章的第一篇: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 有赞
我想,阅读一本书和学习一项编程技术,两者的相似,就如同写作之于编程吧。
写的一手好文章的人,大概写出来的代码,也很优雅。
懂得如何阅读一本书的人,在学习一个新领域的知识时,也会游刃有余。
以上。