
Kafka 面试
Kafka 简介
【基础】什么是 Kafka?
要点
Apache Kafka 是一款开源的消息引擎系统,也是一个分布式流计算平台,此外,还可以作为数据存储。

Kafka 的核心功能如下:
- 消息引擎 - Kafka 可以作为一个消息引擎系统。
- 流处理 - Kafka 可以作为一个分布式流处理平台。
- 存储 - Kafka 可以作为一个安全的分布式存储。
Kafka 的设计目标:
- 高性能
- 分区、分段、索引:基于分区机制提供并发处理能力。分段、索引提升了数据读写的查询效率。
- 顺序读写:使用顺序读写提升磁盘 IO 性能。
- 零拷贝:利用零拷贝技术,提升网络 I/O 效率。
- 页缓存:利用操作系统的 PageCache 来缓存数据(典型的利用空间换时间)
- 批量读写:批量读写可以有效提升网络 I/O 效率。
- 数据压缩:Kafka 支持数据压缩,可以有效提升网络 I/O 效率。
- pull 模式:Kafka 架构基于 pull 模式,可以自主控制消费策略,提升传输效率。
- 高可用
- 持久化:Kafka 所有的消息都存储在磁盘,天然支持持久化。
- 副本机制:Kafka 的 Broker 集群支持副本机制,可以通过冗余,来保证其整体的可用性。
- 选举 Leader:Kafka 基于 ZooKeeper 支持选举 Leader,实现了故障转移能力。
- 伸缩性
- 分区:Kafka 的分区机制使得其具有良好的伸缩性。