开发者社区 问答 正文

MetaQ存储机制是什么?

MetaQ存储机制是什么?

展开
收起
三分钟热度的鱼 2024-04-18 14:32:14 67 分享 版权
1 条回答
写回答
取消 提交回答
  • MetaQ的消息存储方式和kafka的partition存放方式类似,在MetaQ中消息的存放分为物理队列和逻辑队列。物理队列:物理队列我们一般用commitlog来表示,在一个broker上面,所有发到broker上的信息都会按顺序写入物理队列中,物理队列又由许多文件组成,当一个文件被写满(默认大小为1G)时,则创建一个新的文件继续写入,文件以offset的方式来命名,与kafka中的partition命名类似。逻辑队列:逻辑队列我们一般用consumequeue来表示,在消息被写入物理队列之后,如果消费端想从broker拉取消息,就需要一个索引文件,MetaQ中将每个Topic分为了几个区,每个区对应了一个消费队列,不过这些消费队列只是由一个个索引文件组成。消费端在拉取消息的时候,只要知道自己订阅的Topic从nameserver获取broker地址建立连接之后,就能根据消费队列中的索引文件,去物理队列中获取订阅的消息。CommitLog以物理文件的方式存放,每台Broker上的CommitLog被本机器上所有的ConsumeQueue共享。在CommitLog中,一个消息的存储长度是不固定的,MetaQ中采取了一些机制,尽量往CommitLog中顺序写,但是可以支持随机读。ConsumeQueue的内容也会被写到磁盘里进行持久存储,但是ConsumeQueue的内容是通过异步刷盘的方式进行。image.png

    2024-04-18 14:48:30
    赞同 2 展开评论
问答分类:
问答地址: