近日,Pinterest宣布开源异步任务执行系统 PinLater 。该系统已经在 Pinterest 的生产环境中应用了两年多,是 Pinterest 最关键的任务系统之一。目前,PinLater 使用了 10 多个位于 Amazon EC2 之上的不同集群,500 多个任务队列每分钟总计要处理超过 600 万个任务。
PinLater 的基本架构如下:
可以看出,PinLater 包含三个组件:
- 一个无状态的 Thirft 服务,管理任务提交和调度;
- 一个存储后台,存储任务和状态;
- 工作进程池,执行任务。
要了解更多架构细节,可以查看 Pinterest 工程师 Raghavendra Prabhu 先前发表的一篇文章。
PinLater 主要有如下特性:
- 可靠的任务执行:显式确认、自动重试、延迟可配置;
- 任务调度:可以将任务安排到将来的一个特定时间点执行;
- 速率限制:可以限制系统中特定队列的执行速率;
- 语言无关:可以使用任何 Thrift 支持的语言编写任务入队程序和任务执行程序;
- 横向可扩展:服务及存储均是横向可扩展的;
- 支持多种存储后台:目前针对不同的使用场景支持 MySQL 和 Redis 实现;
- 可见性:可以通过 Ostrich 查看任务及相应的任务队列,跟踪各种运行时属性。
过去的一年中,Pinterest 对 PinLater 进行了改进,在使用 MySQL 作为存储后台时,其吞吐量提升了 5 倍,单个 i2.2xl MySQL EC2 实例每秒可以执行 2000 多次入队操作。考虑到 MySQL 提供了更高的可靠性,他们计划将所有工作负载移至 MySQL。他们还构建了一个检查点功能和一个故事板,前者用于支持长时间执行的任务和复杂的工作流程,后者用于查看任务状态、调试失败任务等。要了解更多信息,请查看 PinLater 的 GitHub 页面。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论