构建一个属于自己的MQ

引言

从最近一份工作以来,一直从事MQ相关工作,先后投入到了pulsar与kafka的研究中已有一年多时间。“服务好周边业务团队”是中间件团队的宗旨,我也在消息中间件方面一直致力于帮助周边业务团队更好的使用pulsar与kafka服务,所以对这两个消息中间件的底层有一定的了解。最近突然有想法能不能自己实现一个包含了pulsar与kafka特性的MQ,遂有了此系列文章。

目标

存算分离,分布式,高可用,高性能。

我们希望像pulsar一样,计算与存储分离,这是设计的第一原则。其次再考虑分布式部署,高可用和高性能的优化。

从何处发力

  • 计算层 自己实现
  • 存储层 自己实现
  • 协调层 使用ETCD实现

我们的焦点需要关注在计算层和存储层上。存储层用来存储消息内容,计算层用来做主题,订阅生产消费等逻辑处理。协调服务使用etcd实现,为何择用etcd作为协调服务,理由是etcd是属于go语言生态的,而且足够稳定,我们会将整个元数据信息存放在etcd中。

项目定义

项目名:bulk , 顾名思义 -- 巨量写。

存储层设计

计算层设计

...挖坑待填