消息队列面试 - 如何进行消息队列架构设计?

面试题

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

面试官心理分析

其实聊到这个问题,一般面试官要考察两块:

  • 你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个消息队列的架构原理。
  • 看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把握一下整体架构设计,给出一些关键点出来。

说实话,问类似问题的时候,大部分人基本都会蒙,因为平时从来没有思考过类似的问题,大多数人就是平时埋头用,从来不去思考背后的一些东西。类似的问题,比如,如果让你来设计一个 Spring 框架你会怎么做?如果让你来设计一个 Dubbo 框架你会怎么做?如果让你来设计一个 MyBatis 框架你会怎么做?

面试题剖析

其实回答这类问题,说白了,不求你看过那技术的源码,起码你要大概知道那个技术的基本原理、核心组成部分、基本架构构成,然后参照一些开源的技术把一个系统设计出来的思路说一下就好。

比如说这个消息队列系统,我们从以下几个角度来考虑一下:

  • 首先这个 mq 得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下 kafka 的设计理念,broker -> topic -> partition,每个 partition 放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给 topic 增加 partition,然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了?

  • 其次你得考虑一下这个 mq 的数据要不要落地磁盘吧?那肯定要了,落磁盘才能保证别进程挂了数据就丢了。那落磁盘的时候怎么落啊?顺序写,这样就没有磁盘随机读写的寻址开销,磁盘顺序读写的性能是很高的,这就是 kafka 的思路。

  • 其次你考虑一下你的 mq 的可用性啊?这个事儿,具体参考之前可用性那个环节讲解的 kafka 的高可用保障机制。多副本 -> leader & follower -> broker 挂了重新选举 leader 即可对外服务。

  • 能不能支持数据 0 丢失啊?可以的,参考我们之前说的那个 kafka 数据零丢失方案。

mq 肯定是很复杂的,面试官问你这个问题,其实是个开放题,他就是看看你有没有从架构角度整体构思和设计的思维以及能力。确实这个问题可以刷掉一大批人,因为大部分人平时不思考这些东西。

消息队列面试 - 如何进行消息队列架构设计?相关推荐

  1. 消息队列面试 - 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?

    消息队列面试 - 如何保证消息不被重复消费? 面试题 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 面试官心理分析 其实这是很常见的一个问题,这俩问题基本可以连起来问.既然是消费消息, ...

  2. 消息队列面试 - 如何解决消息队列的延时以及过期失效问题?

    消息队列面试 - 如何解决消息队列的延时以及过期失效问题? 面试题 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决? 面试官心理分析 你看 ...

  3. 消息队列面试 - 为什么使用消息队列,消息队列有什么优点和缺点?

    消息队列面试 - 为什么使用消息队列,消息队列有什么优点和缺点? 面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区 ...

  4. 消息队列面试 - 如何保证消息的顺序性?

    消息队列面试 - 如何保证消息的顺序性? 面试题 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的 ...

  5. 消息队列面试 - 如何保证消息的可靠性传输?

    消息队列面试 - 如何保证消息的可靠性传输? 面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条 ...

  6. 面试官:大型系统架构设计细节你知道多少??

    随着互联网经济的深度发展,传统的服务模式已难以满足商业需求.企业为了适应新的业务规模,不断在部署.管理.功能交付方面更新迭代技术,一时间大量技术各显神通--Zookeeper.Netty.Dubbo. ...

  7. 消息队列面试 - 如何保证消息队列的高可用?

    面试题 如何保证消息队列的高可用? 面试官心理分析 如果有人问到你 MQ 的知识,高可用是必问的.上一讲提到,MQ 会导致系统可用性降低.所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ ...

  8. 29W 字总结阿里 Java 高并发编程:案例 + 源码 + 面试 + 系统架构设计

    下半年的跳槽季已经开始,好多同学已经拿到了不错的 Offer,同时还有一些同学对于 Java 高并发编程还缺少一些深入的理解,不过不用慌,今天老师分享的这份 27W 字的阿里巴巴 Java 高并发编程 ...

  9. 自学架构设计?帮你总结了 4 个方法

    从编程思维到架构思维的升级,是工作 3.5 年的程序员遇到的第一个槛,特别是当你准备晋升考核时. 我有个哥们,技术和业务都很不错,腾讯 T2.3 升 T3.1,就卡在了架构设计这部分. 架构这个事儿, ...

最新文章

  1. windows在命令行中查看当前路径
  2. Leaflet中添加标记、折线、圆圈、多边形、弹窗显示点击处坐标
  3. C3P0 释放连接 的问题
  4. 计算机组成与结构PLA,计算机组成与结构.doc
  5. 2020计算机单招的大专,2020专科和单招的区别
  6. Nodejs学习(三)-安装nodejs supervisor,提高点效率吧。
  7. 检测air运行环境版本
  8. Google 5.5 亿美金投资了京东?
  9. 站长工具:天和流量王绿色版 下载
  10. struts2 在拦截器进行注入(依据Action是否实现自己定义接口)
  11. Dominant Indices
  12. numpy.angle角度制的取值
  13. 经典机器学习模型:朴素贝叶斯分类
  14. Notepad++实用插件整理(Json Viewer、Compare、Explorer、AnalysePlugin)
  15. SWD脱机下载器的简易实现(一)
  16. 举个栗子!Tableau 技巧(189):用拱形图 ARC chart 呈现数据分布
  17. 攻防世界- CRYPTO -练习区12题解
  18. 风格迁移相关论文阅读笔记
  19. 麒麟桌面操作系统V10 SP1 桌面操作系统软件商店无法打开
  20. pythoncharm中文版_Pycharm2020中文版下载

热门文章

  1. PHP下载CSS文件中的图片
  2. jquery 高亮插件 highlight
  3. Js Tween 实现
  4. 回溯子集树与排列树——装载问题旅行售货员问题(算法设计课题)
  5. Qemu-KVM基本工作原理分析
  6. ip地址的分类:A、B、C、D、E五类是如何划分的?
  7. leveldb——leveldb入门篇之Linux下编译配置和使用
  8. 【AI视野·今日Robot 机器人论文速览 第二期】Mon, 7 Jun 2021
  9. 【ECCV2020】接收论文列表part1
  10. 暂停停止继续播放 0201 winform