敢在简历上写消息队列,这几个必须拿下!

1957bcc10a6fe97b54b5144a153d72fb.png

若有收获,请记得分享和转发哦

面试官在面试候选人时,如果发现候选人的简历中写了在项目中使用了 MQ 技术(如 Kafka、RabbitMQ、RocketMQ),基本都会抛出一个问题:在使用 MQ 的时候,怎么确保消息 100% 不丢失?

这个问题在实际工作中很常见,既能考察候选者对于 MQ 中间件技术的掌握程度,又能很好地区分候选人的能力水平。接下来,我们就从这个问题出发,探讨你应该掌握的基础知识和答题思路,以及延伸的面试考点。

案例背景

以京东系统为例,用户在购买商品时,通常会选择用京豆抵扣一部分的金额,在这个过程中,交易服务和京豆服务通过 MQ 消息队列进行通信。在下单时,交易服务发送“扣减账户 X 100 个京豆”的消息给 MQ 消息队列,而京豆服务则在消费端消费这条命令,实现真正的扣减操作。

0870837448a024c87b1a5a3d0a64979a.png

那在这个过程中你会遇到什么问题呢?

案例分析

41c182faa20e73c0c60e5e82fb0d7091.png

889fcbec9724e9a7c7a3857e1507abab.png

539303dbf35895ec63303e92fb420ba5.png

e4d28d73efdea38ac7cf07f9b36728f3.png

53081bbd8764393d6381c0906a456315.png

fb11168ecd9bf1952f3a5721f82b20e7.png

88d29d324ddd3530947833a1d8684821.png

a119d8fa8994696a991104997e469ff8.png

850e3973099fbed35edc6be186ad28e4.png

最后,如果是消费端的处理能力不足,可以通过水平扩容来提供消费端的并发处理能力,但这里有一个考点需要特别注意, 那就是在扩容消费者的实例数的同时,必须同步扩容主题 Topic 的分区数量,确保消费者的实例数和分区数相等。如果消费者的实例数超过了分区数,由于分区是单线程消费,所以这样的扩容就没有效果。

比如在 Kafka 中,一个 Topic 可以配置多个 Partition(分区),数据会被写入到多个分区中,但在消费的时候,Kafka 约定一个分区只能被一个消费者消费,Topic 的分区数量决定了消费的能力,所以,可以通过增加分区来提高消费者的处理能力。

ed3473e7aa5315482daa696f1d447225.png

  • 如何选型消息中间件?

  • 消息中间件中的队列模型与发布订阅模型的区别?

  • 为什么消息队列能实现高吞吐?

  • 序列化、传输协议,以及内存管理等问题

  • … >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值