Cloudflare 的 Kafka 之旅:万亿规模消息处理经验分享
在伦敦 QCon 大会上,Cloudflare 高级系统工程师 Andrea Medda 和工程经理 Matt Boyle 分享了他们的平台服务团队在使用 Apache Kafka 来处理万亿规模的消息方面得到的经验教训。
Boyle 首先概述了 Cloudflare 需要解决的问题——提供自己的私有云和公共云服务,以及随着业务需求的增长而出现的团队耦合所带来的运营挑战。接着,他介绍了他们是如何将 Apache Kafka 作为他们的消息总线的。
Boyle 说,虽然消息总线模式解耦了微服务之间的负载,但由于 schema 是非结构化的,所以服务仍然是紧密耦合的。为了解决这个问题,他们将消息格式从 JSON 转成了 Protobuf,并构建了一个客户端库,在发布消息之前对消息进行验证。
随着越来越多的团队开始采用 Apache Kafka,他们开发了一个连接器框架,让团队可以更容易在 Apache Kafka 和其他系统之间传输数据,并在传输过程中转换消息。
在疫情期间,随着 Cloudflare 系统负载的增加,他们发现他们的一个关键用户出现了瓶颈,已触及其服务水平协议(SLA)。Medda 分享了他们为了找到问题的根源,不得不使用来自 Open Telemetry 生态系统的工具来丰富他们的 SDK,以获得更好的跨堆栈交互可见性。
Medda 继续强调,他们 SDK 的成功带来了更多的内部用户,这催生了对更好的文档和 ChatOps 支持形式的需求。
Medda 总结了他们获得的主要的经验教训:
在为 Apache Kafka 提供开发人员工具时,在高度可配置和简单标准化方法之间取得平衡;
选择简单而严格的 1 对 1 契约接口,确保最大限度地了解主题及其使用情况;
在开发工具指标上投入,让问题可以更容易地被发现;
为应用程序开发人员提供清晰的模式文档,确保他们在采用和使用 Apache Kafka 方面保持一致性。
最后,Boyle 分享了一款叫作 Gaia 的内部产品,可以根据 Cloudflare 的最佳实践一键创建服务。
原文链接:
https://www.infoq.com/news/2023/04/cloudflare-kafka-lessons-learned/
相关阅读:
使用 Strimzi 将 Kafka 和 Debezium 迁移到 Kubernetes(https://www.infoq.cn/article/ElNtSM5ISobpMB8fMC0j)
使用 Strimzi 提高 Kafka 集群的安全性 (https://www.infoq.cn/article/CpfvECIb5gWdditBBYy7)
Kafka Streams 与 Quarkus:实时处理事件 (https://www.infoq.cn/article/WfA0p1XoZCJ6INdyJLyv)
声明:本文为 InfoQ 翻译,未经许可禁止转载。
点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!
拼多多临时决定五一三天假,员工集体退票;字节回应140万美元年薪挖角OpenAI;AI龙头寒武纪裁员,研发员工被逼签字|Q资讯
微信扫码关注该文公众号作者