JAVA面试题:你怎么设计一个消息队列?

博e百国际网上娱乐

前锋JAVA发展学院我想昨天分享

image.php?url=0MoyCiA0TT

1个面试问题

写一个消息队列,你如何设计架构,谈谈你的想法!

2测试中心分析

一般的面试官应该检查两件事:

(1)您是否对某个消息队列有了更深入的了解,或者从整体了解mq的架构原理

(2)看看你的设计能力,给你一个通用系统,消息队列系统,看看你是否可以从整体上把握整体架构设计,给出一些关键点

说实话,当人们普遍遇到类似的问题时,大多数人基本上都会摆脱他们,因为他们从未想过类似的问题。大多数人只是使用它们而从不考虑它们背后的东西。

经常被问到类似的问题,如果你要设计一个弹簧框架,你会怎么做?如果你要设计一个dubbo框架,你会怎么做?如果你要设计一个mybatis框架,你会怎么做?/P>

3详细解释

事实上,回答这些问题,说白了,不要求你看技术的源代码,至少你可能知道技术的基本原理,核心组件,基本架构,然后参考一些开源技术来设计一个系统。只是说出来

例如,这个消息队列,让我们从以下的角度考虑它

3.1支持可扩展性

如果需要在需要时快速扩展,可以提高吞吐量和容量。那你怎么做的?

设计一个分布式系统,参考kafka的设计理念,broker-topic-partition,在每个分区中放置一台机器,并保存一些数据。如果现在资源不够,简单,添加分区到主题,然后做数据迁移,增加机器,无法存储更多数据,提供更高的吞吐量?

3.2数据着陆

必须这样做,丢弃磁盘,以确保数据挂起时进程丢失。磁盘丢弃时如何跌落?按顺序写入,因此没有用于随机读取和写入磁盘的寻址开销。磁盘顺序读写的性能非常高。这是卡夫卡的想法。

3.3接下来,考虑你的mq的可用性

有关此问题,请参阅我们之前的可用性部分中介绍的kafka高可用性保证机制。多个副本 - 领导者 - 经纪人挂起了外部服务的连任领导人。

3.4支持数据0丢失

是的,请参阅我们之前说过的kafka数据零损失计划

事实上,mq肯定非常复杂。面试官问你这个问题。这实际上是个悬而未决的问题。他要看看你是否具有从架构角度进行概念化和设计的思考和能力。确实,这个问题可以抹去很多人,因为大多数人都不会考虑这些事情。

收集报告投诉

image.php?url=0MoyCiA0TT

1个面试问题

写一个消息队列,你如何设计架构,谈谈你的想法!

2测试中心分析

一般的面试官应该检查两件事:

(1)您是否对某个消息队列有了更深入的了解,或者从整体了解mq的架构原理

(2)看看你的设计能力,给你一个通用系统,消息队列系统,看看你是否可以从整体上把握整体架构设计,给出一些关键点

说实话,当人们普遍遇到类似的问题时,大多数人基本上都会摆脱他们,因为他们从未想过类似的问题。大多数人只是使用它们而从不考虑它们背后的东西。

经常被问到类似的问题,如果你要设计一个弹簧框架,你会怎么做?如果你要设计一个dubbo框架,你会怎么做?如果你要设计一个mybatis框架,你会怎么做?/P>

3详细解释

事实上,回答这些问题,说白了,不要求你看技术的源代码,至少你可能知道技术的基本原理,核心组件,基本架构,然后参考一些开源技术来设计一个系统。只是说出来

例如,这个消息队列,让我们从以下的角度考虑它

3.1支持可扩展性

如果需要在需要时快速扩展,可以提高吞吐量和容量。那你怎么做的?

设计一个分布式系统,参考kafka的设计理念,broker-topic-partition,在每个分区中放置一台机器,并保存一些数据。如果现在资源不够,简单,添加分区到主题,然后做数据迁移,增加机器,无法存储更多数据,提供更高的吞吐量?

3.2数据着陆

必须这样做,丢弃磁盘,以确保数据挂起时进程丢失。磁盘丢弃时如何跌落?按顺序写入,因此没有用于随机读取和写入磁盘的寻址开销。磁盘顺序读写的性能非常高。这是卡夫卡的想法。

3.3接下来,考虑你的mq的可用性

有关此问题,请参阅我们之前的可用性部分中介绍的kafka高可用性保证机制。多个副本 - 领导者 - 经纪人挂起了外部服务的连任领导人。

3.4支持数据0丢失

是的,请参阅我们之前说过的kafka数据零损失计划

事实上,mq肯定非常复杂。面试官问你这个问题。这实际上是个悬而未决的问题。他要看看你是否具有从架构角度进行概念化和设计的思考和能力。确实,这个问题可以抹去很多人,因为大多数人都不会考虑这些事情。