6Kafka 介绍 · SpringCloud微服务实战 · 看云

Kafka 介绍

导航

1. 什么是Kafka

Apache Kafka发源于LinkedIn,于2011年成为Apache的孵化项目,随后于2012年成为Apache的主要项目之一。Kafka使用Scala和Java进行编写。Apache Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。

2. Kafka 的特点

  • 高吞吐量(顺序读写)
  • 高可靠性(数据备份)
  • 可持久化(本次磁盘持久化)
  • 可扩展性(集群热扩(缩)容)
  • 分区内有序
  • 生产者与消费者多样性(支持多语言)

3. Kafka的基本概念

  • Producer
    消息生产者,就是向kafka broker发消息的客户端。
  • Consumer
    消息消费者,是消息的使用方,负责消费Kafka服务器上的消息。
  • Topic
    主题,由用户定义并配置在Kafka服务器,用于建立Producer和Consumer之间的订阅关系。生产者发送消息到指定的Topic下,消息者从这个Topic下消费消息。
  • Partition
    消息分区,一个topic可以分为多个 partition,每个
    partition是一个有序的队列。partition中的每条消息都会被分配一个有序的
    id(offset)。
  • Broker
    一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
  • Consumer Group
    消费者分组,用于归组同类消费者。每个consumer属于一个特定的consumer group,多个消费者可以共同消息一个Topic下的消息,每个消费者消费其中的部分消息,这些消费者就组成了一个分组,拥有同一个分组名称,通常也被称为消费者集群。
  • Offset
    消息在partition中的偏移量。每一条消息在partition都有唯一的偏移量,消息者可以指定偏移量来指定要消费的消息。

4.Kafka具有四个核心API

4dac803d4b1e39afd21b62ab8353a195_MD5.webp

  • 使用** Producer API **发布消息到kafka集群中一个或多个topic。
  • 使用 **Consumer API **来订阅一个或多个topic,并处理产生的消息。
  • 使用 **Streams API **充当一个流处理器,从1个或多个topic消费输入流,并生产输出流到1个或多个输出topic,有效地将输入流转换到输出流。
  • 使用Connector API可以构建和运行可重复使用的生产者或消费者,将topic连接到现有的应用程序或数据系统。例如,针对关系型数据库的连接器可以捕获到表的每个变化。