在伦敦 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/
相关阅读:
评论