当面试官问为什么选择 Kafka/RabbitMQ/RocketMQ 时,他到底想问什么?

62 天前
 a1oyss0925

今天刚面了一家公司,因为业务中有用到 Kafka ,所以就问了为什么使用这个,与其它中间件横向对比有了解吗。

于是我就从吞吐量、延迟、社区活跃度、开发语言之类的地方简单对比了下,然后说剩下的原因就是因为公司是这个技术栈,正好用来接收上游业务消息,所以选择 Kafka 。

接着对方就结束了这个问题,没有继续往下问,我总感觉他想知道的不是这个,亦或者说这个答案并不充分(我自己其实也有点这么感觉,感觉应该结合下业务之类的)。 如果是想考你技术选型的话,大伙遇到这种问题一般会怎么答

5459 次点击
所在节点    程序员
43 条回复
mooyo
62 天前
他只是随便问问你对 kafka 的看法而已,你别想太多。
yichya
62 天前
一般来说这种横向对比基本上就是找个切入点吧,看下对某个组件是否熟悉,熟悉就接着问,不熟悉就下个话题了。

主要是一问一个不知道也挺浪费时间的。。。
tyrantZhao
61 天前
这个是小兵能选择的么?
skull
61 天前
他只是随便问问你对 kafka 的看法而已,你别想太多。
v2taylor
61 天前
多数公司实际上用哪个都一样,没必要想太多,哈哈
Rust2015
61 天前
仅仅是从侧面了解你一下
8355
61 天前
我来解释一下吧,这个题属于答不出来没啥,答出来有惊喜
最核心的区别
Kafka 是磁盘存储 消息延迟相对高 但可以承受大量的消息囤积 吞吐量超大 并且支持批量处理
通常应用于大数据/写日志/前端埋点上报等等对消费延迟不敏感但量大的业务,更适合一般业务。

RabbitMQ 是内存存储 延迟极低 因为内存容量问题不能承受大量消息囤积,适合实时性高的快速消费业务
通常应用于订单流转/广告上报,必须要开启足够多的冗余消费者还要保证消费的快速不阻塞,对监控要求极高,打满就挂了,更适合高实时性的分发类业务还可以 exchange 由一个队列分发到 n 个队列不同微服务分别消费。
lpe234
61 天前
其实就是简单的了解一下。比如我大多数都在使用 RabbitMQ ,很少使用 Kafka 。我的回答是我对 RabbitMQ 比较熟,虽然语言是 Erlang ,吞吐量不如 Kafka 等,但我对 RabbitMQ 比较熟,出了问题我基本能处理,而且业务场景也没有非要使用其他 MQ 的需求、或者说 RabbitMQ 不适合的场景。然后再说一些自己对其他 MQ 的理解,优缺点等等。说白了,就是看你在工作中有没有思考过,还是只是一个单纯闷头干活的人。
ChenKeLiang
61 天前
就是面试题库而已
a1oyss0925
61 天前
@skull 有时候就感觉这种问题怎么答都不对,又不能说公司让用什么我用什么
@v2taylor 应该是这样,毕竟选型又不是我选
a1oyss0925
61 天前
@8355 大哥牛逼,我再按照这个思路理理
a1oyss0925
61 天前
@lpe234 感觉这么说也可以,就能让人知道你思考了
adoal
61 天前
俗话说,没有既要又要还要……同类产品的选型,一定是评估各自的实际优缺点,选择跟自己业务最关心的长处切合的产品,再通过应用开发时的架构设计来规避掉它的缺点。所以,如果面试官自己都用过或者有都用过的人给准备材料的话,是可以从回答中看出应聘者是背八股还是真的有经验。比如消息时效性、有序性、消息回溯、死信处理等,不同产品的侧重点不一样,有的支持这个特性好,有的支持那个特性好,就需要根据自己的需要做选择以及通过应用编程闭坑。
lolizeppelin
61 天前
rabbitmq 最初是金融系统用的,着重于确保消息到达,由于设计得早,没那么分布式,有完整 ampq 协议实现

Kafka 最初是用来退数据流的,着重效率,允许少量丢失,不支持 ampq 协议

随着版本发展,Kafka 确达功能比较完善了,但是依旧不支持 ampq

rabbitmq 性能虽然提升了不少,但是整体架构不那么分布式,而且着重确达,所以性能还是和 kafka 有差距,不是和拿来做日志流的消息总线
codegenerator
61 天前
就是看你是对技术仅仅是使用层面,还是你深入理解底层原理
从你的回答显然只是会使用的层次,而公司希望是对使用的技术全面掌握底层原理
如果你不仅深入掌握每个 mq 的底层原理,而且还能据此分析每个 mq 的各种使用场景的优缺点
从而进行技术选型,那么这个问题你就能拿满分
8355
61 天前
@a1oyss0925 #11 kafka 上了 serverless 版本真的屌的飞起 最低配一个小时推几十亿真的洒洒水
zyqbit
61 天前
可以关注下 Pulsar
a1oyss0925
61 天前
@codegenerator 对,其实我就是想答第二种,怎么根据业务场景进行技术选型,无奈知识储备不够
encro
61 天前
@codegenerator
@a1oyss0925

是 15 楼的意思。。。

这属于开放性问题,能找出真正优秀的人。

这种人就是---基础牢固,经验丰富,善刨根究底,知其然并知其所以然,是不可多得的人才。
rqxiao
61 天前
@8355 RabbitMQ 一般不也是会开启队列持久化吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1081344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX