【面试官】你说说Kafka是怎么保证消息可靠性的?
- 面试官:知道Kafka高水位吗?
- 面试官:你说说Kafka是怎么保证消息可靠性的?
- 面试官:还有呢?
- 面试官:那要是Kafka消费堆积了你怎么处理?
- 面试官:知道Kafka控制器吧?
大家好,我是南哥。
一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。
文章目录
- Kafka高水位
- Kafka消息可靠性
- 消息存储可靠性
- 生产者消费者可靠性
- 消费堆积问题
- Kafka控制器
1. Kafka高水位
面试官:知道Kafka高水位吗?
我们都知道Kafka消息保存在首领分区和分区副本中,Kafka要保证即使从分区副本读取消息也只会读取已提交的消息。Kafka的高水位就是为了这个目标而开发出来的。
如果大家对消息已提交的概念不清楚的话,可以看下以下的解释。
Kafka的消息只有在所有分区副本都同步该消息后,才算是已提交的消息
在分区复制的过程中,首领分区会在发送的数据里加入当前高水位。当前高水位就是复制偏移量,记录了当前已提交消息的最大偏移量。而分区副本就可以根据首领分区副本提供的高水位,来避免未提交的消息被消费者消费。
2. Kafka消息可靠性
2.1 消息存储可靠性
面试官:你说说Kafka是怎么保证消息可靠性的?
大家在回答面试官问题前可以思考下,可靠性的含义是什么?
在业务系统中,消息的不丢失是最重要的,数据即是金钱。如果把客户的一条支付消息丢失,而这条支付信息的涉及的金额不菲,想想对公司的损失有多大。所以可靠性意味着对消息的存储和保护。
Kafka在这方面采用了复制机制和分区多副本架构来作为消息可靠性的核心。
(1)分区多副本架构。
Kafka的所有主题被分为了多个分区存储在多个Broker里,而每个分区可以有多个副本。例如有4个Broker节点,Broker1存储了分区首领副本,而Broker2、Broker3可以存储其分区副本。
Kafka对消息的存储有多个分区副本来支持,可以避免单点问题导致数据丢失找不回来的情况。
(2)复制机制。
在通常情况下消费者都是从里读取消息,同
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力