Kafka知识库 - 索引目录
Kafka 是由Apache Software Foundation开发的分布式流处理平台,它是一种高吞吐量、可扩展、持久化的消息中间件。Kafka的设计目标是处理实时数据流,它具有可靠性、容错性以及水平扩展的特点。
在Kafka中,消息被组织成主题(Topic),生产者(Producer)负责向主题发布消息,而消费者(Consumer)则从主题中读取消息。Kafka的架构是分布式的,可以横向扩展以处理大量数据和高并发请求。
消息队列: Kafka可用作高性能消息队列,使得不同部分的应用程序能够进行异步通信。
日志收集: 由于其分布式特性和持久化存储,Kafka常用于大规模日志数据的集中式收集。
事件溯源: Kafka能够记录事件流,支持系统状态的恢复和分析。
流处理: Kafka Streams和其他流处理框架结合,可以进行实时数据处理和分析。
数据湖: Kafka可用于构建数据湖,将不同来源的数据集成到一个集中的存储中。
可扩展性:
Kafka是分布式的,可以轻松地通过增加节点实现水平扩展。
传统消息系统通常在垂直方向上扩展,限制了系统的可伸缩性。
持久性:
Kafka通过将消息持久化到磁盘上,确保了消息的可靠性。即使消费者离线,它们也能够获取未处理的消息。
传统消息系统通常会在内存中保留消息,一旦系统关闭,消息就会丢失。
分区:
Kafka中的主题可以分为多个分区,每个分区可以独立地进行读写操作。这种设计有助于提高并发性。
在传统消息系统中,分区的概念可能不那么显式,导致难以实现高并发。
灵活性:
Kafka支持多种消费者和生产者模式,可以根据不同的业务需求进行配置。
传统消息系统通常提供有限的模式。
解释: 在 Linux 和 macOS 上,您可以通过以下步骤下载和解压 Kafka。
举个:
# 下载 Kafka
wget https://downloads.apache.org/kafka/2.8.0/kafka_2.13-2.8.0.tgz
# 解压 Kafka
tar -xzf kafka_2.13-2.8.0.tgz
解释: 在 Windows 上,您可以通过官方网站下载 Kafka 的 zip 文件,然后解压。
举个:
解释: 配置 Kafka 的单节点或多节点集群,需要修改 config/server.properties
文件。
举个:
# 修改 broker.id 为唯一值
vi kafka_2.13-2.8.0/config/server.properties
broker.id=1
# 针对每个节点,修改 broker.id,并确保唯一
vi kafka_2.13-2.8.0/config/server.properties
broker.id=1 # 节点1
vi kafka_2.13-2.8.0/config/server.properties
broker.id=2 # 节点2
解释: 在 Windows 上,通过修改 config\server.properties
文件进行配置。
举个:
config\server.properties
文件,修改 broker.id
。config\server.properties
中的 broker.id
。broker.id=1
listeners=PLAINTEXT://localhost:9092
log.dirs=/path/to/kafka-logs
zookeeper.connect=localhost:2181
num.partitions=3
default.replication.factor=2
auto.create.topics.enable=true
auto.offset.reset=earliest
group.id=my-consumer-group
fetch.min.bytes=1