26、消息不丢失:生产者收到写入成功响应后消息一定不会丢失吗

你好,我是大明。今天我们来学习消息队列中的新主题——消息丢失。 和消息丢失相对应的概念叫做可靠消息,这两者基本上指的就是同一件事。在实践中,一旦遇到消息丢失的问题,是很难定位的。从理论上来说,要想理解消息丢失,就需要对生产者到消费者整个环节都有深刻地...

后端工程师的高阶面经

25、消息积压:业务突然增长,导致消息消费不过来怎么办

你好,我是大明。今天我们来学习消息队列中消息积压问题的解决办法。 我们说的消息积压是指消息生产速率大于消费速率,所以消息会在broker上存放着。消息积压可能会导致消息要等很久才会被消费,这对于一些业务来说损害很大。特别是一些对消息消费时效性有要求的...

后端工程师的高阶面经

24、消息顺序:保证消息有序,一个 topic 只能有一个 partition 吗

你好,我是大明。我们今天接着学习消息队列的新主题——有序消息。 在消息队列的相关的面试里面,有序消息和消息不丢失、消息重复消费是三个并列的面试热点,同时在实践中也很容易遇到要求使用有序消息的场景。但是大部分人在面试的时候,无法深入透彻地讨论这个问题。...

后端工程师的高阶面经

23、延迟消息:怎么在 Kafka 上支持延迟消息

你好,我是大明。今天我们来讨论一个在消息队列面试中非常热的话题——延迟消息。 延迟消息在 Kafka 面试里面是非常热门的,其他消息队列多少也会问,但是不如 Kafka 问得频繁。因为 Kafka 不支持延迟消息是大家都知道的。但是偏偏 Kafka ...

后端工程师的高阶面经

22、消息队列:消息队列可以用来解决什么问题

你好,我是大明。 从今天开始我们要学习一个新的主题——消息队列。一直以来,消息队列都是业界用于构建高并发、高可用系统的利器。即便是简单的业务开发,也可以通过消息队列的解耦、异步特性来提高性能和可用性。 消息队列和数据库、缓存并列为面试中最热门的三个中...

后端工程师的高阶面经

21、数据库综合应用:怎么保证数据库的高可用、高性能

你好,我是大明。 我很早就注意到,很多人在平时工作中就是设计一下表结构和索引。好一点的可能还会有一些查询优化的经验,也有少数人做了很多跟数据库有关的事情,但是没办法把它们系统组织起来,给面试官留下深刻印象。 现在我们有了前面几节课的基础之后,就可以把...

后端工程师的高阶面经

20、分库分表容量预估:分库分表的时候怎么计算需要多少个库多少个表

你好,我是大明。今天我们来聊一下如何分库分表中确定容量的问题。 在分库分表的面试中,基本上面试官都会问你,你究竟分了几个库分了几个表。这是因为面试官比较关注数据库的数据量问题,如果容量预估不准确,那么后续就需要扩容,而扩容是一个非常麻烦和棘手的事情。...

后端工程师的高阶面经

19、分库分表无分库分表键查询:你按照买家分库分表,那我卖家怎么查

你好,我是大明,今天我和你来聊一聊分库分表下的一种特殊的查询——无分库分表键查询。 在很多业务里面,分库分表键都是根据主要查询筛选出来的。那么就会有这样一个问题,那些不怎么重要的查询怎么解决呢? 比如说大多数电商的订单都是按照买家 ID 来进行分库分...

后端工程师的高阶面经

18、分布式事务:如何同时保证分库分表、ACID和高性能

你好,我是大明。 我们在把单库拆分成为分库分表之后,一个巨大的挑战就是本地事务变成了分布式事务。事实上,即便没有分库分表,在微服务架构之下我们也还是会面临分布式事务的问题。所以,在学习了微服务架构又学习了分库分表之后,是时候深入讨论一下分布式事务了。...

后端工程师的高阶面经

17、分库分表分页查询:为什么你的分页查询又慢又耗费内存

你好,我是大明。今天我们来聊一聊分库分表分页查询。 在实践中,分页是分库分表之后肯定要解决的问题,如果解决方案没选好,那么很容易出现性能问题。分页的解决方案很多,不过能够在面试中系统地将所有的方案都说出来的候选人可以说是少之又少。所以你只需要记住这节...

后端工程师的高阶面经