如果让你设计一个消息队列,该如何进行架构设计?

面试题

如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。

面试官心理分析

一般问这种开发性问题,主要考察两块:

  • 你有没有对一个消息队列做过较为深入的原理了解,有没有从整体架构上把握住消息队列的原理。
  • 看看你的设计能力,能不能从整体架构上,把握住消息队列设计的关键点。

说实话,问类似问题的时候,大部分人是懵逼的,因为平常都在埋头工作,很少有从整体架构上思考过类似的问题。

面试题剖析

其实这类问题,不是要求必须看过技术源码,但最起码要大概知道那个技术的基本原理,核心组成部分。参照开源项目,把大体上的架构组成说一下,比如:

  • 首先这个消息队列需要支持可伸缩性,在需要的时候进行快速扩容,可以参照Kafka的理念,broker->topic->partition,每个partition放一台机器,存放一部分的数据。如果现在资源不够了,就可以增加partition,然后数据迁移,就可以承载更多的数据了。
  • 其次消息需不需要做持久化,一般情况下为了追求可靠性就会进行数据持久化,需要写入到磁盘,采用顺序写的方式,这样就没有寻址开销了。
  • 然后就是消息队列的高可用性,具体参考Kafka的设计,多副本,然后有leader和follower,当leader挂掉的时候,进行选举。
  • 数据0丢失可以参考之前的方案。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值