美文网首页
《Kafka入门与实践》读书笔记

《Kafka入门与实践》读书笔记

作者: 昔日的帅哥 | 来源:发表于2019-07-25 22:28 被阅读0次

1 . Kafka简介

Kafka定位是一个分布式流处理平台,具备以下3个特性:

  • 能够允许发布和订阅数据
  • 存储流数据时提供相应的容错机制
  • 流数据到达时能够被及时处理

1.1 Kafka基本概念

  1. 主题 topic

    对消息的分类

  2. 消息 message

    kafka通信的基本单位,

  3. 分区和副本 Partition Replica

    每个主题被分为一个或多个分区,每个分区由一系列有序、不可变的消息组成,是一个有序队列。每个分区在物理上对应一个文件夹,命名规则(topic-0,topic-1,topic-2)。

    每个分区有一个至多个副本。副本分布在集群的不同代理上,以提高可用性。

    分区使得kafka在并发处理上更加容易,分区数越多,吞吐量越高。分区也是保证消息被顺序消费以及对消息进行负载均衡的基础。

  4. Leader副本和Follower副本

    kafka会选择该分区的一个副本作为leader副本,该分区的其他副本为Follower副本,只有leader副本才处理客户端的读写请求,Follower副本从leader副本同步数据。保证了数据的一致性和有序性。如果leader失效,通过选举算法从其他Follower副本中选出新的leader副本

  5. 偏移量 offset

    发布到分区的消息会被直接追加到日志文件(分区目录下以.log后缀的数据文件)的尾部,每条消息在日志文件中的位置都会对应一个按序递增的偏移量。消费者可用过控制偏移量来对消息进行消费。

    旧版消费者将offset保存在zookeeper中,新版消费者保存在kafka内部的一个主题中,消费者也可以自己在外部系统保存offset。

  6. 日志段 logsegment

    一个日志被划分为多个日志段,日志段是kafka日志对象分片的最小单位。一个日志段对应磁盘上一个具体日志文件和两个索引文件。

    日志文件(.log)保存消息实际数据。两个索引文件(.index 和.timeindex),分别表示消息偏移量索引文件和消息时间戳索引文件。

  7. 代理 Broker

    kafka集群由一个或者多个kafka实例构成,每个kafka实例称为代理(Broker)。每个broker有一个唯一id(非负整数,配置中broker.id的值)。

  8. 生产者

    发消息给broker

  9. 消费者和消费者组 consumer 和 consumer group

    以pull方式拉数据。每一个消费者属于一个特定消费组,groupid代表消费组名称,通过group.id配置。如果没有指定消费组,则该消费者属于默认消费组test-consumer-group。

    每个消费者通过配置项client.id设置唯一id,如果客户端没有指定clientid,kafka会为client自动生成一个唯一id。

    同一个topic的一条消息只能被同一个消费组下某一个消费组消费。

  10. ISR (In-sync Replica)

    kafka在zookeeper中动态维护一个ISR,即保存同步的副本列表,保存了与leader副本保存消息同步的所有副本对应的代理节点id。如果一个Follower副本宕机或是落后太多,将从ISR中被移除。

  11. Zookeeper

    kafka使用zookeeper保存相应元数据信息。包括代理节点信息、kafka集群信息、旧版消费者信息及其消费偏移量信息、主题信息、分区状态信息、分区副本分配方案信息、动态配置信息等。

1.2 kafka设计

特性:

  1. 消息持久化

    使用文件系统存储数据。顺序追加。

  2. 高吞吐量

    kafka将数据写到磁盘,充分利用磁盘的顺序读写。同时,kafka在数据写入及数据同步采用了零拷贝(zero-copy)技术,采用sendFile()函数调用,在两个文件描述符之间直接传递数据,完全在内核中操作,从而避免了内核缓冲区与用户缓冲区之间数据的拷贝,操作效率极高。

    kafka还支持数据压缩以及批量发送,同时将每个主题划分为多个分区,这一系列优化是的kafka具有很高的吞吐量。

  3. 扩展性

    依赖zookeeper对集群进行协调管理,更加容易进行水平扩展。在机器扩展期间无需将整个集群停机,集群自动感知,重新进行负载均衡和数据复制。

  4. 多客户端支持

  5. kafka streams

    在0.10之后版本中引入kafka streams。是一个用java实现的用于流处理的jar文件。

  6. 安全机制

    通信时数据加密

  7. 数据备份

    副本

  8. 轻量级

    broker无状态,不记录消息是否被消费,offset交给消费者或者组协调器管理

  9. 消息压缩

    提高吞吐量

1.3 kafka应用场景

  • 消息系统

  • 应用监控

    kafka+ELK 整合构建应用服务监控系统

  • 网站用户行为追踪

    kafka+hadoop+spark+strom进行数据分析处理

  • 流处理(kafka streams)

  • 持久性日志

    kafka+hdfs+Flume

2. Kafka安装配置

3. Kafka核心组件

3.1 延迟操作组件

3.2 控制器

3.3 协调器

3.4 网络通信服务

3.5 日志管理器

3.6 副本管理器

3.7 Handler

3.8 动态配置管理器

3.9 代理健康监测

3.10 Kafka内部监控

4. Kafka核心流程分析

5. Kafka基本操作实战

6. Kafka API实战

7. Kafka Streams

8. Kafka数据采集

9. Kafka与ELK整合应用

10. Kafka与Spark整合应用

相关文章

网友评论

      本文标题:《Kafka入门与实践》读书笔记

      本文链接:https://www.haomeiwen.com/subject/fwtlrctx.html