写点什么

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

评论

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

Google 宣布将 Knative 捐赠给 CNCF

QiLab

Google Knative cncf

8 张图 | 剖析 Eureka 的首次同步注册表

悟空聊架构

四步轻松玩转微服务敏捷开发

阿里巴巴中间件

阿里云 微服务 云原生 敏捷开发 中间件

资产数字化的当下,数据隐私危如累卵

CECBC

博文推荐|多图科普 Apache Pulsar

Apache Pulsar

开源 架构 分布式 云原生 Apache Pulsar

模块一作业

Geek_e6f7f6

架构实战营

超基础的机器学习入门-原理篇

凹凸实验室

机器学习 AI 低代码平台

RocketMQ这样做,压测后性能提高30%

中间件兴趣圈

RocketMQ 性能 Apache RocketMQ

架构实战营模块五作业

渐行渐远

架构实战营

11 张图 | 讲透原理,最细的 Eureka 增量拉取

悟空聊架构

悟空聊架构

6000字 | 深入理解 Ribbon 的架构原理

悟空聊架构

悟空聊架构

iOS Pod Update 指数级变慢?看 Flutter 新一代仲裁算法 Pubgrub 如何解

阿里巴巴终端技术

flutter ios 算法 仲裁

后端程序员福利套餐,22份资料合集,你能想到的关键技术,都在这里

奔着腾讯去

c++ golang Linux 音视频 学习资料

架构训练营第3期模块5作业

吴霏

架构训练营

硬核图解 SpringCloud 源码系列

悟空聊架构

SpringCloud 悟空聊架构 内容合集 签约计划第二季 技术专题合集

车用能源的终极:氢能车落地普及还要多久?

脑极体

一场关于元宇宙公司之死的剧本杀

脑极体

未来,区块链将在这些领域广泛应用!

CECBC

模块5-微博评论高性能高可用计算架构分析

小何

「架构实战营」

架构实战训练营|课后作业 模块 5

Geek_6bb688

如何在信息不完备下进行快速决策?

石云升

决策 28天写作 职场经验 12月日更

32 K8S之DaemonSet/Job/CronJob控制器

穿过生命散发芬芳

k8s 28天写作 12月日更

SpringCloudAlibaba微服务技术栈精讲大合集

XiaoLin_Java

内容合集 签约计划第二季 技术专题合集

Android C++系列:Linux进程间关系

轻口味

c++ android 28天写作 12月日更

快速云原生化,从数据中心到云原生的迁移最佳实践

阿里巴巴云原生

阿里云 云原生 实践 迁云方案

说出你和「云原生」的故事,获得年度云原生顶级盛会通行证

阿里巴巴云原生

阿里云 开源 云原生 投稿

新晋 CNCF 沙箱项目 OpenClusterManagement 带来了它的最新特性

阿里巴巴中间件

阿里云 中间件 KubeVela cncf OCM

解密 Dubbo 三大中心的部署架构

阿里巴巴中间件

阿里云 微服务 云原生 dubbo 中间件

vue框架的组件与组件通信方法

Changing Lin

12月日更

AI:人工智能 or 异类智能(Alien Intelligence)

mtfelix

28天写作

中年人的沉重 2

张老蔫

28天写作

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