🚀 什么是Kafka#
Apache Kafka 是一个分布式消息队列系统,核心思想是
Producer(生产者)→ Topic(主题) → Consumer(消费者)
比如:用户下单 → 发一条消息到 order-topic → 库存服务、邮件服务各自消费这条消息。
🐹 什么是 kafka-go?#
kafka-go 是 Segment 公司开发的 Go 语言 Kafka 客户端库,同时提供低层级 API 和高层级 API,其设计理念是模仿 Go 标准库的风格,方便与现有代码集成。
为什么选它而不用其他库? 当时已有的选项各有问题:sarama 虽然最流行,但文档差、API 暴露底层协议细节、不支持 Go context;confluent-kafka-go 依赖 C 库(cgo),交叉编译麻烦;goka 则只专注于特定使用模式。
kafka-go 的优势在于:纯 Go 实现(无 CGO 依赖)、支持高低层 API、内置消息批处理、原生支持消费者组、以及对 Go context 的完整支持。
🏗️ 三个核心概念#
- Conn(低层级 API) Conn 类型是 kafka-go 包的核心,它封装了底层的网络连接,向 Kafka 服务器暴露低层级 API。 GitHub
- Writer(生产者,高层级) 用来向 Topic 发送消息,支持自动批处理、重试等。
- Reader(消费者,高层级) Reader 是 kafka-go 暴露的另一个核心概念,目的是简化从单个 topic-partition 消费消息的典型用法。它会自动处理重连和 offset 管理,并通过 Go context 支持异步取消和超时。