RocketMQ的设计理念和目标

设计理念

​ RocketMQ基于主题的发布和订阅模式。其核心功能包括消息发送、消息存储(Broker)、消息消费。性能体现在三个方面:

  1. NameServer设计简单,摒弃Zookeeper当注册中心。从实际需求出发,Topic路由信息无需在集群之间保持强一致,基于此,RocketMQ的NameServer集群之间互不通信,降低NameServer的复杂度,网络要求也降低不少,性能相比ZooKeeper提升很大
  2. 高效的IO存储机制。RocketMQ的消息存储文件大小固定(方便引入内存映射机制,因为内存映射大小不能超过1.5G,RocketMQ单个存储文件大小为1G),所有消息基于顺序写(磁盘顺序写效率很高),同时引入消息消费队列文件和索引文件(加快查找)。
  3. 容忍设计缺陷。中间件的难题:如何保证消息一定能被消费者消费,并且保证只消费一次。RocketMQ只能保证消息被消费者消费,不能保证只被消费一次。这样简化了消息中间件的内核。消息重复问题由消费者在消费消息时实现幂等

设计目标

RocketMQ需要解决一下问题:

  1. 架构模式

    RocketMQ采用发布订阅模式,基本组件:消息发送者,消息服务器(消息存储),消息消费,路由发现

  2. 顺序消息

    顺序消息,指消息消费者按照消息到达消息存储服务器的顺序消费,RocketMQ可以严格保证消息有序

  3. 消息过滤

    消息过滤,指消息消费时,消息消费者可以对同一主题下的消息按照规则只消费自己感兴趣的消息。RocketMQ消息过滤支持在服务端和消费端的消息过滤机制

    1. 消息在Broker端过滤。Broker只将消息消费者感兴趣的消息发送消息消费者

    2. 消息在消息消费端过滤。过滤方式由消费者自定义,缺点是无用的消息会从Broker传输到消费端

  4. 消息存储

    核心实现是消息存储,两个维度考量:消息堆积能力和消息存储性能。引入消息文件过期机制和文件存储空间报警机制避免消息无限在消息存储服务器中累积。引入内存映射机制和顺序写提升消息存储性能

  5. 消息高可用性

    消息可靠性通常有以下几种情况:

    1)Broker正常关机

    2)Broker异常Crash

    3)OS Crash

    4)机器断电,但是能立即恢复供电

    5)机器无法开机

    6)磁盘设备损坏

    情况14的RocketMQ在同步刷盘机制下可以确保不丢失消息,在异步刷盘模式下,会丢失少量消息。清空56属于单点故障,一旦发生,该节点消息全部丢失,若开启异步复制,会丢失少量消息

  6. 消息到达(消费)低延迟

    RocketMQ在消息不发生堆积时,以长轮询模式实现准实时的消息推送模式

  7. 确保消息必须被消费一次

    RocketMQ通过消息确认机制(ACK)来确保消息至少被消费一次(由于ACK消息有可能丢失等原因,无法做到只被消费一次)

  8. 回溯消息

    回溯消息,指已经消费成功但需要重新消费的消息。RocketMQ支持按时间回溯消息,时间维度可精确到毫秒,可向前或向后回溯

  9. 消息堆积

    RocketMQ消息存储使用磁盘文件,在物理布局上为多个大小相等的文件组成逻辑文件组,可以无限循环使用。RocketMQ消息存储提供过期机制,默认保留3天

  10. 定时消息

    定时消息,指消息发送到Broker后,不能被消费端立即消费,要到特定的时间点或等待特定的时间后才能被消费。RocketMQ只支持特定延迟级别。若支持任意精度的定时消费,必须在消息服务端对消息进行排序,性能损耗很大

  11. 消息重试机制

    消息重试,指消息在消费时,如果发送异常,消息中间件支持消息重新投递,RocketMQ支持消息重试机制

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