目录
第一章 初识Kafka
一、kafka的作用
主要有两大作用:用作消息队列MQ;流处理。具体见下图:
二、kafka架构
Record:它是kafka消息队列中的一则消息;
Topic:它是对kafka消息队列中Record的一种分类机制。
生产者负责发送消息,消费者负责订阅和读取消息。
分区:指的是一个Topic中的数据会被分散地存储在多个独立的文件当中;
副本因子:指当前分区文件会在集群中有多少个备份数据。
在kafka集群中,它的服务节点有两类—— 一类叫broker,负责响应管理分区的数据;leader负责分区的读写,flower负责分区的备份,zookeeper负责集群的健康监测、Topic中的创建信息和元数据存储等。
三、分区&日志
同一Topic中只能保证同一分区中消息的先后顺序,不能保证不能分区之间消息进入的先后顺序。
分区越大,理论上能够处理的并发请求就越大,存储能力也会线性增长。(通常,一个分区对应一个服务器)
四、生产者&消费者
在kafka中,消费者对分区中数据的消费彼此之间是相互独立的。
消费者在消费完分区中的消息时,会定期提交下一次再消费消息的偏移量offset;kafka默认消息保存的时间是168h,即7天,可以修改。消息可多次消费,没有任何次数限制。
分区不仅仅可以提高存储和写入能力,也可以提高消费能力。
五、kafka高性能之道
总结:kafka读写性能高的原因?
第一,Topic的分区决定了kafka的读入和写入性能;
第二,从顺序写和MMFile的角度分析:顺序写可以减少寻址时间,内存映射文件可以减少IO,使写入性能逼近内存;
第三,Kafka服务器在响应客户端读取的时候,底层使用ZeroCopy技术,直接将磁盘无需拷贝到用户空间,而是直接将数据通过内核空间传递输出,数据并没有抵达用户空间。
第二章 Kafka环境搭建 & Topic管理
第三章 Kafka 基础 API
第四章 Kafka 高级API
4.1 offset自动控制
4.2 应答&重试
“应答”虽然能够保证数据的可靠性传输,但配合request使用可能会导致数据的重复,在一个分区中可能会导致一条数据发送多次,在某些情况会是灾难性的后果。
4.3 幂等性
4.4 事务控制
- 生产者事务Only
- 消费者&生产者事务
第五章 Kafka 架构进阶
5.1 数据同步机制
在kafka-0.11以前版本,通过HW机制解决数据同步时存在的两个问题:
为了解决HW机制存在的问题,在0.11版本中,引入了Leader Epoch,如下:
引入了Leader Epoch后,再来看HW的那两个问题,就不存在了。如下:
5.2 Kafka监控系统Kafka Eagle
这是一款可视化的监控软件。
5.3 Kafka-Flume集成
5.4 Kafka-SpringBoot集成