Kafka应该怎么学?这篇学习笔记有大用,清晰明了讲透彻了!

kafka介绍

Kafka最初由Linkedin公司开发,是一个分布式、支持分区、多副本、基于Zookeeper的分布式消息队列,最大特性就是可以实时处理大量数据以满足各种需求场景,它是用scala语言编写的。

特性

1、高吞吐,低延迟:kafka每秒可以处理几十万条消息,延迟最低只有几毫秒。每个topic可以分多个partition并行操作,consumer group对partition进行消费操作。
2、可扩展,伸缩性好:kafka集群支持热扩展。
3、持久性、可靠性:生产者使用ack+ISR机制可保证消息不丢失,Exactly Once语义可保证消息有且只被消费一次。
4、容错性:partition多副本选举机制可保证一台机器宕机不影响整体功能,因为一般partition多个副本都是分布在不同机器节点上。
5、高并发:支持数千个客户端同时读写。

基本概念

Producer:消息生产者,向Kafka Broker发消息的客户端
Consumer:消息消费者,从Kafka Broker取消息的客户端。
Consumer Group:消费者组,消费者组内的每个消费者负责消费不同分区的数据,提高消费能力。一个分区只能由组内一个消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
Broker:一台Kafka机器就是一个Broker。一个集群由多个Broker组成,一个Broker可以容纳多个Topic。
Topic:主题,可以理解为一个队列,Topic将消息分类,生产者和消费者面向的是一个Topic
Partition:一个Topic可以分为多个partition,分布到不同的Broker上,每个Partition都是一个有序的队列。
Replica:副本,为实现备份的功能,保证集群中某个节点发生故障时,该节点上的Partition数据不丢死,且Kafka仍然能够继续工作,Kafka提供了副本机制,一个Topic的每个分区都有若干个副本,一个Leader和若干个Follower。
Leader:每个分区Partition多个副本中的“主”副本,生产者发送数据的对象以及消费者消费数据的对象都是Leader。
Follower:每个分区Partition多个副本中的“从”副本,实时从Leader同步数据,保持和Leader数据的同步,Leader发生故障时,某个Follower会被选举成为新的Leader。
Offset:消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再恢复的时候可以从上次的消费位置Offset继续消费。
Zookeeper:帮助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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值