消息中间件MQ的学习境界和路线

《深入理解Java类加载机制,再也不用死记硬背了》里我提到了对于一门语言的”会”的三个层次。本篇将以知识地图的形式展现学习消息中间件MQ各个层次要掌握的内容。

知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。所以本篇重点不是介绍某个知识点,而是介绍掌握消息中间件,需要看哪些文章的导航。

消息中间件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点左右,我都会更新文章,如果你没有收到,记得点开【编程一生】公众号找一下(^▽^)

Original: https://www.cnblogs.com/xiexj/p/16095395.html
Author: 编程一生
Title: 消息中间件MQ的学习境界和路线

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610859/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 16-ArrayList和LinkedList的区别

    1.1、作用 ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。它们可以对元素的增删改查进行操作 对于ArrayList,它在集合的…

    Linux 2023年6月7日
    096
  • 命名空间、作用域、LEGB法则、垃圾回收机制

    一、命名空间、作用域、LEGB法则、 1.命名空间和作用域 :   命名&#x7A7…

    Linux 2023年6月8日
    089
  • Docker安装mysqli扩展和gd扩展

    Docker安装mysqli扩展 官方php镜像 docker exec -it php-fpm bash cd /usr/local/bin ./docker-php-ext-i…

    Linux 2023年6月13日
    072
  • redis后台启动

    打开redis.conf文件 把daemonize设置为yes posted @2021-11-25 15:30 HongMaJu 阅读(73 ) 评论() 编辑 Original…

    Linux 2023年5月28日
    097
  • netstat 命令查看端口状态详解

    转载请注明出处: netstat 可以查看服务器当前端口列表及指定端口的连接状态等; -t : 指明显示TCP端口,t是TCP的首字母。 -u : 指明显示UDP端口,u是UDP的…

    Linux 2023年6月14日
    084
  • Java使用Redis删除指定前缀Key

    Java使用Redis删除指定前缀Key // 获取Redis中特定前缀 Set keys = stringRedisTemplate.keys("BLOG_SORT_B…

    Linux 2023年5月28日
    0100
  • 小白上手Linux系统安装Tomcat教程

    1.准备阶段: 要有JDK环境,在安装好JDK后再配置tomcat,JDK安装详情在我博客中可以看到。 3.导入 进入到Xshell输入在自己的文件中(cd /home/lzh)好…

    Linux 2023年6月13日
    0109
  • redis集群部署

    Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式…

    Linux 2023年6月7日
    0103
  • Linux系统查看hosts配置与dns域名配置

    ;gutter:true;方法1:for i incat /etc/hosts | grep -v ^$ | grep -v “127.0.0.1” | g…

    Linux 2023年6月13日
    091
  • FusionAccess桌面云安装(windows AD方法)

    创建FusionAccess虚拟机 选择自定义 默认兼容 选择稍后安装操作系统 选择Linux SUSE Linux 名字位置自己选择 选择最少4个处理器 选择最少8G内存 选择仅…

    Linux 2023年6月8日
    0109
  • Typora Ubuntu 安装

    官网方法 终端命令行安装 or use sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys BA300B77…

    Linux 2023年6月7日
    0102
  • Redis持久化原理 — RDB与AOF详细解释

    一、持久化的作用 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化Redis所有数据保持在内存中,对数据的更新将异步地保存…

    Linux 2023年5月28日
    074
  • LeetCode-443. 压缩字符串

    题目来源 题目详情 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追…

    Linux 2023年6月7日
    0116
  • POJ1861(Network)-Kruskal

    题目在这 Sample Input 4 6 1 2 1 1 3 1 1 4 2 2 3 1 3 4 1 2 4 1 Sample Output 1 4 1 2 1 3 2 3 3 …

    Linux 2023年6月7日
    092
  • 【学习笔记】week01

    1、按系列罗列Linux 的发行版,并描述不同发行版之间的联系与区别 (1) Slackware : l SUSE Linux 软件包齐全 (2) Debian : l ubunt…

    Linux 2023年5月27日
    083
  • Docker安装使用及私有仓库搭建

    1 概念 1.1 基本概念 Docker daemon​ 守护进程,运行在宿主机上,用户通过DockerClient客户端Docker命令与Docker daemon交互。Dock…

    Linux 2023年5月27日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球