论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
物联网
›
物联网
›
RocketMQ 的先容及核心概念讲解
RocketMQ 的先容及核心概念讲解
悠扬随风
金牌会员
|
2024-10-15 11:40:11
|
显示全部楼层
|
阅读模式
楼主
主题
658
|
帖子
658
|
积分
1974
RocketMQ 是什么?
RocketMQ 是一个低延时、高可靠、可伸缩、易于使用的分布式消息中间件,是由阿⾥巴巴开源的消息中间件(使用 Java 语言编写的),2016年11月,阿里巴巴向 Apache 软件基金会捐赠了 RlocketMQ,2017年9月,Apache 公布 RocketMQ 孵化成为 Apache 顶级项目(TLP)成为国内首个互联网中间件在 Apache 上的顶级项目,RocketMQ 具有高吞吐、低耽误、海量消息堆积等优点,同时提供顺序消息、事务消息、定时消息、消息重试等功能,非常适合在电商、金融等范畴使用。
什么是消息队列?
消息队列是一种用于在分布式体系中进行通信的技术,它是一种存储和转发消息的中间件,可以用于将应用步伐之间的通信解耦,从而实现高效的异步通信,消息队列允许发送者将消息发送到队列中,而接收者则可以从队列中获取消息并进行处理,这种方式可以资助体系实现高可用性、高性能、松耦合和可伸缩性,消息队列通常包罗生产者(发送消息的应用步伐)、消费者(接收消息的应用步伐)和队列(存储消息的缓冲区),常见的消息队列有 Kafka、RocketMQ、RabbitMQ、Redis 等。
消息队列的使用场景
消息队列在项目中的使用场景主要用于,异步、削峰、解耦。
异步:异步处理,异步调用,好比用户注册成功后发送注册成功的短信,就可以使用 MQ 异步来发送。
削峰:用于高并发哀求场景,消除高并发场景的峰值流量,让哀求在 MQ 中排队执行。
解耦:服务解耦,服务与服务之间的 RPC 调用是同步的,调用方必须等候服务提供方响应结果后才能继承执行业务,使用 MQ 后服务间的通讯是异步的,服务之间没有直接调用关系,让服务解耦了。
RocketMQ 的核心概念?
Producer:消息生产者,一般是业务体系来负担这个角色,生产者会把业务体系产生的消息发送到 Broker 服务器。
Broker:消息中转服务器,负责存储和准发消息,RockerMQ 支持多个 Broker 构建成集群,每个 Broker 都有独立的存储空间和消息队列。
Consumer:消息消费者,负责从 Broker 中拉取消息消费,从用户的角度 RockerMQ 提供了两种消费模式,分别是推动消费和拉取消费。
NameServer:担任路由消息的提供者,负责维护 Broker 元数据信息,包罗 Broker 地址、Topic、队列 Queue,Producer 和 Consumer 在启动时候需要毗连到 NameServer 获取元数据信息,NameServer 以 HashMap 的方式来存储元数据信息。
Topic:消息主题,是消息的逻辑区分单位,Producer 将消息发送给 Topic,Consumer 从指定的 Topic 中消费消息,一个 Producer 可以发送消息给一个或者多个 Topic,一个 Cousumer 可以消费一个或者多个 Topic。
Message Queue:消息队列,真正存储消息的地方,可以明白为 Topic 的分区,一个 Topic 可以有多个 Queue,每个 Queue 都是独立的存储单元,Producer 发送的消息会被存储到对应的 Queue 中,Consumer 从指定的 Queue 中消费消息,Message Queue 有点雷同 Kafka 中的 Partition。
RocketMQ 组成简图
了解了 RocketMQ 核心概念后,我们来输出一个 RicketMQ 的组成简图,如下:
RocketMQ 的使用场景
削峰填谷:例如电商常用的秒杀场景,瞬时流量较大,大概导致体系瓦解,使用 RocketMQ 可以将这些瞬时流量进行平滑处理,提升体系的稳定性。
异步解耦:多个体系间的交互如果使用 HTTP 调用会是强耦合的关系,部分业务使用 RocketMQ 解耦,可以降低体系的耦合度,也可以对核心业务起到一定的掩护作用。
顺序执行:业务中有较多的顺序执行的场景,例如订单的创建、付出、发货等流程,RocketMQ 提供了顺序消息,来保证这些业务的顺序执行。
分布式事务场景:对于一些跨库事务,数据一致性及及时性要就没有非常高的时候,可以使用 RocketMQ 实现分布式事务,这样即可以保证数据的一致性,又可以实现体系间的解耦。
RocketMQ 的工作流程
启动 NameServer,它会等候 Broker 来注册,等候 Producer、Cousumer 获取元数据信息。
启动 Broker,Broker 会自动和 NameServer 建立毗连,并发送心跳包到 NameServer,心跳包中包含当前 Broker 的 IP 、Port、Topic 以及 Topic 和 Broker 之间的关系。
启动 Producer,Producer 会随机的和 NameServer 集群中的一台建立长毗连,并从 NameServer 中获取当前发送的 Topic 的所有 Broker 地址,然后从 Topic 的队列列表中随机选择一个队列,与队列所在的 Broker 建立长毗连完成消息发送。
Broker 接受到 Producer 发送的消息后,如果设置的是同步复制(还有异步复制模式),Broker Master 会先将消息复制 Broker Slave 节点,然后才给 Producer 返回消息写入成功,如果设置的是同步刷盘模式,则还需要将消息写入磁盘后,才给 Producer 返回消息写入成功,如果配置的是异步同步或者异步刷盘,则 Broker Master 接受到消息后就会给 Broker 返回消息写入成功。
启动 Consumer,Consumer 会随机的和 NameServer 集群中的一台建立长毗连,并获取订阅信息,然后根据订阅信息和对应的 Broker 建立长毗连,获取消息完成消费。
总结:本篇简朴分享了 RocketMQ 的一些概念和使用场景,初步对 RocketMQ 有了一个简朴的认识,盼望可以资助到大家。
如有禁绝确的地方欢迎各位指出纠正。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
悠扬随风
金牌会员
这个人很懒什么都没写!
楼主热帖
IDEA: 如何导入项目模块 以及 将 Java ...
命题逻辑等值演算
【Web前端】HTML详解(上篇)
(8) PyQt 设计并实现【工厂扫码装箱系 ...
互联网官方协议标准(rfc5000) ...
Java Long类parseLong()方法具有什么功 ...
详解kubernetes五种暴露服务的方式 ...
王心凌再次爆火,为了防止收费,我连夜 ...
文盘Rust -- 把程序作为守护进程启动 ...
Java基础---数据类型
标签云
挺好的
服务器
快速回复
返回顶部
返回列表