RocketMQ菜鸟小结

日常工作中使用过RabbitMQ、RocketMQ、Kafka这几个常用的MQ,为了备忘,将RocketMQ相关资料上传这里。



关键概念:

Producer(生产者)


Consumer(消费者)


Producer Group(生产者组)

维护生产组

当某台producer宕机时,broker会向同组其他producer确认事务情况

Consumer Group(消费者组)

负责将consumer分组

根据此会制定消费方式

Broker

消费方式

广播消费(类似于 JMS pub/sub): 所有的consumergoup的所有consumer都会消费到同一条消息

集群消费(同consumergroup内类似于 JMS point-to-point):每个consumergroup都会有一个consumer消费到消息

NameSrv(域名服务)

管理多broker常用

维护broker路由

Topic(主题)

正常TOPIC:需要提前创建

重试队列 RETRY TOPIC:创建ConsumerGroup时自动创建

死信队列 DLQ(Dead Letter Queue) TOPIC:创建ConsumerGroup时自动创建

MessageQueue(消息队列)

可理解为一个不限长的Array,会定期移除过期(超时)的消息数据

topic下存储消息的offset单位(逻辑队列),也是发送的路径

设定topic的时候可以指定 写队列数与读队列数

通过offset概念来维护,offset是long型,理论百年不会溢出

了解kafka的可以按partition理解

Message(消息)

消息,使用MQ发送的消息内容,每次只会向一个Queue发送消息

MsgID,RocketMQ服务器生成

MsgKey,生产者生成

Tag,标签。在消息上的信息,用于隔离消息:隔离可以由消费者过滤,隔离也可以由RocketMQ服务过滤

顺序消息

可以通过业务hash ,将同hash的消息放入同队列,然后使用有序listener去消费



特性策略及方法


Message Priority(优先级)

RocketMQ不支持消息优先级

可以通过指定Broker/Queue的方式来做优先级隔离

Message Filter(过滤)

Broker过滤,通过配置subExpression

Consumer过滤,通过消费代码解析Tag过滤

Message Persistence(持久化)

持久化到MYSQL:Buffer扩展

KV存储系统,Buffer扩展

文件,Buffer扩展

内存镜像,镜像恢复

消息本身存储在内存buffer内

异步刷盘,JVM->PAGECACHE->刷盘

mmap+write(0拷贝),MappedByteBuffer(nio文件读写模型,直接映射到缓冲区pagecache),文件映射到内存上,减少了直接调用os的系统命令,进行从内核空间和用户空间的拷贝操作

Message Reliablity(消息可靠)

RocketMQ消息基本不丢。因此称其可靠。

不丢或少丢的情况:Broker正常关闭,Broker Crash,OS Crash,供电闪断等

非双写模式全丢的情况:无法开机,磁盘损坏等

Low Latency Messaging(低延迟)

RocketMQ使用长轮询pull,较低延迟的将消息获取到消费者服务

Repeat Message(消息重复)

At least Once(消息至少投递一次):Consumer只有消费成功才会ACK,但是不保证广播每个consumer都能收到消息

Exactly Only Once(消息仅一次):业务控制-不能重复生产;业务控制-不能重复消费;

                                                           RocketMQ不能严格保证不重复;当消息状态不可知时,会重复;网络问题;宕机问题等

Consume Again(消息回溯/重新消费)

RockerMQ可以按照时间回溯消费

Store(消息存储)

Consume Queue

~/store/consumequeue/${topic}/${queue}/${file},用于记录位置信息,定位commitlog内位置(offset记录)

Commit Log

消息内容的物理文件(mapped),通过Consume Queue的offset信息指定

config

    consumerOffset    

        consumerOffset.json

       offsetTable(标记所有消息消费offset的数据)

        key:topic@consumergroup

        通常集群会有效维护/广播会在本地再维护一个

    delayOffset

        存储延迟消息数据

        delayOffset.json

    subscriptionGroup

        存储所有消费组的配置信息

        subscriptionGroup.json

    topics

        存储所有的topic信息

        topics.json

    index

        索引结构维护

Send Message(消息发送)

同步、异步、单向



还有物理结构图,逻辑结构图,管理台说明。这些部分绘图需要一定时间,后续抽空补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359