《深入理解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. 微信小程序 实现图片上传并展示到前端(多文件)并实现表单提交验证

    链接: https://blog.csdn.net/guanj0623/article/details/121595884?spm=1001.2014.3001.5501 https://blog.c ...

  2. spring——整合Mybatis

    一.Mybatis整合spring 步骤: 导入相关jar包 junit mybatis mysql数据库 spring-webmvc aop织入 mybatis-spring spring-jdbc ...

  3. Activemq特性之持久化--LevelDB特性

    LevelDB持久性适配器使用LevelDB作为高性能的消息存储.它是一个基于文件的存储库,它使用了Google的LevelDB,将索引保存到包含消息的日志文件中.它经过优化,提供了比KahaDB更快 ...

  4. CF1225E Rock Is Push (计数)

    观察性质计数题orz小贺 考场上跟榜才切 我们只能往下和往右走,那么只有连续的往下和往右可能会造成不合法的情况!如果当前这一步是向右,那么只有它前面连续的一段向右可能影响到它. 考虑把连续的向右/下一 ...

  5. 『现学现忘』Docker基础 — 33、Docker数据卷容器的说明与共享数据原理

    目录 1.数据卷容器的说明 2.数据卷容器共享数据原理 3.总结 4.练习:MySQL实现数据共享 1.数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现 ...

  6. 《前端运维》五、k8s--1安装与基本配置

    一.k8s基础概念与安装 k8s,即kubernetes是用于自动部署,扩展和管理容器化应用程序的开源系统.详细的描述就不多说了,官网有更详细的内容.简单来说,k8s,是一个可以操作多台机器调度部署镜 ...

  7. 教你识别一些sequence的相关问题

    摘要:通过一些自定义的视图或者查询语句,批量识别集群的sequence相关问题 本文分享自华为云社区<GaussDB(DWS)运维 -- sequence常见运维操作>,作者: 譡里个檔. ...

  8. 半吊子菜鸟学Web开发 -- PHP学习2-正则,cookie和session

    1正则表达式 1.1基本的匹配字符串 $p = '/apple/'; $str = "apple banna"; if (preg_match($p, $str)) { echo ...

  9. 团队vue基础镜像选择思考

    前端镜像可以考虑使用nginx或者openresty; 镜像 大小 说明 nginx:1.20.2-alpine 8.41 MB 最小最新版本 nginx:1.21.4 50.95 MB 最新版本 n ...

  10. kafka中的broker 是干什么的?

     broker 是消息的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一 ...