硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

评论

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

AWS S3 对象存储攻防

火线安全

云原生 云安全

开发提效小技巧分享(一)

编程三昧

3月月更 前端工具

分享几个你可能不知道的交互式Git 命令

华为云开发者联盟

git 交互式暂存 交互式 暂存

BabaSSL 发布 8.3.0|实现相应隐私计算的需求

SOFAStack

开源 密码学 隐私计算 国密 BABASSL

360携手HarmonyOS打造独特的“天气大师”

HarmonyOS开发者

HarmonyOS 应用开发

44条工程管理经验教训

hongfei

项目管理 3月月更 工程管理 工程经验

“元宇宙”时代,离我们还有多远?

澳鹏Appen

人工智能 大数据 AR vr 元宇宙

在线HTML转JSX工具

入门小站

工具

患上“远见病”的VR,不得不走进动物世界

脑极体

如何在 Linux 中将主目录移动到新分区或磁盘?

Ethereal

如何在 eNSP 上保存配置?

Ethereal

性能测试中Disruptor框架shutdown失效的问题分享

FunTester

Disruptor 性能测试 接口测试 高性能队列 FunTester

使用 Recast.AI 创建具有人工智能的聊天机器人

汪子熙

人工智能 机器学习 聊天机器人 CRM 3月月更

实践GoF的23的设计模式:SOLID原则(下)

华为云开发者联盟

设计模式 GoF 依赖倒置原则 接口隔离原则 SOLID原则

译文 | 一文看懂技术债

LigaAI

场景应用 技术债务 非功能性需求

SpringDataRedis序列化带有双引号

编号94530

redis spring 序列化 Jackson

Linux运维必知:如何从其 PID 中查找进程名称

Ethereal

如何搭建FAQ文档?只需四步

小炮

企业管理工具

一周信创舆情观察(2.21~2.27)

统小信uos

MySQL数据备份,恢复和验证

wong

MySQL mysqldump

Linux之route命令

入门小站

Linux

企业深入使用微服务后会面临哪些问题?云原生全链路灰度给了新思路

阿里巴巴云原生

阿里云 云原生 灰度 云原生微服务 链路

让ICT飞鸟,长出数字能源的翅膀

脑极体

三条命令搭建自己的博客平台

山河已无恙

WordPress 3月月更

恒源云(GPUSHARE)_超越预训练 NLP 的模型来喽

恒源云

自然语言处理 深度学习 算法

网络安全kali渗透学习 web渗透入门 使用msf扫描靶机上mysql服务的空密码

学神来啦

网络安全 kali kali Linux 运维‘

要把微博、贴吧变成即时聊天,总共分几步?

融云 RongCloud

pip手动升级

阿呆

Python pip

微信小程序图片拖拽排序探索

云小梦

CSS 微信小程序 图片拖动 movable-area

搭建 VuePress 博客,你可能会用到的一些插件

冴羽

Vue 博客 vuepress 博客开发 博客搭建

小程序已成为超级APP必选项,逐鹿私域“留量”

Speedoooo

小程序 APP开发 软件开发、 轻量应用 小程序管理平台

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