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

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

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

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

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

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

其实一个mq肯定是很复杂的,其实这是个开放题,就是看看你有没有从架构角度整体构思和设计的思维以及能力。

如果你还不清楚,请参考前面几篇
消息队列的用途、优缺点、技术选型
如何保证消息队列的高可用
如何保证消息不重复消费
如何防止数据队列数据丢失
如何保证消息按顺序执行
消息积压在消息队列里怎么办

最新文章

  1. Sql Server系列:存储过程
  2. ms sql server 在abator生成的 insert 无法获取插入 id 的原因
  3. PowerDesigner 业务处理模型( BPM ) 说明 及Enterprise Architect使用教程
  4. python之参数
  5. JAVA HttpsURLConnection 忽略对SSL valid 的验证
  6. Makefile编程
  7. Learning JavaScript Design Patterns The Singleton Pattern
  8. hdu 5424 Rikka with Graph II(dfs+哈密顿路径)
  9. 搜索(BFS)
  10. EasyUI - NumberSpinner 组件
  11. 第七章——DMVs和DMFs(3)——用DMV和DMF监控TempDB
  12. 第4章2节《MonkeyRunner源码剖析》ADB协议及服务: ADB服务SERVICES.TXT翻译参考(原创)
  13. 工程师倾情奉献-Win7 ISO 精简操作说明
  14. 3A - Holding Bin-Laden Captive!
  15. 关于CAN总线的被动错误标志的问题?
  16. 如何用Delphi开发网游外挂
  17. 在 .NET Core项目中使用UEditor图片、文件上传服务
  18. cookie带来的致命危险
  19. Python 关于数组矩阵变换函数numpy.nonzero(),numpy.multiply()用法
  20. 设计模式:备忘录(Memento)模式

热门文章

  1. 【SpringBoot】转载 springboot使用thymeleaf完成数据的页面展示
  2. ClipDrawable
  3. 配置WEB错误页面
  4. JS_&&||
  5. iOS-自定义导航控制器
  6. InfluxDB入门教程
  7. utgard OPC 主要功能简介
  8. QFramework 使用指南 2020 (四):脚本生成(2)ViewController 与 ViewController 嵌套绑定
  9. beSTORM之网络协议Fuzz入门教程
  10. 01.04 linux命令(2