2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

降本增效:Grab 如何在亚马逊云科技上将 Kafka 消费者流量成本降到零

  • 2023-09-07
    北京
  • 本文字数:1076 字

    阅读完需:约 4 分钟

大小:597.00K时长:03:23
降本增效:Grab如何在亚马逊云科技上将Kafka消费者流量成本降到零

Kafka 2.3 引入了将 Apache Kafka 消费者连接到相同可用区域(AZ)代理节点的能力,Grab 利用这一能力重新配置了消费者,将亚马逊云科技上的流量成本降低为零。这一更改大大降低了在亚马逊云科技上运行 Apache Kafka 的基础设施总成本。

 

Grab 以 Apache Kafka 为中心创建了一个流数据平台,支撑公司所有的产品。遵循 Kafka 最佳实践,他们的初始配置为每个 Kafka 分区三个副本,横跨亚马逊云科技区域中三个不同的可用区。负责该平台的团队观察到,跨 AZ 流量占了他们 Kafka 平台一半的成本,因为亚马逊云科技对跨AZ数据传输收费

 

对于初始设置的成本,Fabrice HarbulotQuang Minh Tran的看法如下:

这种设计的问题在于,它会产生惊人的跨 AZ 网络流量。这是因为,在默认情况下,Kafka 客户端只与分区 leader 通信,而分区 leader 有 67%的概率驻留在不同的 AZ 中。

 

跨 AZ 流量包括新发布的消息、代理之间的数据复制和消费者获取的消息。



默认消费者配置,消费者从分区 leader 获取数据(图片来源:Grab工程博客

 

Apache Kafka 2.3开始,可以将消费者配置为从分区副本中获取数据了。这样,如果消费者只从同一 AZ 中的代理获取消息,就不会产生数据传输成本了。

 

这个特性要求 Kafka 代理和消费者都知道其所在的 AZ。对于 Kafka 代理,团队会使用 AZ ID(az1、az2、az3 等)配置broker.rack 。AZ ID 与 AZ 名称(1a、1b、1c 等)不同,因为AZ名称在亚马逊云科技账户间不一致。他们还将参数replica.selector.class的值设置为org.apache.kafka.common.replica.RackAwareReplicaSelector

 

在消费者端,团队更新了内部 Kafka SDK,基于 EC2 主机元数据用 AZ ID 配置client.rack 参数,为的是应用程序团队可以通过导出环境变量来启用该功能。



自定义消费者配置,消费者从最近的副本获取数据(图片来源:Grab工程博客

 

在某些服务上应用新设置后,团队观察发现,跨 AZ 流量成本下降,并且有一些值得注意的副作用。首先,端到端延迟最多增加了 500 毫秒。考虑到大多数消费者从副本获取消息,这也是意料之中的。延迟增加是由复制时间导致的。理论上,任何对延迟敏感的数据流都应该始终从分区 leader 获取数据,即使那样会产生额外的成本。

 

其次,在代理维护(停机)时,直接从副本获取消息的消费者可能会遇到代理不可用的情况,因此,它们应该等待/重试,直到同一 AZ 中的代理恢复在线。最后,团队观察到,代理的负载与跨 AZ 的消费者数量有关。这意味着,消费者的均匀分布对于确保代理的负载平衡至关重要。

 

原文链接:

https://www.infoq.com/news/2023/07/grab-apache-kafka-aws-cost/


相关阅读:

Cloudflare的Kafka之旅:万亿级消息处理实践

使用Strimzi提高Kafka集群的安全性


2023-09-07 08:002517

评论

发布
暂无评论
发现更多内容

4月面试5月成功入职阿里,工作之余整理复盘:面试经历+备战经验分享!

Java 程序员 后端

AQS源码分析看这一篇就够了

Java 程序员 后端

AtomicBoolean介绍与使用

Java 程序员 后端

Bootstrap框架快速上手

Java 程序员 后端

2021,你还在写“赤裸裸”的API吗?(1)

Java 程序员 后端

2021,你还在写“赤裸裸”的API吗?

Java 程序员 后端

22款终端生产力工具,效率飞起!

Java 程序员 后端

22道Java Spring Boot高频面试题

Java 程序员 后端

模块三课后作业-详细架构设计文档-外包学生管理系统

断水风春

架构实战营

BATJ互联网月薪45K的Java岗面试题首次曝光,掌握这些Offer指定跑不了

Java 程序员 后端

2年Java,面试蚂蚁金服总结

Java 程序员 后端

构建大型 Vue.js 应用程序文件结构

devpoint

Vue 11月日更

2021阿里大牛最新发布:Java高频面试题和核心技术(已涨薪6K)

Java 程序员 后端

25 大 Java 后端面试指南,3000 道面试题解析

Java 程序员 后端

3 条掏心掏肺的建议,新手学习编程必备,快上车!

Java 程序员 后端

7月份了,再不准备金九银十就晚了,阿里2021最新数据结构与算法面试题手册

Java 程序员 后端

Alibaba内部Java面试手册,10W字全是精华

Java 程序员 后端

AQS-AbstractQueuedSynchronizer源码解析(下)

Java 程序员 后端

21世纪什么最贵?“人才”看阿里大佬用一本书带你读懂TCP-IP协议

Java 程序员 后端

588页!三个通宵学完这份“宝典”,4面斩获字节跳动offer

Java 程序员 后端

Prometheus HTTP API 查询(四)Target 和查询结果格式

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

【Promise 源码学习】第三篇 - 实现一个简版 Promise

Brave

Promise 11月日更

ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

Java 程序员 后端

2021阿里巴巴钻石级级“Docker全线笔记”新鲜出炉

Java 程序员 后端

容器 & 服务:Helm Charts配置文件分析

程序员架构进阶

容器 Helm 11月日更 chart

4年Java程序员十面阿里终拿下offer,评级P6+年薪30-40w无股票

Java 程序员 后端

Android C++系列:认识JNI

轻口味

c++ android jni 11月日更

as-if-serial规则和happens-before规则的区别

Java 程序员 后端

69-个经典-Spring-面试题和答案详解(下)

Java 程序员 后端

ApplicationContextAware使用理解

Java 程序员 后端

BIGO Java 三面 + HR 面面经(已意向)

Java 程序员 后端

降本增效:Grab如何在亚马逊云科技上将Kafka消费者流量成本降到零_云端开发_Rafal Gancarz_InfoQ精选文章