Skip to main content

概述

AutoMQ 基于云重新设计 Kafka,将存储分离至对象存储,在保持和 Apache Kafka 100% 兼容 前提下,为用户提供高达 10 倍的成本优势 以及百倍的弹性优势。

设计理念

存储分离至共享的云存储服务

存算分离的优势已被广泛认可。然后,业界对于存算分离理念的落地往往是将存储分离为一套自管理的分布式存储软件,这无疑显著增加了软件部署、运维和治理的复杂性。AutoMQ 认为,将存储从软件中解耦并分离至共享的云存储服务,是云原生时代最优的解法。

AutoMQ 通过构建在 S3 上的流存储库 S3Stream,将存储卸载至云厂商提供的共享云存储 EBS 和 S3,充分结合两者的存储特征,提供低成本、低延时、高可用、高可靠和无限容量的流存储能力。更多技术细节请参考技术架构章节。

共享存储优于 Shared Nothing 架构

Apache Kafka 利用本地磁盘实现高可靠性存储,为业务逻辑提供了无限流式存储的抽象。所有数据按照特定逻辑存储在各节点的磁盘上,这种设计通常称为 Shared Nothing 架构。

本地磁盘不具备伸缩性,所以 Shared Nothing 架构通常通过横向扩展来提供更高的吞吐。然后,共享的云存储已变得高度弹性,容量近乎“无限”,采用共享存储架构更容易低成本地发挥出云存储的全部能力。

可靠性与可用性分离

Apache Kafka 原生支持多副本机制,通过副本冗余确保数据高可靠性,同时,在不同的副本之间通过 Leader 选举机制实现快速的故障转移,从而提高系统可用性。

在云环境中,EBS 内置了 3 副本存储机制,如果 Kafka 再实现一套 3 副本存储,将导致数据被存储 9 份,显著提高了存储、带宽和计算成本。AutoMQ 认为,云原生的 Kafka 不再需要多副本机制来同时提供可靠性和可用性,通过分而治之的方法,将可靠性分离至云存储,单独提供可用性实现是真正的云原生做法。

技术优势

AutoMQ 相较于 Apache Kafka,具备以下优势:

10 倍的成本优势

AutoMQ 全新云原生架构充分利用对象存储 的数据高可用、弹性供给 能力,相比 Apache Kafka 为客户带来 10 倍 的成本优势

  • 使用对象存储作为核心主存储可以显著降低存储成本。

  • 无需多副本复制即可实现高可用,节省 2/3 的流量和复制成本。

  • 原生支持 Spot 实例、AutoScaling,无需按峰值预留资源。

极致弹性

AutoMQ 将状态存储分离至对象存储服务,确保业务逻辑层完全无状态。AutoMQ 集群能在秒级完成分区迁移和流量重平衡,彻底解决了 Apache Kafka 扩缩容时重平衡缓慢、分区迁移困难的问题。结合云厂商的弹性伸缩组策略,轻松实现集群自适应弹性伸缩。

冷读不影响消息写入

Apache Kafka 的每台服务器都提供固定的 IOPS 用于消息读写,如果遇到大规模冷读,导致 IOPS 达到上限,可能会出现消息写入排队和超时的情况。这是由于 Kafka 存算一体架构的局限性所致。相比之下,AutoMQ 采用了存算分离架构,冷热读写不会相互影响。冷读的吞吐量取决于对象存储的吞吐能力,并且 EBS 作为 WAL,只被写消息流程独占,因此在 AutoMQ 架构中,这个问题被有效规避。

服务零中断

AutoMQ 将数据完全存储在 S3 上,因此在集群扩容时无需数据复制即可快速应对突发的流量洪峰。相比之下,Apache Kafka 在扩容后需要大量带宽进行数据复制,难以应对突发流量。通过自动扩缩容、自动流量平衡和自动故障恢复等功能,AutoMQ 实现了系统的高度自治,无需人工干预即可实现更高水平的可用性。

与 Apache Kafka® 100%兼容

区别于其他厂商重新实现 kafka 协议的做法,AutoMQ 采用存储层极小切面替换的方式,只修改底层的 LogSegment 实现,而保持上层 Apache Kafka 的主要代码不变。这使得 AutoMQ 能够轻松实现与 Apache Kafka 100% 的兼容性,并快速适配新版本。

相关内容