当前位置:首页 > 科技  > 软件

九个问答牢记 RocketMQ 架构

来源: 责编: 时间:2023-12-18 17:37:28 337观看
导读RocketMQ是Java兄弟们常用的消息中间件,虽说常用,但对于RocketMQ架构经常忘记。究其原因就l两点:忙于业务开发然后长时间不看则忘了、不理解架构设计的根本原因记不牢。本文用大白话描述架构设计过程,牢记RocketMQ架构。

RocketMQ是Java兄弟们常用的消息中间件,虽说常用,但对于RocketMQ架构经常忘记。究其原因就l两点:忙于业务开发然后长时间不看则忘了、不理解架构设计的根本原因记不牢。本文用大白话描述架构设计过程,牢记RocketMQ架构。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

一、架构的思考过程

首先,在记框架的原理和架构时,要先把握全局的脉络,在思考为什么这么设计,最后才是思考细节,这样才能记得牢。本文通过层层追问的方式,一步步解说RocketMQ架构设计的原因。wRj28资讯网——每日最新资讯28at.com

1、基本形态

(1) 如果你是RocketMQ的开发者,让你来设计一个消息中间件,你会设计哪些角色?wRj28资讯网——每日最新资讯28at.com

答:起码要设计3个角色:wRj28资讯网——每日最新资讯28at.com

  • 消息中转站:Broker,Broker是核心,负责:接受消息、存储消息、处理消费者的消费请求、备份容灾等。
  • 生产者:Producer,生产消息然后投递到Broker。
  • 消费者:Consumer,从Broker中消费消息。

wRj28资讯网——每日最新资讯28at.com

2.消息怎么存

(2) 有了基本形态后,我们知道,具体的消息肯定是存在Broker里,那消息在Broker里应该怎么存储呢?wRj28资讯网——每日最新资讯28at.com

答:这里借鉴实际生活中的案例,比如物流公司在发快递时,发往同一个城市的快递,肯定安排在一起,然后用同一批货车运往那个城市,这样整个物流体系运转是最高效的。这里就用到了聚类的方式,让相似的事物聚到一起。wRj28资讯网——每日最新资讯28at.com

同样的,在设计怎么存储消息时,也用到聚类的概念,我们把相同类型的消息,放到一个逻辑空间里,这个逻辑空间就是主题Topic。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

(3) 那Topic的内部又是什么结构呢?wRj28资讯网——每日最新资讯28at.com

答:Topic的内部肯定是一个个的消息对象,那这些消息对象是以什么数据结构存在一起的呢?先发的消息,尽量要保证先被消费到,这里就用到了先进先出的数据结构-队列,这就是消息队列MessageQueue。所以,Topic内部是由MessageQueue组成,消息队列内部存放着一个个的消息对象。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

3.引入集群

(4) 我们知道Broker是RocketMQ的核心,这么重要的核心挂了怎么办?wRj28资讯网——每日最新资讯28at.com

答:既然是RocketMQ的核心,肯定要保证高可用不能挂,所以RocketMQ 会部署多台 Broker 组成一个集群对外提供服务。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

4.再说消息怎么存

(5) RocketMQ为了保障高可用,会部署多台Broker组成集群,那么集群场景下有多台机器,Topic怎么存呢?wRj28资讯网——每日最新资讯28at.com

答:我们要学习毛主席的思想,“鸡蛋不能放在一个篮子里”。既然是要存大量的消息,又有多台Broker,为了分担单台机器性能压力、分担存储容量压力、保证数据容灾,所以将不同的Topic存储到不同的Broker里。wRj28资讯网——每日最新资讯28at.com

还是按照上面物流的例子说明,比如从北京发往南京的快递,肯定用同一批货车运送,快递少则用一辆货车,快递多则用多辆货车,快递被划分到了多个货车上。同样的,RocketMQ里的Topic也是分散存储在多台 Broker 上的,每台Broker上存储的消息内容是不同的。wRj28资讯网——每日最新资讯28at.com

(6) 如果不同的Topic存储在不同的Broker里,可能某个topic数据太大了,出现数据倾斜直接干爆某个Broker怎么办?wRj28资讯网——每日最新资讯28at.com

答:上面我们提到,Topic实际上是一个个队列的集合,那只需要将队列分散存储到不同的Broker上就行了。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

(7) 如果不同的Topic分散存储在不同的Broker里,还是有数据丢失的风险,只不过某个topic丢失的数据变小而已,这种情况的数据容灾备份怎么做呢?wRj28资讯网——每日最新资讯28at.com

答:这时候就会用到Broker的主-从架构,Broker按角色分为Master和Slave,主从之间会定期地进行数据同步。Master 负责响应客户端的读写请求、存储消息、处理消费者请求等,而 Slave 只负责同步 Master 的数据。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

5.说说NameServer

(8) Broker既然是集群,那生产者在投递消息时,总得知道有哪些Broker吧,总得知道要往哪个Broker里投递消息吧,这又要怎么做呢?wRj28资讯网——每日最新资讯28at.com

答:RocketMQ引入了NameServer的概念,NameServer相当于大管家,RocketMQ里的所有基础信息它都知道。NameServer 存储了RocketMQ 集群的元数据。NameServer 中存放的元数据主要有:wRj28资讯网——每日最新资讯28at.com

  • 集群里都有哪些Broker?
  • 有哪些生产者?
  • 有哪些消费者?
  • 集群里都有哪些 Topic?
  • 这些 Topic 的消息队列分别存在哪些 Broker 上?

(9) 那Nameserver如何知道这些消息呢?wRj28资讯网——每日最新资讯28at.com

答:类似古时候某个人去府里当差,当差之前要把自己的所有信息登记在册。同样的,Broker、Producer、Consumer在启动时也会将数据注册到 NameServer。wRj28资讯网——每日最新资讯28at.com

Broker 在启动时会将自己注册到 NameServer 上,通过心跳持续更新元数据。同样的,Producer、Consumer也会和NameServer建立连接、动态交互集群中的数据,这样即方便上报自己的信息和也方便获取集群里的其他信息。wRj28资讯网——每日最新资讯28at.com

wRj28资讯网——每日最新资讯28at.com

至此,RocketMQ的架构图已经成型,每一个部件这么设计的原因也很清晰。wRj28资讯网——每日最新资讯28at.com

二、总结

RocketMQ里的核心角色有4个:Broker、Producer、Consumer、NameServer,消息存储的核心对象有两个:Topic、MessageQueue。wRj28资讯网——每日最新资讯28at.com

为了保证数据不丢失和数据不倾斜,同一个Topic里的MessageQueue会分散存储在不同的Broker里。wRj28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-48755-0.html九个问答牢记 RocketMQ 架构

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C++17中的并行功能:提升性能的新利器

下一篇: Golang清晰代码指南

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • Java NIO内存映射文件:提高文件读写效率的优秀实践!

    Java的NIO库提供了内存映射文件的支持,它可以将文件映射到内存中,从而可以更快地读取和写入文件数据。本文将对Java内存映射文件进行详细的介绍和演示。内存映射文件概述内存
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 认真聊聊东方甄选:如何告别低垂的果实

    来源:山核桃作者:财经无忌爆火一年后,俞敏洪和他的东方甄选依旧是颇受外界关心的“网红”。7月5日至9日,为期5天的东方甄选“甘肃行”首次在自有App内直播,
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • OPPO Reno10 Pro英雄联盟定制礼盒公布:萨勒芬妮同款配色梦幻十足

    5月24日,OPPO推出了全新的OPPO Reno 10系列,包含OPPO Reno10、OPPO Reno10 Pro和OPPO Reno10 Pro+三款新机,全系标配了超光影长焦镜头,是迄今为止拍照
Top