写点什么

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

评论

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

出身最奇葩的程序员:360行,行行转IT,细节爆炸

android 程序员 移动开发

分析Android未来几年的发展前景,制定一份属于你的移动开发职业规划!

android 程序员 移动开发

冲呀!Kotlin-Jetpack-实战之Kotlin-高阶函数!,android初级面试题2018

android 程序员 移动开发

勤勤恳恳做到30岁,3名百度 ,京东,完爆面试官

android 程序员 移动开发

十年未见,当初的Android大佬已经不再牛逼,生活让他承受了太多无奈

android 程序员 移动开发

厉害了,这竟然是毕业一年萌新的Android大厂面筋,赶紧来看看

android 程序员 移动开发

分享学妹提前谋划两年成功入职腾讯面经,Android面试吃透这套资料面试成功率直线飙升!

android 程序员 移动开发

利用Android Studio 上传项目到 github,三年老Android经验面经

android 程序员 移动开发

十年辗转4厂,百场校、社招面试后,移动端app开发框架

android 程序员 移动开发

去抖音面试被问到硬编码与软编码区别,如何选取硬编与软编?

android 程序员 移动开发

刚刚面试完字节跳动,华为,阿里均拿到Offer,安卓开发面试题自定义view

android 程序员 移动开发

历经一年准备我终于进大厂了!(学习总结-&-BAT面试分享

android 程序员 移动开发

又有MVP新写法了,这次我认为挺不错的。,深入分析

android 程序员 移动开发

分享一个RecyclerView中定点刷新的小技巧,android音频框架

android 程序员 移动开发

加拿大程序员趣闻系列 1_N,kotlin线程锁

android 程序员 移动开发

十大Intellij IDEA快捷键,android开发计算器界面

android 程序员 移动开发

十月的Android面试之旅,惨败在字节三面,幸斩获小米Offer

android 程序员 移动开发

原来Span可以这样加载网络图(下),安卓面试题

android 程序员 移动开发

原来面试讲究方法!终于从【小公司一面就挂,下血本买的

android 程序员 移动开发

02 K8S之基础知识

穿过生命散发芬芳

k8s 11月日更

凭借这938页Android面试题合集,拿下了字节,滴滴,Android架构师必备框架技能核心笔记

android 程序员 移动开发

分享一些重要的Android面试题,已拿offer附真题解析

android 程序员 移动开发

单例模式详解,flutter跳转

android 程序员 移动开发

原来一个App是这样启动起来的,一看就懂,剖析Android开发未来的出路在哪里

android 程序员 移动开发

原来学Flutter的人,现在后悔了吗?,我离职后面试收割小米等大厂offer

android 程序员 移动开发

【并发编程技术】「技术辩证分析」在并发编程模式下进行线程安全以及活跃性问题简析

洛神灬殇

Java 并发编程 线程安全 11月日更

宝藏级学习图谱React、Vue、Angular、Ember、Node

devpoint

Vue angular React 11月日更

模块二作业

lxz

最近爆火的互动播客,要解决哪些技术难题?

声网

RTC 互动博客

初冬太冷?圣诞无处可去?那跟我一起来学Android吧,android嵌入式应用开发

android 程序员 移动开发

原来面试讲究方法!终于从【小公司一面就挂(1),实战android应用开发百度下载

android 程序员 移动开发

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