PinLater:Pinterest的異步任務執行系統

jopen 9年前發布 | 7K 次閱讀 PinLater

 

近日,Pinterest 宣布 開源異步任務執行系統 PinLater 。該系統已經在Pinterest的生產環境中應用了兩年多,是Pinterest最關鍵的任務系統之一。目前,PinLater使用了10多個位于 Amazon EC2 之上的不同集群,500多個任務隊列每分鐘總計要處理超過600萬個任務。

PinLater的基本架構如下:

PinLater:Pinterest的異步任務執行系統

可以看出,PinLater包含三個組件:

  1. 一個無狀態的Thirft服務,管理任務提交和調度;
  2. 一個存儲后臺,存儲任務和狀態;
  3. 工作進程池,執行任務。

要了解更多架構細節,可以查看Pinterest工程師Raghavendra Prabhu先前發表的一篇 文章

PinLater 主要有如下特性:

  • 可靠的任務執行 :顯式確認、自動重試、延遲可配置;
  • 任務調度 :可以將任務安排到將來的一個特定時間點執行;
  • 速率限制 :可以限制系統中特定隊列的執行速率;
  • 語言無關 :可以使用任何Thrift支持的語言編寫任務入隊程序和任務執行程序;
  • 橫向可擴展 :服務及存儲均是橫向可擴展的;
  • 支持多種存儲后臺 :目前針對不同的使用場景支持MySQL和Redis實現;
  • 可見性 :可以通過 Ostrich 查看任務及相應的任務隊列,跟蹤各種運行時屬性。

過去的一年中,Pinterest對PinLater進行了改進,在使用MySQL作為存儲后臺時,其吞吐量提升了5倍,單個i2.2xl MySQL EC2實例每秒可以執行2000多次入隊操作。考慮到MySQL提供了更高的可靠性,他們計劃將所有工作負載移至MySQL。他們還構建了一個檢查點功能 和一個故事板,前者用于支持長時間執行的任務和復雜的工作流程,后者用于查看任務狀態、調試失敗任務等。要了解更多信息,請查看 PinLater的GitHub頁面

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!