在《深入理解Java类加载机制,再也不用死记硬背了》里我提到了对于一门语言的“会”的三个层次。本篇将以知识地图的形式展现学习消息中间件MQ各个层次要掌握的内容。
知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。所以本篇重点不是介绍某个知识点,而是介绍掌握消息中间件,需要看哪些文章的导航。
消息中间件MQ会的三个层次与黄金圈法则相对应。
What层:hello world 级别
What层:hello world 级别,知道它能做什么。在《RabbitMQ设计原理解析》里详细介绍过,这里再讲一遍。
MQ的主要作用有三个:
1、异步处理
示例一:在《架构师三大难-领域划分问题》的示例三(异步处理模式)里,我用退款做示例讲了MQ用作异步处理的场景。
示例二:还有一个典型的MQ的异步处理场景是日志采集。我所知道的公司,日志集中采集用的都是kafka。业务开发人员只需要专注自己的业务逻辑,将日志打印到磁盘上,kafka会异步的采集到日志服务器。
示例三:分布式事务中有一种常用的一致性解决方案:异步确保型解决方案。这个常用的就是基于MQ来实现。在《服务设计要解决的问题》里有这种场景的说明。
2、应用解耦
示例一:我有很多文章都是建立在应用解耦的基础上:《Spring Kafka的异步Bug》、《一个反直觉的sql》背景是MQ的一端和另一端分别属于两个公司。
示例二:我在写文章过程中,意识到自己遇到的场景可能和大家自己工作中的认知有一定距离,所以我写了尤娜系列。事实上,由于自己写文章时,都会对文章的论点进行验证,所以尤娜是我几年前开源的一个项目名
https://github.com/xiexiaojing/yuna
《尤娜系统的第一次飞行中换引擎的架构垂直拆分改造》这篇文章就以故事的形式展示了使用MQ做应用拆分的业务背景及整个过程。由于咱们用户群(可加我微信 brmayi 注明:入群)里反馈文章中没有明确使用的拆分方法论,我补充了方法论篇:《四种常用的微服务架构拆分方式》。
3、流量削峰
示例一:在《从前,有一个简单的通道系统叫尤娜……》这篇文章中,尤娜系统遇到的就是需要进行请求的削峰填谷。流量削峰我在《四种缓存的避坑总结》里有明确写道这是稳定性保障的一个重要举措,尤娜文章中大家也应该能感受到吧!
How层:应用级别
How层:应用级别,知道怎么用MQ来实现功能。《应用角度看kafka的术语和功能》这篇文章里介绍了要达到这一层级所需的知识点。
这一层其实在网上能找到的资料最多,实际上就像开头黄金圈的图里画的:也最浅。想在简历上“掌握”,还要进入下一层。
Why层:掌握级别
Why层:掌握级别,理解原理,遇到问题可以深入剖析到本质。想达到这一层,需要很多相关领域的知识。只要面试者水平不是太差,一般面试官都会问到这一层,以达到了解面试者综合能力的目的。
示例一:《Kafka生产端实际项目中的使用分析》里提到了给kafka加代理和使用加密kafka的问题。
示例二:《架构视角-文件的通用存储原理》里把Kafka、Redis、关系型数据库、搜索引擎的存储拿出来对比,探讨了存储原理的本质问题。
示例三:《稳定性五件套-限流的原理和实现》从算法层面来探讨底层原理。
示例四:《避免线上故障的10条建议》里讨论了使用MQ的风险和规避措施。
示例四:《实战并发-使用分布式缓存和有限状态机》、《Spring Kafka的异步Bug》里说明了Kafka自身的设计问题和缺陷,以及怎么规避。
示例五:《深入理解MQ生产端的底层通信过程-理解channel》深入底层通信,深层理解MQ的本质。MQ本质上是解决通信的问题。《服务设计要解决的问题》里提到,技术本质上都解决三个问题:分布式、通信和存储。想深入理解MQ,建议从《白话TCP/IP原理》开始理解通信。
总结
咱们用户群(可加我微信 brmayi 注明:入群)里讨论的问题,我喜欢看不发表评论。在大家的讨论中,我其实可以收集很多的问题和大家的关注点。一两句话太浅,我通常会写文章来集中回答大家可能遇到的问题。 本篇也是咱们用户朋友的提醒:“观察到知识点是承上启下的,是否可以搞一个目录,当连载小说看”。我隔一段时间会做一期《历史文章分类汇总》,但是这种分类的方法,文章之间的逻辑关系并不强。正好这篇文章可以顺便介绍一下知识地图这种逻辑关系,作为方法论的介绍。
最后解释一下黄金圈法则:
西蒙·斯涅克在他的《从“为什么”开始》一书中提出了“黄金圈法则”的概念。他发现,人们一般向别人表达或者激励时,常规路径是:先现象,而后措施,最后是结果,这种路径收效甚微。而真正能动人心的路径应该是:先理念,而后措施,再到现象,最后是结果。
有朋友大概听过这个名言:people don't buy what you do,they buy why you do it。大意是:人们买的不是你的产品而是你的理念。理念才是核心。掌握一个知识技能也是一样,只有掌握到Why这个层次,才能形成核心竞争力。