Apache Kafka 的核心架构是什么?为什么能支持高吞吐?▾
Kafka 采用发布-订阅模式,由 Producer、Broker、Consumer、ZooKeeper/KRaft 组成。消息按 Topic 分类,Topic 划分为 Partition 分区并行处理,支持水平扩展。通过顺序磁盘写入(顺序 I/O 接近内存速度)、零拷贝(sendfile)技术和页缓存,Kafka 单集群可轻松达到每秒百万级消息吞吐,延迟在毫秒级。
Kafka 和 RabbitMQ 在消息队列选型上有什么区别?▾
Kafka 是分布式日志型消息系统,消息持久化存储并可重放消费,适合事件流式处理、大数据管道、日志聚合场景。RabbitMQ 是传统消息代理,支持复杂路由(topic/exchange/fanout)和事务消息,适合任务分发、RPC 调用等低延迟业务消息。Kafka 吞吐量远高于 RabbitMQ,但单条消息延迟略高,且不支持精细路由。
Apache Kafka 的使用成本和定价模式是怎样的?▾
Kafka 本身是 Apache 2.0 开源协议,可免费下载部署,硬件成本即主要开销(普通 3 节点集群约需 3 台 8C16G 服务器)。商业方案如 Confluent Cloud 按吞吐量和存储量计费,起步约 $1/GB 传输。AWS MSK、阿里云 Kafka 等托管服务按实例规格和存储按月收费,比自建省去运维成本。
Kafka 常见的部署方式有哪些?生产环境如何选型?▾
常见部署方式包括:1)自建集群,部署在物理机或虚拟机,完全可控但运维复杂;2)容器化部署,使用 K8s 配合 Strimzi 或 Confluent Operator,便于弹性扩缩容;3)云托管服务(MSK、Confluent Cloud、阿里云 Kafka),免运维,按需付费。生产环境推荐至少 3 节点 Broker、副本因子 RF=3,开启幂等和压缩,并部署监控(Kafka Exporter + Prometheus)。
Kafka 适用于哪些典型业务场景?▾
Kafka 主要适用于:1)日志和指标采集,集中各服务日志供 ELK、ClickHouse 分析;2)数据库变更捕获(CDC),通过 Debezium 同步 MySQL/PostgreSQL 到下游数据仓;3)事件驱动微服务架构,服务间通过 Topic 解耦通信;4)实时流处理,配合 Flink/Spark Streaming 做风控、推荐、实时大屏;5)消息削峰填谷,应对秒杀等高并发写入场景。不适合单条消息需复杂路由的小规模 RPC 通信。