写点什么

Kafka.01 - 简介

用户头像
insight
关注
发布于: 2021 年 02 月 19 日
Kafka.01 - 简介

什么是消息队列

在实际生活中,经常会出现上下游系统之间任务产生和处理速率不匹配的情况,比如秒杀时,大量用户进入,但服务处理速度较慢,无法及时处理用户请求。这个时候就需要有一个游离于服务之外的中间件来协助处理这件事。而消息队列就是这样一个中转站,用于暂存部分待处理的数据,保证下游系统的稳定运行,也就是业内常说的削峰填谷。

什么是 Kafka

Kafka 是一个消息系统,由 LinkedIn 于 2011 年设计开发,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。


Kafka 是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:

  1. 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。

  2. 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。

  3. 支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。

  4. 同时支持离线数据处理和实时数据处理。

  5. Scale out:支持在线水平扩展。

如今,Kafka 基本上已成为消息队列的事实标准。

基础概念

  1. Broker:Kafka 集群包含一个或多个服务器,这种服务器被称为 broker。

  2. Topic(主题):每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为 Topic。(物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个 broker 上,但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)。

  3. Partition(分区):Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition。每个 Topic 的一个 Partition 对应一个文件。

  4. Producer(生产者):负责发布消息到 Kafka broker。

  5. Consumer:消息消费者,向 Kafka broker 读取消息的客户端。

  6. Consumer Group(消费组):每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)。同一主题的一条信息只能被同一消费组下某一个消费者消费,不同消费组的消费者可以同时消费该信息。因此,通过消费组的概念,可以实现对主题信息的广播和单播。


发布于: 2021 年 02 月 19 日阅读数: 18
用户头像

insight

关注

不要混淆行动与进展、忙碌与多产。 2018.11.17 加入

永远都是初学者

评论

发布
暂无评论
Kafka.01 - 简介