1 介绍

RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题、队列、消息、生产者、消费者、消费者分组以及订阅关系。以下是对这些核心技术的详细说明:

2 核心技术实现

2.1 主题(Topic)

1. 定义:主题是RocketMQ中消息传输和存储的顶层容器,用于标识同一类型业务逻辑的消息。它是一个逻辑概念,并非实际的消息容器。

2. 作用

  • 数据分类隔离:RocketMQ建议将不同业务类型的数据拆分到不同的主题中,以实现隔离存储和订阅。
  • 数据身份和权限管理:RocketMQ中的消息本身是匿名无身份的,同一分类的消息使用相同的主题来做身份识别和权限管理。

3. 名称:主题名称用于标识主题,且在集群内部全局唯一。

4. 队列列表:作为主题的组成单元,是消息存储的实际容器,一个主题内包含一个或多个队列,消息实际存储在主题的各队列内。

4. 消息类型:在创建主题时,可以指定主题中存放的消息类型,包括Normal(普通消息)、FIFO(顺序消息)、Delay(定时/延迟消息)、Transaction(事务消息)。

2.2 队列(MessageQueue)

1. 定义:队列是RocketMQ中消息传输和存储的实际容器,也是RocketMQ消息的最小存储单元。

2. 特点

  • RocketMQ中所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储。
  • 队列天然具备顺序性,即消息按照进入队列的顺序写入存储,同一队列间的消息天然存在顺序关系。
  • 消息在队列中的位置和消息之间的顺序通过位点(Offset)进行标记管理。

2.3 消息(Message)

1. 定义:消息是RocketMQ中最小的数据传输单元,生产者将需要发送的数据包装成消息发送给RocketMQ的服务端。

2. 特点

  • 不可变性:消息一旦产生,其内容即不可改变
  • 持久化:RocketMQ默认会对消息进行持久化,保存到服务端的存储文件中,以保证消息的可回溯性和系统故障场景下的可恢复性。

2.4 生产者(Producer)

1. 定义:生产者负责将消息发送到RocketMQ的指定主题和队列中。

2. 发送方式

  • 同步发送:有返回值,必须等待消息发送成功才会结束。
  • 异步发送:在发送消息后立即返回,同时异步接收传递过去的消息状态。
  • 单向发送:单方面发送消息,不需要等待任何回应。

2.5 消费者(Consumer)

1. 定义:消费者负责从RocketMQ中订阅并消费指定主题的消息。

2. 消费过程

  • 消费者先从Broker拉取消息到客户端,然后启动消费线程消费这些消息。
  • 消费者可以使用PullMessageService线程不断从Broker拉取消息,并使用ConsumeMessageService线程进行消费。

2.6 消费者分组(Consumer Group)

1. 定义:消费者分组是RocketMQ中用于管理消费者的一个概念,同一分组内的消费者共同分摊消息并进行消费。

2. 作用

  • 通过消费者分组,可以实现消息的负载均衡和容错处理。
  • RocketMQ要求同一个消费者分组下所有消费者的消费行为要保持一致。

2.7 订阅关系(Subscription)

1. 定义:订阅关系是指消费者分组与主题之间的关联关系,以及消费者订阅消息时的过滤规则。

2. 作用

  • 通过订阅关系,消费者可以指定要消费的主题和消息类型。
  • RocketMQ通过订阅关系来实现消息的过滤和分发。

3 总结

综上所述,RocketMQ的核心技术涉及多个核心概念,这些概念相互协作,共同实现了RocketMQ的高性能、高可用性和高可扩展性。

RocketMQ系列3:核心技术介绍的更多相关文章

  1. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights

    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights 既上一篇分享了中文字幕的摄像机介绍Cameras后,本篇分享一下第2个已完工的 ...

  2. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之摄像机介绍Cameras

    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之摄像机介绍Cameras 最近得到一些Unity官方视频教程,一看全是纯英文的讲解,没有任何字幕或者 ...

  3. WPF入门教程系列三——Application介绍(续)

    接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...

  4. .NET 4 并行(多核)编程系列之一入门介绍

    .NET 4 并行(多核)编程系列之一入门介绍 本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下:  1. 并行编程和多线程编程的区别.  ...

  5. Linux从用户层到内核层系列 - GNU系列之glibc介绍

    题记:本系列文章的目的是抛开书本从源代码和使用的角度分析Linux内核和相关源代码,byhankswang和你一起玩转linux开发 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswa ...

  6. SQL Server编程系列(1):SMO介绍

    原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己 ...

  7. Solidity教程系列1 - 类型介绍

    现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下,再加上代码事例讲解. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果 ...

  8. 智能合约语言 Solidity 教程系列5 - 数组介绍

    写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 本文前半部分是参考Solidity官方文档(当前最新版本: ...

  9. 【01】emmet系列之基础介绍

    [01]emmet系列之基础介绍 [02]emmet系列之HTML语法 [03]emmet系列之CSS语法 [04]emmet系列之编辑器 [05]emmet系列之各种缩写 相关网址 官网:http: ...

  10. asp.net core系列 39 Razor 介绍与详细示例

    原文:asp.net core系列 39 Razor 介绍与详细示例 一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor ...

随机推荐

  1. 为了更好的 Flutter | 2021 第二季度开发者调研

    自 Flutter 2 发布以后,诸多振奋人心的开发特性 也随之解锁,从 加速应用开发 到 流畅地开发多平台应用 都已经有了长足的进步.我们也从社区收集到了不少大家关心的问题,并进行了 解答.毫无疑问 ...

  2. PS安装插件提示无法加载扩展未正确签署 的解决办法

    PS安装插件提示无法加载扩展未正确签署解决方式 win系统: 1.打开"运行"窗口(点击电脑左下角"开始"菜单,从打开的菜单中依次点击"所有程序&qu ...

  3. android IO Prefetch源码分析

    I/O Prefetcher是高通本身提供的一套优化方案,可以用在Android手机App冷启动的时候.本文基于android Q 主要分libqti-iopd.vendor.qti.hardware ...

  4. 专场直播预约 | 邀您探讨KaiwuDB 离散制造业场景解决方案

    先导语 近日,KaiwuDB 携手山东重工集团有限公司(以下简称:山东重工)  重磅发布"离散制造业解决方案".该方案以 KaiwuDB 就地运算技术专利技术为底座,搭建了&quo ...

  5. web服务器静态资源下载

    1. 使用 Beego 实现静态文件下载 Beego 是一个强大的 Go Web 框架,提供了处理静态文件的功能.通过简单的配置,我们可以将本地文件夹作为静态资源目录,并为用户提供下载链接. 1.1 ...

  6. 5.29 杭州站云原生 Meetup,邀您观看线上同步直播

    5 月 15 日在上海组织的云原生 Meetup,除了现场火爆.人数爆满之外,同步进行的线上直播也同样受到了广大社区小伙伴的关注,在线观看直播人数足有千人之众. 为了能让更多的社区小伙伴能够参与到 M ...

  7. 某制造企业基于 KubeSphere 的云原生实践

    背景介绍 随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题: 大量服务部署在虚拟机上,资源预估和硬件浪费较大: 大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较 ...

  8. Fluent Operator v2.0 发布:Fluent Bit 新的部署方式——Fluent Bit Collector

    2019 年 1 月 21 日,KubeSphere 社区为了满足以云原生的方式管理 Fluent Bit 的需求开发了 FluentBit Operator.此后产品不断迭代,在 2021 年 8 ...

  9. KubeSphere v4 安装指南

    日前,KubeSphere v4 发布,相较于之前的版本,新版本在架构上有了颠覆性的变化.为了让社区的各位小伙伴能够丝滑的从旧版本过渡到新版本,我们特别推出本篇安装指南文章,以供参考. 关于 Kube ...

  10. k8s 中的 Gateway API 的背景和简介【k8s 系列之四】

    〇.Gateway API 的背景 第一阶段:Service 初始的 Kubernetes 内部服务向外暴露,使用的是自身的 LoadBlancer 和 NodePort 类型的 Service. 在 ...