官网对Kafka的介绍:

More than 80% of all Fortune 100 companies trust, and use Kafka.

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.

超过80%的财富100强公司信任并使用Kafka。

Apache Kafka是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。

那么,什么是事件呢?事件可以理解成是“谁什么时间做了什么” ,在文档中也称为消息或记录。从概念上来讲,事件具有键、值、时间戳和可选的元数据头。下面是一个示例事件:

事件键:“张三”

事件值:“向李四支付了10块钱”

事件时间戳:“2021年8月25日上午11:00:23”

下面我们再来看Kafka的特性:

Kafka combines three key capabilities so you can implement your use cases for event streaming end-to-end with a single battle-tested solution:

  1. To publish (write) and subscribe to (read) streams of events, including continuous import/export of your data from other systems.
  2. To store streams of events durably and reliably for as long as you want.
  3. To process streams of events as they occur or retrospectively.

Kafka结合了三个关键功能,因此您可以使用一个经过战斗测试的解决方案来实现端到端事件流的用例:

  1. 发布(写入)和订阅(读取)事件流,包括从其他系统连续导入/导出数据。
  2. 持久可靠地存储事件流。
  3. 当事件发生或追溯时处理事件流。

总结:Kafka是一个分布式的基于发布/订阅模式消息队列,主要应用于大数据实时处理领域。

看完这些应该清晰一些了:生产者发布消息,消费者订阅消息。所有的生产者都发布消息到Kafka,所有的消费者都从Kafka订阅消息。

那么,不同的的消费者想要的不一样怎么办?主题(Topic)。在生产者把消息放到发布到Kafka的时候,需要给消息定好主题,消费者可以订阅不同的主题

还有1个概念是分区(Partition)。1个主题里通常包含1个或多个分区。

也就是说,Kafka在逻辑上将消息按照topic进行分类,一个topic物理上可以有1个或多个分区来存储消息。每个分区对应一个log,消息以追加的方式写入log中,以先进先出的方式读取。同时,Kafka中有消费组的概念,1个消费者组里可以有1个或多个消费者,这些消费者可以消费同一个topic的消息。但同时一个分区里的消息只能被1个消费者组里的1个消费者消费,以此来保证单个分区内消息的顺序性。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐