Apache Kafka是一个分布式流处理平台,用于构建实时数据管道和流式应用程序。Kafka具有高吞吐量、低延迟和良好的容错性,在大数据领域广泛应用。其核心功能包括发布和订阅数据流,以及持久化和传输大量实时数据。
Kafka的四大核心API是其功能基础:
1. Producer API:生产者负责将数据发布到特定的主题,可以通过负载均衡算法或基于键的分区策略将数据分配到特定分区。
2. Consumer API:消费者订阅并消费主题中的数据,以消费组形式工作,每个主题的记录被分发给消费组中的一个消费者实例,支持扩展性和容错性。
3. Streams API:允许开发人员对流数据进行复杂处理,如聚合、连接和其他流处理操作,实现实时分析和数据转换。
4. Connector API:允许与其他数据源和接收器集成,便于将数据导入或导出Kafka,如数据库、日志文件等。
在Kafka中,Topic是数据记录发布的主题,可根据业务系统区分。每个主题可分为多个Partition,每个分区是一个有序队列,保证消息顺序。Offset是每个分区记录的唯一标识,用于指示记录在分区中的位置,消费者通过控制Offset跟踪已读取记录。
Kafka提供关键特性确保数据高可用性和可靠性:
- 副本与故障转移:每个分区可有多个副本,一个为Leader,其余为Follower。当Leader故障时,Follower自动晋升为新的Leader。
- ISR(In-Sync Replicas):保持与Leader同步的副本组,落后太多或宕机的副本将被移除,确保数据一致性。
- LEO(Log End Offset):记录副本日志的末尾位移,是衡量副本进度的关键指标。
Kafka不仅是一个消息队列,还可作为中间数据存储系统,数据写入Kafka后会被持久化到磁盘。