• RocketMQ 核心原理解析


    前言

    相信无论是前端还是后端的同学,不管是在平常的自我充电、还是日常的工作中,对 RocketMQ、Kafka 等主流消息队列多多少少都有一定的了解。现在的服务端架构中,一个业务模块中的服务往往会根据一定维度拆分成多个服务。而消息队列大家可以理解为多个服务、系统之间沟通的通道,如下图所示:

    有了这个通道,系统 A 不再是直接与系统 B 交互,而是与消息队列交互。在异步场景下,通过消息队列这个通道交互,可以在产品侧获得更好的用户体验。在支持异步的同时,消息队列也能很好地支持系统间的解耦,而系统之间的松耦合能够给系统带来良好的扩展性、可维护性

    消息队列作为现在技术架构中不可或缺的一部分,其重要程度不言而喻,应用也相当广泛。也正是因为这样,各个大厂都在相继自研消息队列,例如最初来自 LinkedIn 的Kafka、来自阿里的RocketMQ、以及来自 Yahoo 的Pulsar。

    为什么选择 RocketMQ 呢?

    那面对如此多的消息队列,咱们为啥要选择 RocketMQ 呢?

    第一点,开发语言优势。

    RocketMQ 使用 Java 语言开发,比起使用 Erlang 开发的 RabbitMQ 来说,有着更容易上手的阅读体验和受众。在遇到 RocketMQ 较为底层的问题时,大部分熟悉 Java 的同学都可以深入阅读其源码,分析、排查问题,甚至可以在社区版的基础上进行二次开发

    第二点,丰富的高级特性。

    根据 RocketMQ 官方文档的列举,其高级特性达到了12 种,例如顺序消息、事务消息、消息过滤、定时消息等(这些特性小册都会讲解到)。RocketMQ 丰富的特性,能够为我们在复杂的业务场景下尽可能多地提供思路及解决方案。

    第三点,良好的商业前景。

    比如阿里,在其生产环境中已经部署了数百个RocketMQ 集群,上千个节点,如此大量地将 RocketMQ 应用于生产环境,足以说明 RocketMQ 是的确经得起残酷的生产环境考验的,并且能够针对线上环境复杂的需求场景提供相应的解决方案。

    RocketMQ 不仅仅解决了阿里的内部需求,同时还被搬到了阿里云上,作为一个商业化的产品对外提供服务。在阿里云的产品叫作“消息队列 RocketMQ 版”,自从 2016 年开始商业化到现在,RocketMQ 商业化版已经具有相当大的规模。良好的商业前景,也反向推动着 RocketMQ 在业界的普及,两者相辅相成、相得益彰。

    第四点,众多大厂背书。

    RocketMQ 现在被广泛应用于各个大厂的内部业务中,其诞生之地阿里自不必多说,历年来大家所熟悉的双十一促销,在阿里内部就是使用的 RocketMQ 来承载消息,面对如此庞大的流量洪峰,RocketMQ交出了一份令人满意的答卷。再比如,RocketMQ 也是阿里交易链路中的核心产品。交易链路本已是核心中的核心,而这个核心又将 RocketMQ 当作核心链路中的核心,足以见对 RocketMQ 的重视程度。

    同时,字节跳动内部不同的业务也都在大量地使用 RocketMQ,同样也是作为业务主流程中的核心组件,RocketMQ 在生产环境中保持着非常高的稳定性、可用性,非常良好地支撑了业务的运行与发展。

    一门技术,有大厂背书意味着什么?意味着,这个技术经历过严酷的生产环境考验,非常可靠,并且大概率可以找到你在开发中遇到各种问题的解决方案,以及形成了良性循环的发展模式。

    所以说,RocektMQ 有着不可多得的先发优势。

    小册设置思路和亮点

    看到这里可能有些同学就想吐槽了:“你说的没错,RocketMQ 的确好、有优势,我也想学啊,但究竟该怎么学?这种原理类的、涉及源码的看着就头大啊!”

    是啊,我们在不熟悉一个框架的情况下,就贸然深入到其业务代码中去阅读源码,看似思路很清晰、目的很明确,实则会深陷入代码实现的无限细节当中无法自拔。

    那本小册如何解决该问题呢?换句话说,本小册有哪些学习技巧和亮点呢?

    • 为了避免深陷细节,小册会针对某个特定的功能,拆分成不同的部分,循序渐进地讲解,咱们一步一个脚印地来。

    • 通过业务场景+全局观来高效学习。结合一条消息从生产、发送、存储,再到最后被消费,这个十分常见的业务场景,来带领大家从零开始、由浅入深地学习整个 RocketMQ 的架构原理。

    • 一图胜千言。 在讲解的过程中,每个步骤都会搭配一张图。毕竟人的大脑对于图形图像的记忆能力是远远高于其他载体的,在理解方面也同理。

    总之,为了让大家有“沉浸式”的学习体验,提升学习过程中的趣味性,本小册会以实际的生活场景“寄快递、收快递”为驱动,带领大家从实际的生活细节中体验、学习, 跟随一个快递包裹的视角 ,来探索整个 RocketMQ 的核心原理。

    本小册知识设置情况如下:

     

     

  • 相关阅读:
    年搜索量超 7 亿次背后:这款 APP 用火山引擎 DataTester 完成“数据驱动”
    第三十二节——组合式API计算属性+watch
    【React Router 6 快速上手一】重定向Navigate / useRoutes路由表 / 嵌套路由Outlet
    COLMAP中将旋转矩阵转为四元数的实现
    广工电工与电子技术实验报告-8路彩灯循环控制电路
    树莓派安装64位桌面版Ubuntu教程
    多目标优化算法合集
    基于遗传算法改进的BP神经网络图像分割,BP神经网络基本原理,遗传算法流程,
    Kubernetes云原生实战02 对节点磁盘进行分区挂载
    相似度系列-6:单维度方法:Evaluating Coherence in Dialogue Systems using Entailment
  • 原文地址:https://blog.csdn.net/m0_71777195/article/details/127727040