Pinterest 开源通用 PubSub 客户端库 PSC

百家 作者:InfoQ 2024-03-16 12:05:08

作者 | Rafal Gancarz
译者 | 明知山
策划 | 丁晓昀

Pinterest 开源了其通用的 PubSub 客户端库 PSC,该库已在生产环境中使用了一年半。该库帮助开发人员提升开发效率,同时提升服务的可伸缩性和稳定性,为工程团队带来了好处。已经有超过 90% 的 Java 应用程序通过少量的修改迁移到了 PSC。

Pinterest 在其平台上重度使用消息传递基础设施,包括 Apache Kafka、Apache Flink 和 MemQ。Pinterest 软件工程师 Jeff Xiang 总结了使用多种消息传递后端所带来的一些挑战:

多年的运营经验告诉我们,平台团队拥有和维护统一的 PubSub 接口可以让我们的客户和业务从中极大地受益,应用程序开发人员可以专注于应用程序逻辑,而不是花费宝贵的时间调试客户端与服务器的连接问题。

Pinterest 开发了一个通用的 PubSub 客户端库,与原生客户端库相比,它提供了统一的抽象和增强的功能。PSC 支持自动服务发现、优化配置、自动错误处理、拦截器、指标和优化配置。该库提供了两个主要接口:PSC Producer 和 PSC Consumer,每个接口都能够管理一个或多个后端生产者或消费者。

PubSub 客户端架构(来源:PSC GitHub 代码库

该库引入 Resource Name(RN)来支持消息传递主题的自动服务发现。主题引用使用全限定 RN 字符串,其中包含建立代理连接所需的所有信息。例如,secure:/rn:kafka:prod:aws_us-west-1:shopping:transaction指定了主题、集群、区域以及客户端需要连接的后端(Kafka)。这种方式可以防止像原生客户端那样出现因使用无效主机 / 端口组合、错误的 SSL 配置选项和凭据、区域等导致的错误。

Pinterest 的工程师开发了一种 Flink-PSC 连接器,可以实现基于 Flink 的工作负载的无缝迁移。迁移所面临的主要挑战是确保新迁移的作业可以从 Flink 检查点文件中恢复其作业状态。

PubSub 客户端提供了与原生客户端 100% 相同的 API,Pinterest 因此可以将 90% 以上的 Java 应用程序迁移到 PSC,对代码库所作的更改非常小。迁移任务通常涉及替换导入和引用,以及更新客户端配置,包括新的 Resource Name 字符串。

PSC 对 Flink 作业重启的影响(来源:Pinterest 工程博客

Pinterest 计划进一步在 PSC 中引入增强功能,包括自动处理更多可修复的错误,例如检测和刷新即将过期的 SSL 证书。Pinterest 还在开发 C++ 版本的客户端,并计划开发 Python 版本。Pinterest 的平台团队希望利用客户跟踪功能来支持客户扣款,以便将基础设施成本归入项目和团队。

Aaron Lee 在回应 LinkedIn 的一个帖子 时写道:

一个统一的设计良好的客户端对于这样一个核心基础设施的影响是如此之大。我看到这给其他大型工程团队带来了很多价值。

查看英文原文

https://www.infoq.com/news/2024/02/pinterest-pubsub-kafka-flink/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

敲了17年代码,我现在连个面试机会都得不到

“微软已经沦落为 OpenAI 的一个 IT 部门”!资源倾斜引发微软内部员工不满、高管离职

90 后华人团队真来砸程序员饭碗了!推出全球首个 AI 超级工程师:拥有全栈技能,一个指令就能完成整个开发过程

TikTok 拼死一战:弹窗 1.7 亿用户强势反击,国会 1 分钟 20 个电话被打爆

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接