面试一线互联网大厂?那这道题目你必须得会!( 三 )

那么这里要考虑的第一个点,就是消息中间件自己本身的核心数据结构。

也就是说,如果有人生产了消息,你作为一个消息中间件,应该如何存储这个数据?

你会存储在内存里呢?还是存储在磁盘文件里呢?或者两者都同时共存?

可以先允许数据写入内存作为一个缓冲,然后每隔几秒再把数据刷入磁盘文件中?数据刷入磁盘文件之后,这个磁盘文件有多少个?

总不能搞一个磁盘文件来存放所有的数据吧?那么按照什么样的规则对磁盘文件做一个拆分?

数据写入磁盘文件之后,是不是要有相应的一些Metadata来标识这个数据的具体信息?比如这个数据的Offset偏移量,或者是一个内置的唯一ID?

接着现在数据是被存储在磁盘文件里了,那么此时你如何把数据投递到下游的消费者里去呢?

你的消费模型是什么样的?比如说一个Queue里的数据,是会均匀分配给消费者的各个实例呢?还是会怎么做呢?

推荐阅读