Kafka 是一种开源的高吞吐量分布式消息队列系统,通常用于大规模的消息处理和数据管道应用程序,由 Apache 软件基金会开发。
Kafka 接收、存储和处理大规模的消息流。它允许发送者和接收者以异步、高效和安全的方式进行通信,并支持发布-订阅和点对点模式。
消息的生产者,将消息发送到 Kafka 集群。
消息的消费者,从 Kafka 集群中拉取消息。
Kafka 的服务器,用于接收和处理生产者发布的消息,以及提供消息给消费者。
消息的分区,并将消息存储在一个或多个 Kafka Broker 中。
每个 Topic 由一个或多个分区组成,每个分区存储消息的顺序序列。
每个分区中的消息都有一个唯一的标识符,称为 offset,用于跟踪消费者读取消息的位置。
Kafka通过以下五个核心功能实现流式事件处理:
数据源可以将数据事件发布到或放入一个或多个Kafka主题,或类似的数据事件分组中。
应用可以订阅一个或多个Kafka主题,从中获取数据,并处理生成的数据流。
Kafka Streams API可以作为流处理器,使用来自一个或多个主题的数据流,并生成一个或多个主题发布的数据流。
您还可以构建可重复使用的生成器或使用者连接,以关联Kafka主题与现在有应用。目前已有数百个可用的连接器,包含连接 Dataproc、BigQuery 等关键服务的连接器。
Apache Kafka 可提供长期的存储服务。Kafka 可以作为“真实来源”,将数据分发在多个节点上,以实现单个数据中心内或多个可用区的高可用用途部分。
Kafka 能够处理每秒数百万条消息,这使得它非常适合用于大规模数据流处理和实时分析场景。
Kafka 的分布式架构允许它在多个节点上水平扩展,以应对不断增长的数据量和处理需求。通过添加更多的 Kafka broker(服务器节点),可以轻松地扩展集群以处理更多的消息。
Kafka 具有很高的容错性,因为它会在集群中的多个节点上存储消息的副本。这样,即使某个节点发生故障,其他节点仍然可以继续处理消息。此外,Kafka 还支持自动故障转移和恢复功能。
Kafka 将消息持久化到磁盘上,这意味着即使在系统故障或重启的情况下,消息也不会丢失。此外,Kafka 允许用户配置消息的保留策略,以便根据需要保留消息一定的时间。
Kafka 设计为具有低延迟,这使得它非常适合用于实时数据处理和分析场景。Kafka 可以在毫秒级别内传递消息,以满足对实时性要求较高的应用程序。
Kafka 提供了多种客户端库,可以轻松地与各种编程语言和框架集成。此外,Kafka 还可以与其他流处理框架(如 Apache Flink、Apache Samza 等)和大数据生态系统(如 Hadoop、Spark 等)集成,以构建更复杂的数据处理和分析应用程序。
Kafka 的生态系统包括许多工具和组件,如 Kafka Connect(用于构建数据管道)、Kafka Streams(用于构建流处理应用程序)等。这些工具和组件使得 Kafka 更加强大和灵活,可以满足各种数据处理和分析需求。
可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer。
解耦生产者和消费者、缓存消息等。
kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后消费者通过订阅这些topic来做实时的监控分析,亦可保存到数据库。
kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
kafka被应用到大数据处理,如与spark、storm等整合。