写在前边
Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Storm、Spark、 Flink等都支持与Kafka集成。
Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:
消息系统: Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提,供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于Kafka的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。流式处理平台: Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。
今天,小编就为大家带来分布式架构Kafka的核心设计及实践原理~~~
第1章:初识Kafka
- 1.1 基本概念
- 1.2 安装与配置
- 1.3 生产与消费
-
1.4 服务端参数配置
本章比较基础,对kafka的基本概念进行了阐述,相信大家都已熟悉。
第2章:生产者
- 2.1 客户端开发
- 2.2 原理分析
-
2.3 重要的生产者参数
本章主要讲述了生产者客户端的具体用法及其整体架构,主要内容包括配置参数的详解、消息的发送方式、序列化器、分区器、拦截器等。在实际应用中,一套封装良好的且灵活易用的客户端可以避免开发人员重复劳动,也提高了开发效率,还可以提高程序的健壮性和可靠性,而Kafka的客户端正好包含了这些特质。
第3章:消费者
- 3.1 消费者与消费组
-
3.2 客户端开发
本章主要讲述了消费者和消费组的概念,以及如何正确使用KafkaConsumer。 具体的内容还包括参数配置的讲解、订阅、反序列化、位移提交、再均衡、消费者拦截器、多线程的使用。
第4章:主题与分区
- 4.1 主题的管理
- 4.2 初识KafkaAdminClient
- 4.3 分区的管理
-
4.4 如何选择合适的分区数
本章主要讲述了Kafka概念中的两大核心一主题和分区。通过对主题的增删查改、配置管理等内容来了解主题相关的知识点。通过对分区副本的一系列操作及分区数设定的考量因素来理解分区相关的概念,比如优先副本、限流、分区重分配等。
第5章:日志存储
- 5.1 文件目录布局
- 5.2 日志格式的演变
- 5.3 日志索引
- 5.4 日志清理
-
5.5 磁盘存储
本章主要讲述的是Kafka中与存储相关的知识点,既包含Kafka自身的日志格式、日志索引、日志清理等方面的内容,也包含底层物理存储相关的知识点。通过对本章内容的学习,相信大家对Kafka的一些核心机理有了比较深刻的认知。
第6章:深入服务端
- 6.1 协议设计
- 6.2 时间轮
- 6.3 延时操作
- 6.4 控制器
-
6.5 参数解密
本章主要讲解Kafka服务端的一些核心概念,方便大家加深对Kafka的理解,并且为下面章节中的讲解做好铺垫。比如,本章涉及的协议设计,它可以帮助我们更好地理解组协调器和事务协调器的工作原理,还可以帮助我们理解Kafka中的数据可靠性、数据一致性等更深层次的理念。
第7章:深入客户端
- 7.1 分区分配策略
- 7.2 消费者协调器和组协调器
- 7.3 _ consumer. offsets剖析
-
7.4 事务
本章内容涉及第3章中未详细说明的分区分配策略,以及消费者协调器和组协调器之间的交互原理。本章还对主题_ consumer_ offsets 和位移提交做了深层次的描述,想必大家对位移提交有了一个更加深刻的认知。本章最后还对Kafka 中的事务进行了详述,Kafka 的事务可以看作Kafka中最难的知识点之一,它和Kafka中的控制器有的一拼。
第8章:可靠性探究
- 8.1 副本剖析
- 8.2 日志同步机制
-
8.3 可靠性分析
笔者接触Kafka以来被问得最多的就是Kafka的可靠性问题,本章以此为引来对Kafka相关的知识点进行讲解,最后通过可靠性分析来做一个总结,希望能够为大家在遇到此类问题时提供参考。
第9章:Kafka应用
- 9.1 命令行工具
- 9.2 Kafka Connect
- 9.3 Kafka Mirror Maker
-
9.4 Kafka Streams
本章主要介绍Kafka现有的应用工具,对一般用户而言,这些应用工具已经足够应对大多数的场景。不过,我们还可以利用Kafka现有的特性和功能来扩展一些高级应用,比如延时(迟)队列、重试队列等,大家可以在第11章中查阅相关的内容。
第10章:Kafka监控
- 10.1 监控数据的来源
- 10.2 消费滞后
- 10.3 同步失效分区
- 10.4 监控指标说明
-
10.5 监控模块
本章主要讲述如何自定义实现-一个Kafka监控系统,其中包括页面整体的布局把控、监控数据的来源、监控指标的说明,以及监控模块在整个Kafka应用生态中所处的地位。
第11章:高级应用
- 11.1 过期时间(TTL)
- 11.2 延时队列
- 11.3 死信队列和重试队列
- 11.4 消息路由
- 11.5 消息轨迹
- 11.6 消息审计
- 11.7 消息代理
-
11.8 消息中间件选型
本章主要讲述如何针对原生的Kafka实现一些扩展类的高级应用,包含过期时间、延时队列、死信队列、重试队列、消息路由、消息轨迹和消息代理。
第12章:Kafka与Spark的集成
- 12.1 Spark的安装及简单应用
- 12.2 Spark编程模型
- 12.3 Spark的运行结构
- 12.4 Spark Streaming简介
- 12.5 Kafka与Spark Streaming的整合
- 12.6 Spark SQL
- 12.7 Structured Streaming
-
12.8 Kafka与Structured Streaming的整合
本章主要讲述了Spark中的相关概念,包括Spark的整体架构、Spark 的编程模型、Spark运行架构、Spark Streaming和Structured Streaming,这里使用的篇幅比介绍Kafka Streams时用的篇幅要多,因为笔者认为从Spark的角度去理解流式计算(处理),进而再去理解KafkaStreams要容易得多。
后记
身处大数据时代,对于分布式架构的要求会越来越高,随着技术的更新,也是需要越来越多的学习充实,比如对于Redis、Zookeeper、Nginx等常见分布式架构的深入学习,就成了我们的日常学习目标。
只有学习更新充实自己,才能在这个大数据时代尽情徜徉!!!