前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RocketMQ 基础入门

RocketMQ 基础入门

作者头像
爬蜥
发布2022-03-09 17:18:15
6100
发布2022-03-09 17:18:15
举报

RocketMQ是一个统一消息引擎,轻量级的数据处理平台。通俗的讲,当你需要一个消息处理框架,可以考虑选它。

本文基本来自附录中所列参考文档,作为我的笔记,感兴趣的可以直接跳到参考文档,或者直接跳转github RocketMQ官方文档,略过本文

RocketMQ有那些特性

消息类型

  • 事务消息:应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。通过事务消息能达到分布式事务的最终一致性
  • 定时消息:消息发送出去后,不会被立即消费,而是等到指定的时间点才会消费
  • 延时消息:消息发送出去后,不会被立即消费,而是等到过了指定的一段时间(从发送开始经过固定的一段时间)后才消费
  • 顺序消息:先发布的消息一定会先被消费,支持全局顺序消息和分区顺序消息
    • 全局顺序消息:所有消息按照严格的先入先出的顺序发布和消费
    • 分区顺序消息:同一个分区的消息严格按照先入先出的顺序发布和消费,分区字段是Sharding Key
  • 普通消息:无上述消息特性

消息特性:

  • 消息至少投递一次(At least once):消费者消费完成后,才会返回ACK,如果没有消费一定不会ACK
  • 消息重试:消费失败后,考虑到异常恢复起来需要一些时间,设置了多个重试的级别,每个重试级别都有与之对应的重新投递时延,重试次数越多投递延时越大
  • 消息过滤:消费者可以根据Tag进行消息过滤
  • 消息查询:消费遇到问题,可以通过Message ID、Message Key和Topic来查询消息
  • 消息回溯:能自定义时间或位点重新消费已经消费的消息或者丢弃堆积的消息
  • 流控:生产(流控后,不会尝试消息重投)或消费(降低拉取频率)达到瓶颈,都能进行流控
  • 死信队列:达到最大的重试次数后,如果还无法成功,此时不会立刻丢弃消息,而是送到死信队列,可以对死信队列的消息进行特定的处理

RocketMQ的架构与核心概念

概念

  • Message: 消息队列中消息传递的载体,生产和消费数据的最小单位
  • Message Id: 消息的全局唯一标识,唯一标识某条消息,由RocketMQ生成
  • Message Key: 消息的业务标识,有消息生产者设置,唯一标识某个业务逻辑
  • Topic:一类消息的集合,每个主题包含若干条消息,每个消息必须属于一个主题,且只能属于一个主题,是RocketMQ进行消息订阅的基本单位
  • Tag:用于同一Topic下区分不同类型的消息
  • Producer: 消息生产者
  • Producer Group: 同一类Producer的集合,他们发送同一类消息,且发送逻辑一致
  • Consumer: 消息发送者
  • Consumer Group: 同一类Consumer的集合,他们消费同一类消息,且消费逻辑一致
  • Group Id: Group的标识

架构

image.png
image.png
  • Producer:消息生产者,负责生产并发送消息
  • Consumer:消息消费者,负责接收并消费消息
  • NameServer:Topic路由注册消息,每个NameServer保存关于Broker集群的整个路由信息和用于客户端查询的队列信息
  • Broker:负责消息的存储、投递和查询以及保证服务的高可用
  • Broker Discovery: Producer发送消息时,需要知道发送给那个Broker投递,默认从本地缓存拿,如果缓存没有就从NameServer上重新拉取(Consumer类似)
  • Routing Info: Broker启动后,会将自己注册到NameServer,并每隔一段时向NameServer上报Topic路由信息

为什么选择RocketMQ

RocketMQ团队一开始使用的是ActiveMQ,但是随着队列、topic的增加,ActiveMQ IO模型达到了它的瓶颈,于是开始考虑kafka是否合适,但是,在低延时和高可用上,kafka并没有达到要求,因此决定研发新的RocketMQ。

原因阐述来自RocketMQ团队,一般来说希望对比”绝对公平、公正“,但是出自RocketMQ团队,也需要思考下是否带有”偏心“的色彩。

RocketMQ vs ActiveMQ vs Kafka

image.png
image.png

参考

RocketMQ github基本概念 RocketMQ github功能特性 RocketMQ github架构设计 RocketMQ github设计 阿里云-RocketMQ文档-名词解释 阿里云-RocketMQ文档-功能特性 Apache RocketMQ-为什么使用RocketMQ

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021/04/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RocketMQ有那些特性
  • RocketMQ的架构与核心概念
    • 概念
      • 架构
      • 为什么选择RocketMQ
      • 参考
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档