Kafka解决了什么问题,又该如何学习呢?15年架构师的详细解答都写在笔记里了!

写在前面

Kafka 解决了什么问题:

系统解耦(异步)

在复杂的分布式系统中,需要将系统拆解为多个小系统,小系统之间通过RPC通讯调用。

在复杂的调用链中,总是会出现前面的系统等待后面的系统的结果,这是由于各系统间的处理信息的速度不一致导致。

如果使用Kafka,就可以做到发送消息给kafka后就返回消息给用户,然后后面的系统异步的去处理。

削峰

在秒杀的系统中就需要减少后面系统处理消息的数量,不然就会崩溃。有人会问,难道Kafka就不会崩溃,理论它是什么也没做只是收发数据,所以肯定是比业务系统的能力强的。但是Kafka也不是神,它也是会有扛不住的情况。这个概念是相对的。

那么,如何学习Kafka?

有了学习路线,接下来要做的就是补充自己的核心知识库,丰富自己的知识面。在这里,我要安利的就是十五年架构师整理的学习Kafka的文档秘籍(一)——《Kafka笔记》

  • 第1章对Kafka的基础概念进行笼统的介绍,之后讲解如何安装与配置Kafka,以及通过简单的生产消费消息的示例让读者能够快速地入门。
  • 第2章主要是针对生产者客户端的讲解,包括生产者客户端参数、消息的发送、序列化、分区器、拦截器、原理解析等内容。
  • 第3章主要是针对消费者客户端的讲解,包括消费者客户端参数、主题与分区的订阅、反序列化、消息的消费、位移提交、再均衡、拦截器、多线程实现等内容。
  • 第4章主要介绍主题与分区的管理,包括创建主题、修改主题、删除主题、主题端参数配置、优先副本、分区重分配、复制限流,以及对分区数抉择的探讨等内容。
  • 第5章主要讲解日志存储相关的内容,包括文件目录的布局、日志格式的演变、日志清理的细节、底层存储的原理等内容。


  • 第6章主要对Kafka服务端的一些内部核心内容进行详细的阐述,包括协议设计、延时操作、控制器、leader 的选举等内容。
  • 第7章主要是对Kafka客户端相关的原理剖析,当然其中也需要牵涉服务端的内容。这一章包括消费端分区分配策略、消费者协调器和组协调器、_ consumer_ offsets 的剖析、事务的介绍等内容。
  • 第8章主要对可靠性、一致性等核心原理进行陈述,本章内容最为抽象,主要包括失效副本、ISR 伸缩、LEO与HW、Leader Epoch的介入、日志同步机制、可靠性分析等内容。
  • 第9章主要是对Kafka相关应用的一些补充,包括一些重要的管理工具,还有Kafka Connect、Kafka Mirror Maker和Kafka Streams等内容。
  • 第10章是与Kafka监控相关的内容,监控作为Kafka生态中的- -个必备内容,有着相当重要的地位,通过学习本章的内容可以让读者对整个监控的脉络设计和底层实现有清晰的认知。
  • 第11章是对Kafka做一些功能性的扩展,包括过期时间、延时队列、死信队列、重试队列、消息路由、消息轨迹、消息审计、消息代理等内容,最后还通过对消息中间件选型的阐述以期让读者对整个消息中间件领域有发散性的思考。
  • 第12章主要讲述的是Kafka 与Spark 集成的一些内容,包括Spark 基本概念、Spark Streaming、Structured Streaming,以及它们与Kafka集成的细节等内容。

     


秘籍(二)——Kafka源码剖析

本篇共五章,它们互相之间的联系并不是很强,读者可以从头开始阅读,也可以选择自己感兴趣的章节进行学习。

第1章是Kafka的快速入门,其中介绍了Kalka 的背景、特性以及应用场景。之后介绍了笔者在实践中遇到的一个以Kafka为中心的案例,并分析了在此案例中选择使用Kafka的具体原因和Kafka起到的关键作用。最后介绍了Kafka中的核心概念和Kafka源码调试环境的搭建。

第2章介绍了生产者客户端的设计特点和实现细节,剖析了KafkaProducer拦截消息、序列化消息、路由消息等功能的源码实现,介绍了RecordAccumulator 的结构和实现。最后剖析了KafkaProducer 中Sender线程的源码。

第3章介绍了Kafka的消息传递保证语义并给出了相关的实践建议,还介绍了Consumer Group Rebalance操作各个版本方案的原理和弊端。最后详细剖析了KafkaConsumer 相关组件的运行原理和实现细节。

第4章介绍了构成Kafka服务端的各个组件,依次分析了Kafka网络层、API层、日志存储、DelayedOperationPurgatory组件、Kafka 的副本机制、KafkaController. GroupCoordinator、Kafka的身份认证与权限控制以及Kafka监控相关的实现。本章是Kafka的核心内容,涉及较多的设计细节和编程技巧,希望读者阅读之后有所收获。

第5章介绍了Kafka提供的多个脚本工具的使用以及具体实现原理,了解这些脚本可以帮助管理人员快速完成一些常见的管理、运维、测试功能。


深入学习Kafka笔记后,是否想对自己进行一下测试,看自己达到了什么水平?

这里小编已经把Kafka常见面试题整理好了,大家可以参考一下,如果现在你就在面试,又是否能顺利通过呢?

kafka面试真题(附答案)

  1. Kafka 的设计时什么样的呢?
  2. 数据传输的事物定义有哪三种?
  3. Kafka 判断一个节点是否还活着有那两个条件?
  4. producer 是否直接将数据发送到 broker 的 leader(主节点)?
  5. Kafa consumer 是否可以消费指定分区消息?
  6. Kafka 消息是采用 Pull 模式,还是 Push 模式?
  7. Kafka 存储在硬盘上的消息格式是什么?
  8. Kafka 高效文件存储设计特点
  9. Kafka 与传统消息系统之间有三个关键区别
  10. Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中
  11. Kafka 新建的分区会在哪个目录下创建
  12. partition 的数据如何保存到硬盘
  13. kafka 的 ack 机制
  14. Kafka 的消费者如何消费数据
  15. 消费者负载均衡策略
  16. 数据有序
  17. kafaka 生产数据时数据的分组策略

     

     

写在后面

关于十五年架构师的kafka学习路线笔记和面试真题,如果你都能掌握,那么再面对面试官的提问下,相信你能够更从容的应对他,成就自己的大厂梦~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值