文章目录
- AutoMQ:云原生 Kafka 的全新演绎
- 概述
- 设计理念
- 存储分离至共享云存储服务
- 可靠性与可用性分离
- AutoMQ 的技术优势
- 1. 成本效益
- 2. 极致弹性
- 3. 冷热数据隔离
- 4. 服务零中断
- 5. 与 Apache Kafka 完全兼容
- AutoMQ 部署与验证
- 一键安装
- 操作指南
- 创建 Topic
- 发送消息
- 消费消息
- 总结
公众号,感谢!
AutoMQ:云原生 Kafka 的全新演绎
概述
AutoMQ 重新设计了 Kafka 的架构,基于云的基础设施,将存储分离至对象存储,实现了 Apache Kafka 100% 的兼容性。它不仅提供了 10 倍的成本优势,还带来了百倍的弹性,极大地提升了扩展性和性能。
与传统的 Kafka 对比,AutoMQ 通过创新的存算分离架构,减少了运维复杂度,并充分利用了云环境中的共享存储特性。
官网:https://www.automq.com/zh
GitHub(3.6k):https://github.com/AutoMQ/automq
设计理念
存储分离至共享云存储服务
存算分离的优势早已在多个领域被证明,但许多传统的实现方式将存储设计为复杂的自管理分布式存储集群,增加了运维难度。AutoMQ 则将存储彻底解耦,依托云存储(如 S3 和 EBS)提供灵活、低成本、高可用的存储解决方案。通过自定义的 S3Stream 流存储库,AutoMQ 最大化地利用了共享存储的弹性和成本优势。
对比 Shared Nothing 架构:
Kafka 依赖本地磁盘进行数据存储,称为 Shared Nothing 架构,但本地磁盘受限于物理扩展性。而共享云存储的容量几乎无限,采用共享存储架构可以更低成本地实现弹性伸缩和高可靠性。
可靠性与可用性分离
在传统的 Kafka 中,通过多副本机制来确保数据可靠性并提升可用性。AutoMQ 不再需要额外的多副本存储策略。通过将可靠性交给云存储处理,AutoMQ 专注于提供更高效的可用性提升机制。
AutoMQ 的技术优势
AutoMQ 不仅仅是对 Apache Kafka 的简化,而是从架构到应用的全方位优化。其主要技术优势包括:
1. 成本效益
由于依赖云存储,AutoMQ 将 Kafka 的本地存储成本降低了 10 倍。无需再为硬件、运维和管理本地存储集群而付出高额成本。
2. 极致弹性
AutoMQ 通过存算分离架构,确保业务逻辑层无状态化,从而能够在秒级完成分区迁移和流量重平衡,彻底解决 Kafka 在扩缩容时的缓慢问题。通过结合云厂商的弹性伸缩策略,轻松实现自动化的弹性伸缩。
3. 冷热数据隔离
在 Kafka 中,冷数据的读取可能会影响写入性能,但 AutoMQ 的架构通过将冷读与写操作彻底分离,避免了这种影响。冷读性能取决于对象存储的吞吐能力,而 EBS 作为日志存储(WAL),只为写操作服务,从而保障了稳定的写入性能。
4. 服务零中断
由于 AutoMQ 的数据完全存储在 S3 上,集群扩容时无需复制数据,能够快速应对突发流量。相较于 Kafka 在扩容时的复杂数据复制过程,AutoMQ 通过自动流量平衡和自动故障恢复,实现了真正的无中断服务。
5. 与 Apache Kafka 完全兼容
AutoMQ 仅在存储层对 LogSegment 进行优化,保留了 Kafka 的上层逻辑,因此能够做到与 Apache Kafka 100% 兼容。用户可以轻松迁移现有 Kafka 工作负载,无需额外的适配工作。
AutoMQ 部署与验证
一键安装
AutoMQ 提供了简易的一键安装命令,用户可以在本地快速部署 AutoMQ 进行验证和测试:
curl https://download.automq.com/community_edition/standalone_deployment/install_run.sh | bash
安装完成后,可以看到以下安装信息。该示例展示了在单台服务器上的部署效果:
如果需要停止并卸载 AutoMQ,执行以下命令即可:
curl https://download.automq.com/community_edition/standalone_deployment/stop_uninstall.sh | bash
操作指南
创建 Topic
AutoMQ 的命令行操作与 Kafka 完全兼容。使用以下命令创建一个新 Topic:
CMD='docker run --network automq_net automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server broker1:9092,broker2:9092"'; [ "$(uname)" = "Linux" ] && eval "sudo $CMD" || eval $CMD
与 Kafka 相同,创建 Topic 的命令毫无差别,验证了 AutoMQ 的高兼容性。
发送消息
使用 Kafka 提供的脚本命令,可以通过以下命令向 Topic 中发送消息:
CMD='docker run -it --network automq_net automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server broker1:9092,broker2:9092"'; [ "$(uname)" = "Linux" ] && eval "sudo $CMD" || eval $CMD
消费消息
使用以下命令从指定 Topic 中消费消息:
CMD='docker run --network automq_net automqinc/automq:latest /bin/bash -c "/opt/kafka/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server broker1:9092,broker2:9092"'; [ "$(uname)" = "Linux" ] && eval "sudo $CMD" || eval $CMD
总结
AutoMQ 通过云原生的架构优化,显著提升了 Kafka 的弹性和性能,并大幅降低了成本。其与 Apache Kafka 完全兼容的设计,使得企业可以无缝迁移现有的 Kafka 任务负载,同时享受到 AutoMQ 带来的巨大性能与弹性优势。但目前用户群体还不是很大,如您要上生产环境,还需仔细论证后再做决定。