面试题Kafka问题之Kafka保证系统的可用性如何解决

简介: 面试题Kafka问题之Kafka保证系统的可用性如何解决

问题一:Kafka如何保证系统的可用性?


Kafka如何保证系统的可用性?


参考回答:

Kafka通过多副本机制来保证系统的可用性。在创建Topic时,可以指定--replication-factor参数来设置副本数,例如设置为3表示每个分区都有3个副本。在Kafka中,只有Leader是负责读写的节点,Follower会定期从Leader上Pull数据以保持同步。ISR是Leader负责维护的与其保持同步的Replica列表。如果一个Follower落后太多,Leader会将它从ISR中移除。此外,通过设置acks=all,可以确保Leader在收到ISR中所有Replica的ACK后才向Producer发送ACK,从而进一步保证数据的可靠性和系统的可用性。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628393



问题二:ZooKeeper 的作用?详细说一下


ZooKeeper 的作用?详细说一下


参考回答:

目前,Kafka 使用 ZooKeeper 存放集群元数据、成员管理、Controller 选举,以及其他一些管理类任务。之后,等 KIP-500 提案完成后,Kafka 将完全不再依赖于 ZooKeeper。

• 存放元数据是指主题分区的所有数据都保存在 ZooKeeper 中,其他“人”都要与它保持对齐。

• 成员管理是指 Broker 节点的注册、注销以及属性变更等 。

• Controller 选举是指选举集群 Controller,包括但不限于主题删除、参数配置等。

一言以蔽之:KIP-500 ,是使用社区自研的基于 Raft 的共识算法,实现 Controller 自选举。

同样是存储元数据,这几年基于Raft算法的etcd认可度越来越高。

越来越多的系统开始用它保存关键数据。比如,秒杀系统经常用它保存各节点信息,以便控制消费 MQ 的服务数量。还有些业务系统的配置数据,也会通过 etcd 实时同步给业务系统的各节点,比如,秒杀管理后台会使用 etcd 将秒杀活动的配置数据实时同步给秒杀 API 服务各节点。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628394



问题三:Replica副本的作用?


Replica副本的作用?


参考回答:

Kafka 只有 Leader 副本才能 对外提供读写服务,响应 Clients 端的请求。Follower 副本只是采用拉(PULL)的方 式,被动地同步 Leader 副本中的数据,并且在 Leader 副本所在的 Broker 宕机后,随时准备应聘 Leader 副本。

• 自 Kafka 2.4 版本开始,社区可以通过配置参数,允许 Follower 副本有限度地提供读服务。

• 之前确保一致性的主要手段是高水位机制, 但高水位值无法保证 Leader 连续变更场景下的数据一致性,因此,社区引入了 Leader Epoch 机制,来修复高水位值的弊端。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628395



问题四:为什么Kafka不支持读写分离?


为什么Kafka不支持读写分离?


参考回答:

• 自 Kafka 2.4 之后,Kafka 提供了有限度的读写分离。

• 场景不适用。读写分离适用于那种读负载很大,而写操作相对不频繁的场景。

• 同步机制。Kafka 采用 PULL 方式实现 Follower 的同步,同时复制延迟较大。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628396



问题五:如何防止Kafka重复消费?


如何防止Kafka重复消费?


参考回答:

• 代码层面每次消费需提交offset;

• 通过Mysql的唯一键约束,结合Redis查看id是否被消费,存Redis可以直接使用set方法;

• 量大且允许误判的情况下,使用布隆过滤器也可以。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628400

相关文章
|
消息中间件 存储 缓存
大厂面试高频:Kafka 工作原理 ( 详细图解 )
本文详细解析了 Kafka 的核心架构和实现原理,消息中间件是亿级互联网架构的基石,大厂面试高频,非常重要,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka 工作原理 ( 详细图解 )
|
8月前
|
消息中间件 架构师 Java
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
|
12月前
|
消息中间件 运维 Java
招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
45岁资深架构师尼恩针对一线互联网企业面试题,特别是招商银行的高阶Java后端面试题,进行了系统化梳理。本文重点讲解如何根据应用场景选择合适的消息中间件(如RabbitMQ、RocketMQ和Kafka),并对比三者的性能、功能、可靠性和运维复杂度,帮助求职者在面试中充分展示技术实力,实现“offer直提”。此外,尼恩还提供了《尼恩Java面试宝典PDF》等资源,助力求职者提升架构、设计、开发水平,应对高并发、分布式系统的挑战。更多内容及技术圣经系列PDF,请关注【技术自由圈】获取。
|
消息中间件 存储 缓存
招行面试:如何让系统抗住双十一 预约抢购活动?10Wqps级抢购, 做过吗?
本文由40岁老架构师尼恩撰写,针对一线互联网企业如得物、阿里、滴滴等的面试题进行深度解析。文章聚焦于如何设计系统以应对大促活动中的预约抢购场景,涵盖从预告到支付的完整流程。尼恩通过系统化、体系化的梳理,帮助读者提升技术实力,轻松应对高并发挑战,并提供了详细的架构设计和解决方案。文中还分享了《尼恩Java面试宝典》等资源,助力求职者在面试中脱颖而出,实现“offer直提”。更多内容及PDF资料,请关注公众号【技术自由圈】获取。
|
消息中间件 大数据 Kafka
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
|
消息中间件 算法 Java
面试官:Kafka中的key有什么用?
面试官:Kafka中的key有什么用?
618 3
面试官:Kafka中的key有什么用?
|
消息中间件 JSON 大数据
大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
320 4
|
消息中间件 存储 缓存
美团面试: Kafka为啥能实现 10Wtps 到100Wtps ?kafka 如何实现零复制 Zero-copy?
40岁老架构师尼恩分享了Kafka如何实现高性能的秘诀,包括零拷贝技术和顺序写。Kafka采用mmap和sendfile两种零拷贝技术,前者用于读写索引文件,后者用于向消费者发送消息,减少数据在用户空间和内核空间间的拷贝次数,提高数据传输效率。此外,Kafka通过顺序写日志文件,避免了磁盘寻道和旋转延迟,进一步提升了写入性能。尼恩还提供了系列技术文章和PDF资料,帮助读者深入理解这些技术,提升面试竞争力。
美团面试: Kafka为啥能实现 10Wtps 到100Wtps ?kafka 如何实现零复制 Zero-copy?
|
C语言
经典面试题:嵌入式系统中经常要用到无限循环,怎么样用C编写死循环呢
在嵌入式系统开发中,无限循环常用于持续运行特定任务或监听事件。使用C语言实现死循环很简单,可以通过`while(1)`或`for(;;)`的结构来编写。例如:`while (1) { /* 循环体代码 */ }`,这种写法明确简洁,适用于需要持续执行的任务或等待中断的场景。
|
消息中间件 SQL 分布式计算
大数据-74 Kafka 高级特性 稳定性 - 控制器、可靠性 副本复制、失效副本、副本滞后 多图一篇详解
大数据-74 Kafka 高级特性 稳定性 - 控制器、可靠性 副本复制、失效副本、副本滞后 多图一篇详解
166 2