开发者社区 > 云原生 > 云消息队列 > 正文

RocketMQ存储模型方式是什么?

RocketMQ存储模型方式是什么?

展开
收起
Aries- 2022-05-12 15:50:57 2132 0
3 条回答
写回答
取消 提交回答
  • 目前RocketMQ存储模型使用本地磁盘进行存储,数据写入为producer -> direct memory -> pagecache -> 磁盘,数据读取如果pagecache有数据则直接从pagecache读,否则需要先从磁盘加载到pagecache中。

    2022-05-12 17:23:47
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    1.cluster 集群模式 2.broadcast 广播模式

    2022-05-12 16:01:02
    赞同 展开评论 打赏
  • RocketMq在设计上遵循了消息文件+索引文件的方式,每种文件都只会追加写。按作用不同分为三类文件: 消息文件commitLog: 一个broker对应一组消息文件commitLog,所有topic的消息都存在commitLog中,写完一个继续写下一个

    索引文件consumeQueue: rocketMq中每个topic对应多个queue,每个queue对应一组索引文件consumeQueue,commitLog中的每条消息在consumeQueue中都对应一条索引数据,索引的key为消费位点,内容为commitLog中消息的位置信息。消费位点表示当前消费到第几条消息了,在rocketMq中,消费者都是按消费位点来broker上拉取消息的,比如consumer1,消费topic1下的queue2中的消息,开始消费时,位点为1,consumer1每消费完一条消息,位点就加1,根据这个递增的位点,就可以拉取到queue2中对应所有消息

    索引文件index: 除了满足正常消费的消息索引功能外,还需要满足根据某些关键字查询消息的功能,为了保证查询速度,索引文件是少不了的。这些关键字对应的索引就存在index文件中,一个broker对应一组index文件。rocketMq提供了根据消息msgId、消息key来查询消息的功能,对应的,msgId以及指定的消息key就会被索引,其中msgId是自动生成的,肯定有的,消息key是producer发送消息前设置的,可以设置一组key,每个key都会被索引,不设置就没有

    2022-05-12 16:01:02
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载