V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a1oyss0925
V2EX  ›  程序员

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

  •  
  •   a1oyss0925 · 10 小时 4 分钟前 · 1577 次点击

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

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

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

    17 条回复    2024-10-18 11:10:59 +08:00
    mooyo
        1
    mooyo  
       9 小时 52 分钟前
    他只是随便问问你对 kafka 的看法而已,你别想太多。
    yichya
        2
    yichya  
       9 小时 30 分钟前
    一般来说这种横向对比基本上就是找个切入点吧,看下对某个组件是否熟悉,熟悉就接着问,不熟悉就下个话题了。

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

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

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

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

    rabbitmq 性能虽然提升了不少,但是整体架构不那么分布式,而且着重确达,所以性能还是和 kafka 有差距,不是和拿来做日志流的消息总线
    codegenerator
        15
    codegenerator  
       28 分钟前
    就是看你是对技术仅仅是使用层面,还是你深入理解底层原理
    从你的回答显然只是会使用的层次,而公司希望是对使用的技术全面掌握底层原理
    如果你不仅深入掌握每个 mq 的底层原理,而且还能据此分析每个 mq 的各种使用场景的优缺点
    从而进行技术选型,那么这个问题你就能拿满分
    8355
        16
    8355  
       18 分钟前
    @a1oyss0925 #11 kafka 上了 serverless 版本真的屌的飞起 最低配一个小时推几十亿真的洒洒水
    zyqbit
        17
    zyqbit  
       14 分钟前
    可以关注下 Pulsar
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5697 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:24 · PVG 11:24 · LAX 20:24 · JFK 23:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.