写点什么

降本增效: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:002411

评论

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

从头到尾没有一句废话!阿里Redis神级手册,从基础到源码

Java redis 编程 面试 阿里

凭借一份“面试真经pdf”,我四面字节跳动,拿下1-2级offer

Java 程序员 面试 后端 计算机

千字真言,字字珠玑,我的Golang学习笔记,赤诚分享

奔着腾讯去

Go 语言

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java 编程 面试 IT 计算机

万物皆为向量:在线向量召回工程服务化实践

爱奇艺技术产品团队

深度学习 推荐 向量

进化十多年,四足机器人的网红属性有改变吗?

脑极体

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Java 程序员 架构 面试 大厂

字节大牛的1850页Leetcode刷题笔记外泄!用实力折服众人

Java 程序员 字节跳动 面试 算法

赋能数据中心绿色低碳 浪潮云洲有实招

云计算

浅谈云上攻防——Kubelet访问控制机制与提权方法研究

腾讯安全云鼎实验室

k8s 云安全

云原生的能源数据管理平台方案|EMQ 映云科技&华为云联合直播内容回顾

EMQ映云科技

华为云 能源 Cloud 碳中和 emq

替换及重置Homebrew默认源以及M1安装

一个大红包

8月日更

Activiti数据库表结构

金陵老街

排查指南 | 两个案例学会从埋点排查 iOS 离线包

蚂蚁集团移动开发平台 mPaaS

mPaaS

“性能混合架构”了解了吗?英特尔Alder Lake惊艳来袭

科技新消息

记一次10人跨组织、跨地域的开源协作经历

腾源会

开源 腾讯 腾讯开源

基于java springboot vue活动报名系统源码(毕设)

清风

Java springboot elementUI 毕业设计

2021年8月数据库流行度排行:数据库道路漫漫其修远兮,为用户创造核心价值是正道

墨天轮

数据库 TiDB oceanbase 国产数据库 达梦

如何在Android 8.0以下高效地复用图片?

爱奇艺技术产品团队

android 开发 图片存储

字节架构师离职后,熬夜整理55W字Java面试手册,逆风翻盘进阿里

Java 编程 程序员 架构 面试

Go 让 Apache APISIX 如虎添翼

API7.ai 技术团队

Apache 开源 插件 APISIX Go 语言

厉害!GitHub星标70K阿里大佬手写的Spring Boot实战手册真不错

Java 编程 程序员 架构 计算机

深度解读鸿蒙轻内核CPU占用率

华为云开发者联盟

鸿蒙 cpu 任务 CPUP LiteO

超赞!GitHub上百万下载量Java面试手册!颠覆你的认知

Java~~~

Java 架构 面试 网络 架构师

使用 GitHub Issues 来写博客,真香。

彭宏豪95

GitHub 写作 博客

鲲鹏基础软件开发赛道openLooKeng赛题火热报名中,数十万大奖等您来收割

华为云开发者联盟

鲲鹏 openLooKeng

DevOps如何攻克研发流程六大痛点?

BoCloud博云

在华为P50 Pro中,听到AI异构通信的朱弦三叹

脑极体

NodeJs深入浅出之旅:模块🌀

空城机

大前端 Node 8月日更

一周信创舆情观察(8.9~8.15)

统小信uos

Qunar 酒店 NodeJS 覆盖率收集实践

Qunar技术沙龙

大前端 nodejs Node JavaScrip

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