跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.automq.com/llms.txt

Use this file to discover all available pages before exploring further.

AutoMQ 基于 S3 的共享存储架构可以避免 Broker 之间的跨可用区副本复制以及 Client 的跨可用区数据读写流量。本文档介绍如何使用 AutoMQ 节省跨可用区传输流量。
本文中提及的 AZ 全称为 Available Zone,特指公共云环境中,云厂商提供的可用区(Zone)。 每个独立的 AZ 背后可能是独立的机房设施。

问题背景

Apache Kafka 跨 AZ 流量分析

用户在 AWS、GCP 云环境中如果将 Apache Kafka 部署到多个 AZ,虽然可以实现多 AZ 服务容灾,但同时会带来跨 AZ 数据传输成本,大规模集群中流量成本可能占比达到 60-70%
  • 跨 AZ 生产流量 :假设 Producer 未设置 ShardingKey,并且分区在集群节点间均匀分布。那么至少有 2 / 3 的 Producer 流量会跨 AZ 发送,例如 AZ1 的 Producer 分别有 1 / 3 的流量发送到 AZ2 和 AZ3。
  • 服务端跨 AZ 复制流量 :Kafka Broker 收到消息后为了保证数据的高可靠,会将数据复制到其他 AZ 的 Broker,产生 2 倍 Produce 的跨 AZ 流量。
  • 跨 AZ 消费流量 :Consumer 可以通过设置 client.rack 来消费同 AZ 的分区/副本来避免产生跨 AZ 流量。

AutoMQ 消除跨可用区数据传输

AutoMQ 使用 S3 实现了存算分离架构,AutoMQ 基于 S3 实现了零跨可用区流量费用:
  • 生产流量:AutoMQ 内置 Proxy 层拦截和识别跨可用区的 Produce 请求,并基于 S3 构建跨可用区代理通道,将 Produce 请求代理转发到真正的分区 Leader。生产者只需要与同可用区的 Broker 节点通信,无跨可用区流量费用。
  • 复制流量:AutoMQ 使用 S3 作为共享存储层,S3 会通过纠删码保在多可用区之间生成多副本,AutoMQ Broker 节点之间无 Apache Kafka 的复制流量。
  • 消费流量:除了 Leader 分区外,AutoMQ 会在其他每个可用区生成一个只读分区。只读分区按需直接从 S3 读取 Leader 分区写入的数据。消费者只需要与同可用区的 Leader 分区或者只读分区通信,无跨可用区流量费用。

配置文档

使用 AutoMQ 的跨可用区数据路由功能消除跨可用区数据传输,需要同时在服务端和客户端开启配置。相关配置文档如下: 配置完成后,可以进行数据收发测试,并参考监控跨 AZ 流量▸文档观测实际产生的跨可用区流量。