一、概述

RocketMQ作为一个apache的顶级项目,拥有将近16K的star,它稳定的系统及强悍的性能,无疑在国内已经成为了企业消息队列的首选。接下来的一段时间,鄙人准备出一系列文章,从源码出发,逐一剖析RocketMQ的架构设计原理

本文将仅做概念上的陈述

github地址

二、概念及模型

本文中部分概念描述搬运自github官网

RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。其他概念随着行文逐一展开。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片搬运自官网

2.1 消息生产者(Producer)

负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。RocketMQ提供多种发送方式,同步发送、异步发送、顺序发送、单向发送。同步和异步方式均需要Broker返回确认信息,单向发送不需要。

2.2 消息消费者(Consumer)

负责消费消息,一般是后台系统负责异步消费。一个消息消费者会从Broker服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。

2.3 服务器(Broker Server)

消息中转角色,负责存储消息、转发消息。代理服务器在RocketMQ系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。

2.3 主题(Topic)

表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。

三、部署架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片搬运自官网

RocketMQ各模块启动顺序如下:

  1. 控制中心 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心
  2. 服务端 Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关系
  3. 必要环节 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic
  4. 客户端1-生产消息 Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息
  5. 客户端2-消费消息 Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息

四、消息存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后文会逐一展开

RocketMQ架构原理解析(一):整体架构相关推荐

  1. android modem架构,Telephony解析之整体架构简介

    本文代码基于Android 9.0 Telephony概述 Android系统是主流的手机操作系统,手机在人们生活中的的存在最不可忽视的功能就是通信,Android系统中的的Telephony为此功能 ...

  2. 分布式架构原理解析常见问题解决

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 分布式架构原理解析常见问题解决 1. 分 ...

  3. Tomcat 架构原理解析到架构设计借鉴

    ‍ 点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...

  4. [跟我学中小企业架构部署]之一:整体架构设计

    环境定义: CentOS 5.4 64-bit 服务器8台 定义10.0.0.0/24为公网 10.0.10.0/24为内网 各服务器的作用: LB1: Hostname:lb1 ech0: 10.0 ...

  5. 【Tomcat 】Tomcat 架构原理解析到架构设计借鉴

    Tomcat 发展这么多年,已经比较成熟稳定.在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人』,难道说如今就没有必要深入学习它了么?学习它我们又 ...

  6. linux文件系统的总体架构,Linux NFS的整体架构与核心代码解析

    前面文章我们从应用层面对NFS进行了介绍,接下来的文章我们将进入实现层面.本文首先从整体上对Linux的NFS软件架构进行介绍,然后介绍代码与实际业务逻辑介绍一下NFS的处理流程. NFS文件系统的架 ...

  7. hbase major_compact 文件会变小吗_图解式学习:可能是最易懂的Hbase架构原理解析(二)...

    数据修改 小史:不过吕老师,我还有问题啊,我记得 HDFS 是不能随机修改文件的,只能追加,那么 HBase 里的数据是不是写了之后就不能改也不能删除呢? 吕老师:删除同样是追加一条版本最新的记录,只 ...

  8. 什么是底层架构_厉害!阿里技术专家发布1500多页计算机底层架构原理解析宝典|现代汽车|计算机|原理|操作系统|存储器...

    计算机被称为20世纪最伟大的发明之一 .1946年诞生的第一台电子计算机ENIAC,是一个每秒能运行5000次.重达30吨的庞然大物.如今计算机变得无处不在,以至于人们大大低估了它的复杂性一今天一 部 ...

  9. 【架构模式】程序整体架构分析

    Title: 程序整体架构分析 Date: 2020-9-18 Tags: 架构 设计模式 程序整体架构分析 在做软件架构设计时,根据不同的抽象层次可分为三种不同层次的模式: 架构模式(Archite ...

最新文章

  1. 3月25日 JavaScript
  2. iOS ffmpeg 之编译ffmpeg
  3. 【C语言】第二章 类型、运算符和表达式
  4. 32位操作系统,为什么最大支持4G存储空间,2的32次方 = 4294967296bit = 4G,这个怎么计算出来的,
  5. 神经网络为什么需要激活函数
  6. 手机号星号_word把个人信息中的手机号其中四位设成星号的操作步骤图解
  7. 请问重定向与请求转发有什么区别?
  8. 如何提取Mac软件的自带图标?
  9. [Github实战]双重认证2FA 如何 设置/更改[手把手][2022]
  10. Android手机投屏到macbook M1 - 开源软件scrcpy
  11. Lookup函数的使用方法介绍(含VLookup和HLookup)
  12. 计算机毕业设计springboot+vue基本微信小程序的校园二手商城的设计与实现
  13. 如何把自己的网站免费发布到互联网
  14. elementUI级联选择器(Cascader)回显问题和clearCheckedNodes无效的解决方法
  15. Excel +VBA +ADO+Access数据库分页显示
  16. jieba分词统计红楼梦出现名字前20名
  17. win7的远程桌面连接在哪
  18. linux命令行恢复回收站,Trash-Cli:Linux 上的命令行回收站工具
  19. 用产品思维设计API(三)——版本控制,没有你想的这么简单
  20. 在录音等情况下保持屏幕长亮

热门文章

  1. Mysql数据库MMM实现高可用架构
  2. 哥伦比亚大学 NLP 第三章(第二部分)
  3. 活久见!西电毕设门处理结果:只让肇事者延毕一年、取消保研
  4. Arduino基础之十一 74HC595的使用------控制1位数码管
  5. 对接淘宝天猫平台的第一篇
  6. C++习题:6-1 CCircle And CCylinder
  7. `英语` 2022/8/18
  8. 点云旋转平移(一)—基础知识介绍
  9. oracle简单查询
  10. rec删除xposed_刷机,twrp,安装xposed