rocketmq-baiji / rocketmq

Mirror of Apache RocketMQ
Apache License 2.0
4 stars 20 forks source link

百技第8组 第二题 #8

Open xdCao opened 5 years ago

xdCao commented 5 years ago

题目:为RocketMQ提供非持久化的Broker

fix issure #1

Brief changelog

考虑基于内存缓存来做非持久化的broker,起初的想法是直接不要类似于commitLog的线性的物理结构,直接采用Map<String/topic/,List>的形式进行存储,这样方便直接根据topic查找数据,并且由于是在内存中,不需要进行逻辑队列-》物理队列的查找,但是由于接口的限制,需要实现很多偏移量相关的接口,因此一个线性的数据存储结构是必须的。所以现在使用一个List来存储消息实体,再使用一个Map<String,List>存储Topic和其中的消息的offset的对应关系,来记录消息数据的偏移量。

由于时间仓促,且对rocketMQ的了解不够,broker是一个牵涉东西比较复杂的模块,很多特性都没有去考虑,像HA,故障重试等等,只是实现了一个简单的数据存取。