---
title: Kafka介绍
description: "Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统，它提供了类似于JMS的特性，但在设计上完全不同，它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性，适用于离线和在线的消息消费，如常规的消息收集、网站活性采集、聚合统计系统运营数据（监测数据）、日志收集等大量数据的互联网服务的数据收集场景。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Kafka/kunpengkafkahdp_05_0002.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Kafka/kunpengkafkahdp_05_0002.html
indexId: 02d0c6a0873f23083f633c961ed39c7a2f5b16196055d3f2536560275b5ebf4f72
---
# Kafka介绍

Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统，它提供了类似于JMS的特性，但在设计上完全不同，它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性，适用于离线和在线的消息消费，如常规的消息收集、网站活性采集、聚合统计系统运营数据（监测数据）、日志收集等大量数据的互联网服务的数据收集场景。

Kafka测试过程：“创建Kafka topic > Kafka随机生成数据写入topic > > Kafka从topic中读出数据进行消费”。

图1 测试流程

主题是发布记录的类别或订阅源名称。Kafka的主题总是多用户。也就是说，一个主题可以有零个、一个或多个消费者订阅写入它的数据。

对于每个主题，Kafka集群都维护一个分区日志，如下图2所示。

图2 分区日志

每个分区都是一个有序的、不可变的记录序列，不断附加到结构化的提交日志中。分区中的记录每个都被分配一个称为偏移的顺序ID号，它唯一地标识分区中的每个记录。

一般来说，为了能够让磁盘性能达到最大，partitions的数目需要大于磁盘数目，这样可以让每个磁盘至少拥有1个partition，否则该盘可能未被利用。

Kafka集群持久地保留所有已发布的记录，无论它们是否已被消费，都可以使用可配置的保留期。例如，如果保留策略设置为两天，则在发布记录后的两天内，它可供使用，之后将被丢弃以释放空间。Kafka的性能在数据大小方面实际上是恒定的，因此长时间存储数据不是问题。
