Redian新闻
>
Pinterest 使用 Kubernetes 和 Helix 构建下一代异步计算平台 Pacer

Pinterest 使用 Kubernetes 和 Helix 构建下一代异步计算平台 Pacer

科技

作者 | Rafal Gancarz
译者 | 明知山
策划 | Tina

Pinterest 推出其下一代异步计算平台 Pacer,用以取代旧的解决方案 Pinlater。随着公司的发展,Pinlater 在伸缩性和可靠性方面面临着挑战。新的架构使用 Kubernetes 来调度作业,使用 Apache Helix 来进行集群管理。

Pinterest 之前构建了一个异步作业执行平台 Pinlater,并在几年前将其开源。Pinlater 已在生产环境中使用了多年,并支持许多关键的功能领域。Pinterest 在 AWS EC2 上运行了几个 Pinlater 集群,每分钟处理数百万个任务。

Pinterest 软件工程师 Li Qi 和 Chen Zhihuang 解释了促使他们构建新平台的动机:

随着 Pinterest 在过去几年的增长和 Pinlater 流量的增加,我们发现 Pinlater 存在许多局限性,包括伸缩性瓶颈、硬件效率、缺乏隔离性和可用性。我们在平台方面也遇到了新的挑战,包括那些影响我们数据存储吞吐量和可靠性的挑战。

基于他们使用 Pinlater 的经历,团队意识到他们不可能在现有架构中解决所有已知的问题,于是他们决定构建下一代平台。

新的架构 Pacer 包含了一个无状态的 Thrift API 服务(与 Pinlater 兼容)、一个数据存储(MySQL)、一个有状态的脱队列代理服务(Dequeue Broker),以及在 Kubernetes 上运行的作业执行 Worker 池。Apache Helix(带有 Zookeeper)被用来将作业队列分区分配给脱队列代理。

Pacer 架构(来源:Pinterest 工程博客)

脱队列代理是一种有状态服务,负责从数据存储中预取作业队列数据并将其缓存到内存中,以减少延迟和隔离入队列和脱队列的工作负载。每个脱队列代理分配到一组作业队列分区,因此可以独占获取和执行作业,从而避免出现争用的情况。Kubernetes 为每个作业队列提供了一个专用的 Pod 池,消除因不同作业类型对资源倾斜消耗所带来的影响。

新的脱队列和执行模型缓解了 Pinlater 所遭遇的问题,包括在从热点分区获取数据时避免扫描所有分区或减少锁的争用。此外,它支持按照排队顺序(FIFO)的方式执行作业,前提是为作业队列配置单独的分区。

新的架构需要给脱队列代理实例进行独占式队列分区分配,与 Kafka消费者主题分区分配类似。Pinterest 的团队选择使用 Apache Helix 来实现这个功能。Apache Helix 提供了一个通用的集群管理框架,用于给集群内的脱队列代理进行分区分配。Helix 使用 Apache Zookeeper 实现嵌在脱队列代理实例中的 Helix 控制器和 Helix 代理之间的资源配置通信。

用 Apache Helix 和 Zookeeper 协调脱队列代理(来源:Pinterest 工程博客)

Helix 控制监控加入和离开集群的脱队列代理实例,以及对已配置的作业队列做出的任何变更,如果发生变更,它将重新计算理想的队列分区与代理分布。在最新的分区分配被保存到 Zookeeper 之后,各个代理实例就会更新它们的内部状态,并从它们负责的队列分区中获取数据。

原文链接:

https://www.infoq.com/news/2023/08/pinterest-pacer-kubernetes/

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

今日好文推荐

融资 7 亿元后,Mojo 之父实名吐槽:Mojo 太好用了,颤抖吧 C++

微软被曝搪塞员工绩效,只强化个人表现;文心一言 App 登苹果免费应用排行榜首位;商汤科技被爆裁员?官方回应|Q资讯

一个潮流的终结?推出仅 3 年后,亚马逊宣布终止低代码 Honeycode 服务,前员工爆料:长期没有顾客!

硬核探访!AR 头盔、数字孪生......揭秘宁德核电站的数字化实践

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
“互联网”要写成the Internet还是the internet?在 Kubernetes 集群中,如何正确选择工作节点资源大小如何利用 Kubernetes 实现应用零宕机通过例子介绍如何从零开发 Kubernetes Operator那条也许不会穿的裙子剑指 Kubernetes!微软发布开源平台 Radius:高效构建、运行云原生应用程序XREAL 联合创始人吴克艰谈AR:下一代计算平台及其关键技术如何在 Kubernetes 集群中设置动态 NFS 配置 | Linux 中国Jenkins pipeline如何连接Kubernetes?Kubernetes 中的 Java 应用的内存调优这些 kubernetes 的安全机制你都了解吗?Kubernetes 网络排错终极指南图解几种常见 Kubernetes Pod 驱逐场景SpringCloud 微服务迁移到 Kubernetes 容器化完整流程可怕的是,苹果正在占领下一代计算平台Kubernetes DevSecOps 实践对冲巨头 | Point 72 Quantitative Researcher Intern已开启招聘深入理解Kubernetes Pod调试kuberntes ingress 和 openshift router 异同?火星乐园第三部《灰界》第三十五章 空间规划973页kubernetes学习笔记,全是K8S核心干货,限时分享3天​下一代Transformer:RetNet结构可视化及Vision RetNet展望如何用Kubernetes实战快速搭建typecho个人博客?973页kubernetes学习笔记,核心干货分享Kubernetes 资源请求和限制的最佳实践For This Rural County, Internet Fame Is About More Than MoneyHAUSER - Mia & Sebastian’s Theme - La La Land分步指南:安装和访问 Kubernetes 仪表板 | Linux 中国使用 kube-downscaler 降低Kubernetes集群成本承担自杀烂命,冤枉了抑郁症Kubernetes 实战:使用 k8s+jenkins 实现 CICDCity of startsAs Viewers Fret, China Vows to Streamline Fees for OTT ContentKubernetes 上 API 网关的未来使用开源工具监控 Kubernetes 云成本 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。