关于面试:面经面试官如果让你设计一个高并发的消息中间件你会怎么做

24次阅读

共计 2171 个字符,预计需要花费 6 分钟才能阅读完成。

写在后面

很多小伙伴去大厂面试,简直都会遇到一些开放式的题目,这些开放式的题目没有固定的答案,然而它可能实实在在的体现面试者较为实在的零碎设计能力和技术功底。如果你答复的比拟完满,那么,通过这种开放式题目,就可能让你从泛滥的面试者中怀才不遇。明天,咱们就一起来聊聊,去大厂面试时,一个较为常见的开放式题目:如果让你设计一个高并发的消息中间件,你会怎么做?

消息中间件波及的知识点

要想设计一个具备高并发的消息中间件,那么首先就要理解下消息中间件波及哪些具体的知识点。通常,设计一个良好的消息中间件须要理解的知识点如下:

  • 生产者消费者模型。
  • 反对分布式架构。
  • 数据的高可用。
  • 音讯数据不失落。

接下来,咱们就针对消息中间件来别离谈谈这些技术点。

生产者消费者模型

置信很多小伙伴对于生产者和消费者模型都比拟理解了,简略的说:就是消息中间件可能使其余利用来生产音讯,也可能使其余利用来生产相应的音讯。

对于生产者和消费者模型,咱们须要思考的问题点就比拟多了。接下来,我就一步步来疏导大家进行思考。

首先,咱们来思考这样一个问题:如果生产者生产了音讯,那么消息中间件应该怎么存储相应的数据呢?存储在内存?存储在磁盘?还是同时存储在内存和磁盘中呢?

如果是将音讯数据同时存储在内存和磁盘中,咱们又该如何解决这些数据呢?是生产者将音讯投递到消息中间件之后,咱们就立即将数据写入磁盘?还是说数据先驻留到内存,而后每隔一段时间刷到磁盘上?如果是每隔一段时间刷到磁盘上,那咱们又要思考磁盘文件的切分问题,也就是说,须要将分成多少个磁盘文件?(总不能把所有的数据放到一个磁盘文件中吧)。如果是须要切分成多个磁盘文件,那切分的规定又是什么呢?

下面这些问题都是咱们在设计一个消息中间件时须要思考的问题。然而,这还只是一小部分问题。如果想在面试时怀才不遇,那就还须要持续往下看,还有一些重要的问题点须要留神。

如果文件依照肯定的规定切分到多个磁盘文件中了,那是不是还须要一些对于元数据的治理来标识数据的具体音讯(就像是 Hadoop 中的 NameNode 节点中存储着 DataNode 的元数据信息,NameNode 节点通过这些元数据信息就可能更好的治理 DataNode 节点)?这些元数据能够包含:音讯数据的偏移量、也能够是音讯数据的惟一 ID。

思考完数据的存储问题,咱们还须要思考的是:消息中间件是如何将数据投递到对应的消费者的?

在设计生产者和消费者时,还一个很重要的问题须要咱们思考:咱们在设计消息中间件时,采纳的生产模式是什么?会不会将数据平均的调配给消费者?还是会通过一些其余的规定将数据投递到消费者?

反对分布式架构

如果咱们设计的消息中间件,每天会承载 TB 级别的数据高并发和高吞吐量的写入操作。这里,咱们就须要思考将消息中间件设计成分布式架构。

在设计分布式架构时,咱们还须要思考将存储的比拟大的数据,做成分片存储,对数据进行分片等操作。

除了这些,咱们还须要思考另外一个外围问题:对于消息中间件来说,须要反对主动扩容操作。

还有就是否反对数据分片,如何实现数据分片的扩容和主动数据负载平衡迁徙。

数据的高可用

个别互联网利用的高可用,是通过本地堆内存,和一份数据在不同的服务器上都搞一个副原本实现的。此时,任何一个存储节点宕机,都不会影响整体的高可用。

音讯数据不失落

此时,咱们就须要提供手动 ACK 的机制,也就是说:当消费者真正生产音讯结束后,向消息中间件返回“解决实现”的标识,消息中间件删除相应的已解决的音讯。

然而,细化的话,这里,咱们就须要两套 ACK 机制:

  • 一种 ACK 对应的是生产端。如果始终没有接管到 ACK 音讯,则须要通过生产者来从新发送一条音讯来保障生产音讯胜利。
  • 另一种 ACK 对应的是生产端。一旦生产解决胜利一条音讯了,必须返回一个 ack 给消息中间件,而后消息中间件能力删除这条音讯。否则一旦消费者宕机,就必须重发这条音讯给其余的消费者实例,保障音讯肯定会被解决胜利。

明天,咱们没有聊具体的业务点,而是从整体上思考:如果实现一个消息中间件,须要咱们留神的各项知识点和专业技能!好了,明天就到这儿吧。咱们下期见!

重磅福利

微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,每天浏览超硬核技术干货,公众号内回复【PDF】有我筹备的一线大厂面试材料和我原创的超硬核 PDF 技术文档,以及我为大家精心筹备的多套简历模板(不断更新中),心愿大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过致力胜利进入到了心仪的公司,肯定不要懈怠放松,职场成长和新技术学习一样,逆水行舟。如果有幸咱们江湖再见!

另外,我开源的各个 PDF,后续我都会继续更新和保护,感激大家长期以来对冰河的反对!!

写在最初

如果你感觉冰河写的还不错,请微信搜寻并关注「冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者曾经通过浏览「 冰河技术 」微信公众号文章,吊打面试官,胜利跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样晋升本人的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术」微信公众号吧,每天更新超硬核技术干货,让你对如何晋升技术能力不再迷茫!

正文完
 0