写点什么

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

评论

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

开发者有话说|成长之路

六月的雨在InfoQ

个人成长 开会 996 007 9月月更

深入剖析nodejs中间件

coder2028

node.js

一比一手写迷你版vue,彻底搞懂vue运行机制

hellocoder2029

JavaScript

手写vue-router核心原理

hellocoder2029

Vue

公司用的堡垒机叫什么?多少钱?

行云管家

网络安全 堡垒机 等级保护 过等保

数据API开发如何快速上手:先了解什么是数据API生命周期管理

雨果

API 数据api

为什么大数据工程师比数据科学家的需求更大

雨果

数据工程师

【Java深入学习】并发常见方法的注意事项

钟奕礼

Java 面试 java;

idea 远程开发 client

黄敏

时隔一年多 jQuery 再度发布 3.6.1 新版本,你还在用JQ吗?

茶无味的一天

JavaScript 前端 框架 ​jQuery

信创升级 | 秒云与人大金仓完成兼容性互认证

MIAOYUN

数据库 信创 国产数据库 信创云 容器云平台

Java开发5年,复习1个月成功上岸京东物流,面试和复习思路分享

钟奕礼

Java 面试 java;

LED显示屏价格与品质哪个更重要

Dylan

LED LED显示屏 led显示屏厂家

中心化决议管理——云端分析

字节跳动终端技术

ios 研发效能 CocoaPods 制品库 云化服务

SAE 助力贵州酒店集团从容支撑贵州特产抢购

阿里巴巴中间件

阿里云 Serverless 云原生 SAE

【编程基础】利用Python实现阿姆斯特朗数的求解

迷彩

Python 9月月更 阿姆斯特朗数 水仙花数

2022第三届云原生编程挑战赛--Serverless VSCode WebIDE使用体验

六月的雨在InfoQ

Serverless 边缘容器 9月月更 Serverless VSCode WebIDE 线上ide

HTTP - TLS1.3 初次解读

懒时小窝

IP地址和MAC地址都可以确定目标地址,为什么二者都在使用,舍弃一个是否可行?

阿柠xn

Mac IP 网络 协议族 9月月更

融云x白鲸《2022社交泛娱乐出海白皮书》

融云 RongCloud

互联网 白皮书 融云

组装式交付-云巧 知多少

六月的雨在InfoQ

9月月更 云巧 组装式交付 云巧资产 云巧工坊

玩转 Flowable 流程实例

江南一点雨

Java springboot workflow flowable

架构实战训练营模块1作业--开启架构之旅

阿姆斯壮

架构实战营 #架构实战营

概述数据交换的构建策略

穿过生命散发芬芳

数据交换 9月月更

字节半天*3面/5天拿offer,全凭自身硬实力和这份Java面试笔记

钟奕礼

Java 面试 java;

2022届秋招Java岗高频面试题盘点,老司机也未必全会,真的太卷了

钟奕礼

Java 面试 java;

模块一作业

Geek_1264yp

Java | this和super关键字【深入理解子类和父类的继承关系】

Fire_Shield

super this 9月月更

想从事运维岗位应该学习什么技能?谁能告诉一下?

行云管家

运维 网络运维 IT运维

阿里云服务器ECS基本操作指南

六月的雨在InfoQ

阿里云 SSH xshell 云服务器ECS 9月月更

java基础面试题

钟奕礼

编程 java;

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