网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 事件(event):事件是由软件或应用程序识别或记录的任何类型的操作、事件或更改。例如,支付、网站点击或温度读数等。
- 主题(topic):主题是 Kafka 中最基本的组织单元,类似于关系型数据库中的表。它是一种逻辑上的数据分类,用于存储相同类型的事件流。
- 分区(partition):Kafka 的主题可以分成多个分区,每个分区可以在集群中的不同节点上进行存储和处理。分区可以提高系统的吞吐量和可伸缩性。
- 生产者:生产者是将消息发布到 Kafka 主题的客户端应用程序。它负责将消息发送到 Kafka 集群。
- 消费者:消费者是从 Kafka 主题订阅并处理消息的客户端应用程序。它负责从 Kafka 集群读取消息并进行相应的处理。
- 代理(Broker):Kafka 集群由多个代理组成,每个代理负责存储和处理数据。代理之间可以进行数据复制和分布式协调。
- Controller:Kafka集群中的一个重要组件,负责管理分区的领导者选举、副本状态的管理以及集群的整体协调。Controller是一种角色,而不是指代具体的某个Broker。
- Leader:Kafka分区中的领导者副本,负责处理生产者发送的消息和消费者的读取请求。每个分区都有一个领导者(Leader)和多个追随者(Follower)。
除此之外,Kafka 还有一些常见的使用场景,包括数据集成、监控指标、日志聚合、流处理和发布-订阅消息传递等。
总的来说,Kafka 是一个强大的分布式事件流处理平台,适用于处理大规模数据流,并在各种行业和场景中得到广泛应用。
二、高吞吐量和容错性
Kafka 实现高吞吐量和容错性的关键在于其设计和架构。以下是 Kafka 实现高吞吐量和容错性的一些关键因素:
- 分区:Kafka 的主题可以分成多个分区,每个分区可以在集群中的不同节点上进行存储和处理。这种分区机制可以实现并行处理,从而提高系统的吞吐量。
- 复制:Kafka 通过在多个代理之间复制数据来实现容错性。每个分区都可以配置多个副本,当某个代理发生故障时,其他副本可以接管工作,确保数据不丢失。
- 高效的存储和检索:Kafka 的存储设计基于日志结构,采用顺序写入和顺序读取的方式,这样可以提高数据的写入和读取效率,从而实现高吞吐量。
- 集群架构:Kafka 采用分布式的集群架构,可以水平扩展,从而满足不断增长的数据处理需求。
- 轻量级的通信协议:Kafka 使用轻量级的文本协议进行生产者和消费者与代理之间的通信,这有助于降低通信开销,提高系统的吞吐量。
综上所述,Kafka 通过分区、复制、高效的存储和检索、集群架构以及轻量级的通信协议等方式,实现了高吞吐量和容错性,使其成为处理大规模数据流的理想选择。
三、副本
在Kafka中,副本是指对分区数据的复制。每个分区可以配置多个副本,其中一个是领导者(leader),其余的是追随者(follower)。领导者负责处理生产者发送的消息和消费者的读取请求,而追随者则负责从领导者同步数据。这种副本机制可以提供容错性,当某个副本不可用时,系统仍然可以继续工作,从其他副本中获取数据。
3.1 leader&&follower
- 领导者(Leader):每个分区只有一个领导者,领导者负责处理生产者发送的消息和消费者的读取请求。领导者负责维护分区的所有副本之间的数据同步,以及处理副本之间的数据复制和同步。
- 追随者(Follower):追随者是领导者的副本,负责从领导者同步数据。追随者会不断地从领导者处拉取数据,以保持自己的数据与领导者保持同步。如果领导者发生故障,某个追随者可以被选举为新的领导者,从而保证系统的高可用性。
这种领导者-追随者的副本复制机制可以提供高可用性和容错性,确保即使某个副本不可用,系统仍然可以继续工作,并且能够从其他副本中获取数据。
3.2 选举机制
Kafka 中的选举机制是指在分布式环境下,当某个节点(例如分区的 leader)出现故障或不可用时,集群需要选举出新的 leader 来接管工作。Kafka 使用 ZooKeeper 或者元数据主题来实现选举机制。
选举的关键点包括:
- 基于 ZooKeeper 的选举:在较早的 Kafka 版本中,Kafka 使用 ZooKeeper 来维护集群的状态,包括每个分区的 leader 和 ISR(In-Sync Replicas)列表。当需要进行选举时,节点需要与 ZooKeeper 协调,以确定新的 leader。
- 元数据主题的选举:在较新的 Kafka 版本中,Kafka 引入了元数据主题作为 ZooKeeper 的替代方案。元数据主题是一个 Kafka 主题,包含了 Kafka 集群的元数据信息,包括每个分区的 leader 和 ISR 列表。当需要进行选举时,节点会从元数据主题中读取信息,并进行相应的选举流程。
在选举过程中,Kafka 使用了一些重要的机制,例如:
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
讲解视频,并且后续会持续更新**