《深入理解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这个层次,才能形成核心竞争力。


因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。

PDCA方法论,检查自己是否错过更新:每周三晚上8点左右,我都会更新文章,如果你没有收到,记得点开【编程一生】公众号找一下(*^▽^*)

消息中间件MQ的学习境界和路线的更多相关文章

  1. 消息中间件 MQ

    复制粘贴于:https://blog.csdn.net/wqc19920906/article/details/82193316 一.消息中间件相关知识 1.概述 消息队列已经逐渐成为企业IT系统内部 ...

  2. 消息中间件MQ详解及四大MQ比较

    一.消息中间件相关知识 1.概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流 ...

  3. Rust学习资源和路线

    Rust学习资源和路线 来源 https://rust-lang-cn.org/article/23 学习资源 The Rust Programming Language 堪称Rust的"T ...

  4. 消息中间件MQ

    消息中间件MQ:为方便预览,将思维导图上传至印象笔记,博客园直接上传图片受限于图片大小 https://app.yinxiang.com/shard/s24/nl/27262531/c3e137a5- ...

  5. RabbitMQ系列(一)--消息中间件MQ如何去选择

    MQ在项目中的应用很普遍,本人所在项目组使用的是ActiveMQ,但是后面介绍的RabbitMQ... 一.应用场景 1.异步处理 2.流量削峰.秒杀 3.日志处理,推荐kafka 4.应用解耦 二. ...

  6. 【消息中间件之RabbitMQ学习】-开篇-001

    写在前面的话 项目中因为要用到消息中间件,当初极力推荐RabbitMq.但因为种种原因,最终选型为java+mongodb自实现一套分布式的消.没有用RabbitMq工作过,实属遗憾.因为个人来说实在 ...

  7. 消息中间件MQ基础理论知识

    欢迎转载,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5723280.html 消息中间件已经流行很长时间,一般情况下,不需要自己来从头研发.设计消息中间件,所以 ...

  8. linux内核学习-建议路线

    三大经典书: LDD: Linux Device Driver 容易上手 LKD: Linux Kernel Development 通俗易懂 UDK: Understand Linux Kernel ...

  9. JMS消息中间件之ActiveMQ学习

    1.下载 下载二进制bin文件:http://activemq.apache.org/activemq-5132-release.html 下载源码: 2.启动: 解压任意路径: 启动后: 3.访问: ...

随机推荐

  1. 记录一次docker容器内修改my.cnf配置文件max_allowed_packet参数的过程

    1. 问题背景 在一次新版本功能开发完毕,配合测试的过程中,测试反馈某个XxlJob定时任务一直执行失败,在分析了日志之后,找到了报错的原因: Packet for query is too larg ...

  2. 2021-08-02(console、comfrim)

    1.console对象 1.输出信息: console.info()别名 console.log(); 2.复合类型表格展示 console.table(obj) || console.table(A ...

  3. python安装jupyter notebooks(windows下)

    [1]前提 前提:下载好Python并把python添加到了Path路径 以3.8为例子,在安装的时候有个这个勾选项,Add Python 3.8 to PATH,勾上就好,没有的话.就把python ...

  4. Linux 中如何使用 Htop 监控工具?【网络安全】

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.Htop 界面展示 "Htop 是一个用于 Linux/Unix 系统的交互式实时进程监控应用程序,也是 top 命令的替代品,它是所 ...

  5. windows配置jdk环境变量、mysql环境变量、tomcat环境变量、maven环境变量、git环境变量、node环境变量

    一.windows配置各种环境变量后 path 路径下的目录: 二.windows 配置各种环境变量的目的: 为windows系统添加上各种环境对应的命令 举例,为什么要添加jdk的bin目录,是因为 ...

  6. 简单面试前算法一览java

    1.排序 冒泡,快速排序 2.查找 二分查找 3.链表 翻转链表 合并链表 是否有环 b. 快慢指针 public class QuickSort {   public static void qui ...

  7. GC是什么? 为什么要有GC?   

    GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过 ...

  8. lucence 内部结构是什么?

    面试官:想了解你的知识面的广度和深度. 解答: Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点.可以 基于这个脉络展开一些. 最近面试一些公司,被问到的关于 Elastics ...

  9. 深入理解Java虚拟机-走进Java

    一.Java技术体系 从广义上讲, Clojure. JRuby. Groovy等运行于Java虚拟机上的语言及其相关的程序都属于Java技术体系中的一员. 如果仅从传统意义上来看, Sun官方所定义 ...

  10. elasticsearch 的倒排索引是什么 ?

    解答:通俗解释一下就可以. 传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置. 而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表 即为倒排索引. 有了倒排索引,就能实现 ...