期末测试 这些Kafka核心要点,你都掌握了吗?
你好,我是胡夕。
《Kafka核心技术与实战》已经结课一段时间了,你掌握得怎么样了呢?我给你准备了一个结课小测试,来帮助你检验自己的学习效果。
这套测试题有选择题和简答题两种形式。选择题共有 20 道题目,考题范围覆盖专栏的 42 讲正文,题目类型为单选题和多选题,满分 100 分,系统自动评分。简答题共有5道,建议你拿出纸笔,写下你的思考和答案,然后再和文末的答案进行对照。
还等什么,点击下面按钮开始测试吧!
简答题
- 如果副本长时间不在ISR中,这说明什么?
- 谈一谈Kafka Producer的acks参数的作用。
- Kafka中有哪些重要组件?
- 简单描述一下消费者组(Consumer Group)。
- Kafka为什么不像Redis和MySQL那样支持读写分离?
答案与解析
1.如果副本长时间不在ISR中,这说明什么?
答案与解析:
如果副本长时间不在ISR中,这表示Follower副本无法及时跟上Leader副本的进度。通常情况下,你需要查看Follower副本所在的Broker与Leader副本的连接情况以及Follower副本所在Broker上的负载情况。
2.请你谈一谈Kafka Producer的acks参数的作用。
答案与解析:
目前,acks参数有三个取值:0、1和-1(也可以表示成all)。
0表示Producer不会等待Broker端对消息写入的应答。这个取值对应的Producer延迟最低,但是存在极大的丢数据的可能性。
1表示Producer等待Leader副本所在Broker对消息写入的应答。在这种情况下,只要Leader副本数据不丢失,消息就不会丢失,否则依然有丢失数据的可能。
-1表示Producer会等待ISR中所有副本所在Broker对消息写入的应答。这是最强的消息持久化保障。
3.Kafka中有哪些重要组件?
答案与解析:
- Broker——Kafka服务器,负责各类RPC请求的处理以及消息的持久化。
- 生产者——负责向Kafka集群生产消息。
- 消费者——负责从Kafka集群消费消息。
- 主题——保存消息的逻辑容器,生产者发送的每条消息都会被发送到某个主题上。
4.简单描述一下消费者组(Consumer Group)。
答案与解析:
消费者组是Kafka提供的可扩展且具有容错性的消费者机制。同一个组内包含若干个消费者或消费者实例(Consumer Instance),它们共享一个公共的ID,即Group ID。组内的所有消费者协调在一起来消费订阅主题的所有分区。每个分区只能由同一个消费组内的一个消费者实例来消费。
5.Kafka为什么不像Redis和MySQL那样支持读写分离?
答案与解析:
第一,这和它们的使用场景有关。对于那种读操作很多而写操作相对不频繁的负载类型而言,采用读写分离是非常不错的方案——我们可以添加很多Follower横向扩展,提升读操作性能。反观Kafka,它的主要场景还是在消息引擎,而不是以数据存储的方式对外提供读服务,通常涉及频繁地生产消息和消费消息,这不属于典型的读多写少场景。因此,读写分离方案在这个场景下并不太适合。
第二,Kafka副本机制使用的是异步消息拉取,因此存在Leader和Follower之间的不一致性。如果要采用读写分离,必然要处理副本滞后引入的一致性问题,比如如何实现Read-your-writes、如何保证单调读(Monotonic Reads)以及处理消息因果顺序颠倒的问题。相反,如果不采用读写分离,所有客户端读写请求都只在Leader上处理,也就没有这些问题了。当然,最后的全局消息顺序颠倒的问题在Kafka中依然存在,常见的解决办法是使用单分区,其他的方案还有Version Vector,但是目前Kafka没有提供。
- 镜子中间 👍(9) 💬(1)
终于看完了Kafka课程,这是我在极客时间学完的第一门课,也是坚持的最久的,期末测试得了80分,仍有进步的空间,感谢胡夕老师,也感谢坚持下来的自己,Mark一下,准备开始二刷了!
2020-08-20 - 孙同学 👍(3) 💬(3)
做完题 85 哈哈 以为自己都忘了。。
2020-05-10 - lei 👍(1) 💬(1)
胡老师,学完源码课然后来的实战课,收获很大。有没有好的讲解分布式的资料呢,能够综合一些学习
2020-10-23 - 执芳之手 👍(1) 💬(1)
老师,你好。我的服务运行了一段时间,发送消息报错:Cannot perform operation after producer has been closed。网上说是,KafkaProducer 已经close了。但是,我不知道为什么被关闭的。
2020-08-14 - Godning 👍(0) 💬(3)
老师,我们在对kafka性能测试时遇到了too many files open问题,单节点服务器是256/48t存储 磁盘做了raid0 集群是三台服务器构成 ,我们对单节点进行测试 启用五个topic 都是单分区 ,写入时带宽几乎占满 。当写入数据量到达3.6t时 系统文件句柄数就超过200w了 导致kafka崩溃 这种情况是kafka本身问题还是系统配置问题还是我们使用的问题呢
2021-04-28 - 墙角儿的花 👍(0) 💬(1)
老师,服务部署在阿里云上,生产者发送消息经常在非上班期间发生超时,如晚8点到第二天8点间出现发送超时(org.apache.kafka.common.errors.TimeoutException),而且根本就没什么qps,一分钟内都是个位数,白天时有一定的qps,但却不会出现超时,阿里云说网络没问题,请问该如何排查呢,谢谢
2021-04-27 - H.L. 👍(0) 💬(1)
kafka集群扩容, reassign主题分区迁移,这个不讲了吗?
2021-01-14 - 旭旭 👍(0) 💬(1)
完整的看了你的这门课 实在不错 有种相见恨晚的感觉 希望老师多推出一些大数据相关的优秀课程!
2020-12-03 - 阡陌 👍(0) 💬(3)
嗯,很多收货。但是也有很多没理解透彻的,准备从头再来一遍,加深理解和记忆。
2020-08-07 - Mr.Brooks 👍(0) 💬(1)
虽然工作中从没用过kafka,依然学到很多。准备去追老师下一个源码课了
2020-06-12 - 趁早 👍(0) 💬(1)
终于看完了,收货颇多,感谢胡总的辛苦付出
2020-04-20 - 黑山老妖 👍(0) 💬(1)
谢谢老师!
2020-04-17 - Tc 👍(0) 💬(1)
老师的解读源码什么时候上
2020-04-11 - 剑锋所指 👍(2) 💬(0)
学完打卡 90分
2021-08-03 - Stony.修行僧 👍(1) 💬(0)
补充一下 如果你的Partition只有一个副本,也就是一个Leader,任何Follower都没有,你认为acks=all有用吗? 当然没用了,因为ISR里就一个Leader,他接收完消息后宕机,也会导致数据丢失。 所以说,这个acks=all,必须跟ISR列表里至少有2个以上的副本配合使用,起码是有一个Leader和一个Follower才可以。 这样才能保证说写一条数据过去,一定是2个以上的副本都收到了才算是成功,此时任何一个副本宕机,不会导致数据丢失。
2020-10-25