无盘 Kafka® on S3:成本节省 10 倍,秒级伸缩
📑 文档
🔥 立即体验 AutoMQ Playground
[](https://www.linkedin.com/company/automq)
[](https://go.automq.com/slack)
[-yellow)](https://www.automq.com/blog/automq-vs-apache-kafka-a-real-aws-cloud-bill-comparison?utm_source=github_automq)
[-orange)](https://www.automq.com/docs/automq/benchmarks/automq-vs-apache-kafka-benchmarks-and-cost?utm_source=github_automq)
[](https://gurubase.io/g/automq)
[](https://deepwiki.com/AutoMQ/automq)
前提条件
在本地运行 AutoMQ 之前,请确保:
- Docker 版本 20.x 或更高
- Docker Compose v2
- 至少为 Docker 分配 4 GB 内存
- 系统端口 9092 和 9000 可用
[!Tip]
部署生产就绪的 AutoMQ 集群具有挑战性。此快速入门仅用于评估 AutoMQ 功能,不适用于生产环境。关于生产部署的最佳实践,请 联系 我们的社区获取支持。
docker/docker-compose.yaml 文件提供了一个简单的单节点设置,适用于快速评估和开发:
curl -O https://raw.githubusercontent.com/AutoMQ/automq/refs/tags/1.5.5/docker/docker-compose.yaml && docker compose -f docker-compose.yaml up -d
此设置包含一个同时充当控制器和代理的 AutoMQ 节点,以及用于 S3 存储的 MinIO。所有服务都在名为 automq_net 的 Docker 桥接网络中运行,您可以在该网络中启动 Kafka 生产者来测试 AutoMQ:
docker run --network automq_net automqinc/automq:latest /bin/bash -c \
"/opt/automq/kafka/bin/kafka-producer-perf-test.sh --topic test-topic --num-records=1024000 --throughput 5120 --record-size 1024 \
--producer-props bootstrap.servers=server1:9092 linger.ms=100 batch.size=524288 buffer.memory=134217728 max.request.size=67108864"
测试完成后,可以通过以下命令销毁该设置:
docker compose -f docker-compose.yaml down
docker/docker-compose-cluster.yaml 文件提供了更复杂的设置,包含三个 AutoMQ 节点,非常适合测试 AutoMQ 的集群功能,并且可以以相同方式运行。
还有其他部署选项可供选择:
🗞️ 最新功能 - Table Topic
Table Topic 是 AutoMQ 的一项新功能,结合了流和表的功能,统一了流式处理和数据分析。目前,它支持 Apache Iceberg,并与 AWS Glue、HMS 和 Rest catalog 等目录服务集成。此外,它还原生支持 S3 tables,这是 AWS 在 2024 re:Invent 上发布的新产品。了解更多。

🔶 为什么选择 AutoMQ
AutoMQ 是一个无状态的 Kafka 替代方案,运行在 S3 或任何兼容 S3 的存储(如 MinIO)上。它旨在解决 Apache Kafka 的两个主要问题。首先,由于代理的有状态特性,Kafka 集群难以进行横向扩展或缩减。数据移动是必需的,即使在代理之间重新分配分区也是一个复杂的过程。其次,在云上托管 Kafka 的成本可能高得令人望而却步。您需要面对 EBS 存储、跨可用区流量以及因 Kafka 有限的扩展性而导致的严重过度配置的高昂成本。
以下是 AutoMQ 的一些关键亮点,使其成为替代 Apache Kafka 集群的理想选择,无论是在云上还是本地,只要您有兼容 S3 的存储:
- 高性价比:首个真正云原生的流式存储系统,专为在云上实现最佳成本和效率而设计。请参阅 此报告 了解我们如何在云上将 Apache Kafka 的账单削减 90%。
- 高可靠性:利用对象存储服务实现零 RPO、秒级 RTO 和 99.999999999% 的数据持久性。
- 零跨可用区流量:通过使用云对象存储作为首选存储解决方案,AutoMQ 消除了 AWS 和 GCP 上的跨可用区流量成本。在传统的 Kafka 设置中,超过 80% 的成本来自跨可用区流量,包括生产者、消费者和副本侧。
- 无服务器:
- 自动伸缩:监控集群指标并自动扩缩容以匹配您的工作负载,实现按需付费模式。
- 秒级伸缩:计算层(代理)是无状态的,可以在几秒钟内进行扩展或缩减,使 AutoMQ 成为真正的无服务器解决方案。
- 无限扩展:利用云对象存储作为主要存储解决方案,消除对存储容量的担忧。
- 免管理:内置的自动平衡器组件会自动在代理之间调度分区和网络流量,无需手动重新分配分区。
- 高性能:
- 高吞吐量:利用预取、批处理和并行技术,最大限度地发挥云对象存储的能力。请参阅 AutoMQ 性能白皮书 了解我们如何实现这一点。
- 低延迟:AutoMQ 默认直接在 S3 上运行,导致数百毫秒的延迟。企业版提供个位数毫秒的延迟。联系我们 了解更多详情。
- 内置指标导出:原生导出 Prometheus 和 OpenTelemetry 指标,支持推送和拉取。放弃低效的 JMX,使用现代工具监控您的集群。请参阅 AutoMQ 提供的 完整指标列表。
- 100% Kafka 兼容:与 Apache Kafka 完全兼容,以更高的性价比和运营效率提供所有功能。
✨架构
AutoMQ 是开源 Apache Kafka 的一个分支。我们引入了一个基于对象存储的新存储引擎,将经典的共享无存储架构转变为共享存储架构。

关于 AutoMQ 的架构,它与 Kafka 有着根本的不同。核心区别在于 Apache Kafka 的存储层以及我们如何利用对象存储来实现无状态代理架构。AutoMQ 由以下关键组件组成:
- S3 Storage Adapter:一个适配器层,重新实现了 UnifiedLog、LocalLog 和 LogSegment 类,以便在 S3 上而不是本地磁盘上创建日志。如果需要,仍然支持传统的本地磁盘存储。
- S3Stream:一个共享的流式存储库,封装了各种存储模块,包括 WAL 和对象存储。WAL 是针对频繁写入和低 IOPS 进行优化的预写日志,以降低 S3 API 成本。为了提高读取性能,我们使用 LogCache 和 BlockCache 来提升效率。
- Auto Balancer:一个自动平衡代理之间的流量和分区的组件,无需手动重新分配。与 Kafka 不同,这个内置功能消除了对 Cruise Control 的需求。
- Rack-aware Router:Kafka 长期以来一直面临 AWS 和 GCP 上的跨可用区流量费用问题。我们的共享存储架构通过使用机架感知路由器为不同可用区的客户端提供特定的分区元数据来解决这个问题,从而在通过对象存储交换数据的同时避免跨可用区费用。
有关 AutoMQ 架构的更多信息,请访问 AutoMQ 架构 或直接浏览源代码。
🌟 保持领先
在 GitHub 上为 AutoMQ 加星标,以第一时间获取新版本更新。

💬 社区
您可以通过以下群组或频道讨论或询问有关 AutoMQ 的问题:
👥 如何贡献
如果您发现 AutoMQ 存在问题,请提交 GitHub Issues。
要为 AutoMQ 做出贡献,请参阅 行为准则 和 贡献指南。
我们有一个 好的第一个问题 列表,可帮助您入门、积累经验并熟悉我们的贡献流程。
👍 AutoMQ 企业版
AutoMQ 企业版提供了一个强大、用户友好的控制平面,用于无缝集群管理,在开源版本的基础上增强了可用性和可观测性。此外,我们还提供 Kafka Linking,用于从任何兼容 Kafka 的集群零停机迁移到 AutoMQ。
联系我们 了解更多关于 AutoMQ 企业版的信息,我们将很乐意协助您进行免费试用。
📜 许可证
AutoMQ 采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。
📝 商标
Apache®、Apache Kafka®、Kafka®、Apache Iceberg®、Iceberg® 及相关开源项目名称是 Apache 软件基金会的商标。