既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- 消费者从Kafka订阅一个或多个主题,并且会被分配到每个主题的一个或多个分区。消费者定期轮询Kafka Broker,拉取新的消息。一旦消费者拉取到消息,它们就会处理这些消息,并提交偏移量来记录自己的消费位置。
Kafka的水平扩展性
- Kafka通过分区和复制来实现水平扩展性和高可用性。分区允许数据水平分布在集群中的多个Broker上,从而允许Kafka处理大量数据。同时,Kafka通过复制每个分区到多个Broker上来提供容错性和可靠性。
2.Kafka集群组件
一个典型的Kafka集群包含以下组件:
- ZooKeeper:
ZooKeeper是一个分布式协调服务,Kafka依赖它来进行集群管理和领导者选举。ZooKeeper保存了Kafka集群的元数据(如主题、分区、副本分配等),并且监控Kafka Broker的健康状态。 - Broker:
Broker是Kafka集群中的服务器节点,负责存储和处理数据。每个Broker都是一个独立的Kafka服务器,它们共同组成了整个Kafka集群。 - Topic:
Topic是消息发布的类别或分区。在集群中,每个Topic都被分成一个或多个分区,这些分区分布在不同的Broker上。 - Partition:
Partition是Topic的子集,每个分区都是一个有序的消息队列。分区允许数据在多个Broker上进行并行处理,从而提高了吞吐量和可扩展性。
Kafka集群工作原理
- 启动:
当Kafka Broker启动时,它会向ZooKeeper注册自己的信息,包括主机名、端口号等。ZooKeeper会维护所有Broker的信息,并监控它们的健康状态。 - 元数据管理:
ZooKeeper保存了Kafka集群的元数据,包括Topic、分区、副本分配等信息。这些元数据被用来协调Broker之间的消息路由和复制。 - Leader-Follower模式:
对于每个分区,Kafka会选举出一个Broker作为Leader,并将其他Broker设置为Follower。Leader负责处理所有的读写请求,而Follower则负责复制Leader的数据。当Leader失效时,ZooKeeper会协助选举新的Leader。 - 消息发布和消费:
生产者将消息发布到指定的Topic,Kafka根据分区策略将消息分配到各个分区中。消费者从Topic订阅消息,并根据分配的分区拉取数据。Kafka会保证消息的顺序性和一致性,以及消费者的负载均衡。 - 水平扩展:
Kafka通过增加Broker节点和分区来实现水平扩展。每个Broker负责处理一部分数据和请求,从而提高了集群的吞吐量和容量。
Kafka集群的可靠性和容错性
- 副本复制:
每个分区都有多个副本,它们分布在不同的Broker上。当Leader失效时,Kafka会自动选择一个副本作为新的Leader,从而保证数据的可用性。 - ISR机制:
Kafka使用ISR(In-Sync Replicas)机制来确保副本之间的一致性。只有处于ISR中的副本才会被选举为新的Leader,这样可以防止数据丢失和不一致。 - 故障恢复:
当Broker或者分区发生故障时,Kafka会自动进行故障恢复,包括重新选举Leader和同步数据等操作。
3.Kafka在大数据的应用场景
实时日志处理
- 实时日志处理是Kafka的一个典型应用场景。许多大型互联网企业和在线服务需要实时收集、处理和分析海量日志数据,以监控系统运行状况、进行故障排查和提供用户行为分析等功能。Kafka作为一个高吞吐量、低延迟的消息队列,可以用来收集和传输日志数据,同时支持流式处理引擎(如Apache Spark、Apache Flink等)进行实时分析和计算。
数据管道和ETL
- Kafka常用于构建数据管道和ETL(Extract, Transform,Load)流程,用于将数据从源系统提取、转换和加载到目标系统中。例如,一个企业可能需要将来自各种数据源(如数据库、日志文件、传感器等)的数据集成到一个数据湖或数据仓库中,以支持数据分析和决策制定。Kafka可以作为数据管道的中间件,用来传输和缓存数据,并保证数据的可靠性和一致性。
实时推荐系统
- 实时推荐系统需要快速响应用户行为,并向用户推荐个性化的内容或产品。Kafka可以用来收集和分析用户行为数据,并将结果传输给推荐算法模型进行实时计算和推荐。通过结合Kafka与实时计算引擎(如Apache Storm、Apache Samza等),可以实现高效的实时推荐服务,提升用户体验和业务价值。
分布式事务处理
- Kafka提供了分布式事务支持,可以用来实现分布式系统中的事务性消息处理。这在金融领域、电子商务等需要确保数据一致性和可靠性的场景中尤为重要。通过Kafka的事务功能,可以实现跨多个服务和系统的原子性操作,确保数据的完整性和一致性。
流式数据处理
- Kafka与流式处理引擎(如Apache Kafka Streams、Apache Flink等)的集成,可以实现实时数据流的处理和分析。这对于实时监控、实时预测和实时反馈等场景非常有用,例如智能工厂的实时生产监控、智能交通的实时流量调度等。
Kafka的局限性
- 复杂性:Kafka的分布式特性、多种配置和调优参数使得设置、维护和操作变得复杂。
- 有限的数据保留:Kafka并不是为长期数据存储而设计的。其主要功能是实时数据处理和消息传递。
- 有限的查询能力:与数据库不同,Kafka不支持查询能力。它只是一个消息传递系统。
- 缺乏完整的安全措施:Kafka缺乏某些安全功能,例如基于角色的访问控制,并且缺乏一些更高级的安全功能。
扩展阅读:
kafka官方手册
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**