《吃透 XXX》,技术系列开篇
— 1 —
早期关注我的读者应该比较了解,我的技术文章几乎都是实战类的:有系统架构,有疑难问题排查,然后会衍生出相关的理论知识。
这种方式我觉得比较成体系,从文章评价和转载次数来看,效果确实非常好。但是此类文章的输出频率很难保证。
因此,从去年底开始,我就在思考:我到底要不要写一些偏理论性的技术文?
其实纠结的点在于:理论性的文章已经有那么多了,我如何才能写出自己的味道?如何才能让读者有一些新的收获?这是我一直没找到答案的两个核心问题。
刚好前阵子我写了一篇文章: 编程高手是如何练成的? 我提出了一个观点:如果有底层知识的输入,还有思考的加成(发现问题的能力),编程水平的提升会非常迅速。
然后有读者问了我一个相关的问题:武哥你是如何建立底层知识体系的?
受此启发,我觉得:为何不以我自己建立技术知识体系的思路作为主线,从这个角度出发尝试下技术文呢?这也算是一种学习方法的传递,有理论同时有实践,经验完全可迁移。
上面这些就是我决定写《吃透XX》技术系列的大致背景。这个系列至少会连载几十篇文章,覆盖后端最主流的技术栈,包括:MQ、RPC、缓存、数据库、服务治理、ES、大数据等。
该系列力求:用我认为最好的视角和思维方式,将一个技术栈最核心的知识点串联起来,帮助大家建立起牢固的知识体系。
希望用这种方式真的帮助大家吃透一门技术。同时,我还会推荐一些不错的书籍和优质文章,减少大家筛选好资料的时间。
— 2 —
我个人建立知识体系的大致思路是:
任何一门技术,一定是为了解决某一类问题而诞生的。所以我会先抓住最根本的问题(或者说场景),然后不断地提问和往下扎根,进一步挖掘出各个零散知识点的关联关系,从而形成可靠的知识体系。
上面这个图,能比较形象地表达我的想法,成体系的知识一定是有索引的,注意这个索引不是简单的知识归类,而是具备延伸能力(很强的逻辑关系)。
因此,知识树中的根节点最为关键,它相当于一门技术的本质。既然是本质,当然越简单越好。第一,真的是高度抽象的,第二,方便大家记忆。
拿 MQ 来说,不管是 RabbitMQ、RocketMQ、Kafka 还是其他消息队列,它的本质就是:一发一存一消费。
以这个本质作为根,你再思考如何串联 MQ 中各个核心的技术点,比如:发消息的协议设计,网络通讯方式,消息该如何存储,采用何种消息投递模式,如何保证消息的可靠性,如何解决三高问题等等。
从根出发,其实能比较自然的串联起很多知识点。而且,针对每一个延伸出的知识点,你又可以继续思考和深挖。
拿发消息来说,一定会涉及消息的协议设计,你可以继续思考:为什么发消息时需要进行协议设计?它又是怎么设计的?为什么要这么设计?
顺着这个思路走,你又能保证每个知识点有一定的深度,从而使得知识体系的每个节点以及连接的边都是比较牢固的。
— 3 —
方法论交代完了,本来当作首篇技术文的前言来写的,发现写完后字数已经挺多了,而且感觉还有些价值,所以单独拎出来水一下。
《吃透系列》的首个技术方向是 MQ,第一篇技术干货过两天就会跟大家见面,我会用上面这套理论展开。
关于这个技术系列,如果你有任何建议,欢迎评论区留言反馈,非常感谢!
我是武哥,我们下期见!
我是武哥,前亚马逊工程师,现大厂技术总监,持续分享个人的成长收获,关注我一定能提升你的视野,让我们一起进阶吧!