问题一:MetaQ存储机制是什么?
MetaQ存储机制是什么?
参考回答:
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的内容是通过异步刷盘的方式进行。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615061
问题二:在MetaQ中,消息的存放是如何分类的?
在MetaQ中,消息的存放是如何分类的?
参考回答:
在MetaQ中,消息的存放分为物理队列和逻辑队列。物理队列一般用commitlog来表示,而逻辑队列则一般用consumequeue来表示。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615063
问题三:MetaQ中的物理队列和逻辑队列分别是什么,它们各自的作用是什么?
MetaQ中的物理队列和逻辑队列分别是什么,它们各自的作用是什么?
参考回答:
物理队列在MetaQ中是指commitlog,所有发到broker上的信息都会按顺序写入这个物理队列中。物理队列由许多文件组成,当一个文件被写满时,会创建新的文件继续写入。逻辑队列,即consumequeue,是消费端拉取消息时所需的索引文件。MetaQ将每个Topic分为几个区,每个区对应一个消费队列,这些消费队列由索引文件组成,帮助消费端根据索引去物理队列中获取订阅的消息。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615064
问题四:CommitLog文件的命名和存储特性是怎样的?
CommitLog文件的命名和存储特性是怎样的?
参考回答:
CommitLog文件以offset的方式来命名,与Kafka中的partition命名类似。CommitLog以物理文件的方式存放,并且被本机器上所有的ConsumeQueue共享。在CommitLog中,一个消息的存储长度是不固定的,MetaQ采取了一些机制以支持顺序写和随机读。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615065
问题五:ConsumeQueue的内容是如何存储的,其刷盘方式是什么?
ConsumeQueue的内容是如何存储的,其刷盘方式是什么?
参考回答:
ConsumeQueue的内容也会被写到磁盘里进行持久存储,但是它的内容是通过异步刷盘的方式进行的,这意味着刷盘操作不会阻塞主线程,从而提高了系统的吞吐量。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615066