Asynchrones Job-Execution-System PinLater veröffentlicht

Pinterest stellt PinLater Open Source
Kommentare

Nachdem Pinterest bereits vor kurzem seineMySQL-Management-Tools Open Source veröffentlichte, steht nun ein neues Werkzeug zur Verfügung: PinLater, ein asynchrones Job-Execution-System.

Auf Pinterest passiert ziemlich viel im Backend: Klickt ein User den „Pin it“-Button, setzt das unzählige Prozesse in Gang. So werden beispielsweise Thumbnails in unterschiedlichen Größen erstellt, das Board-Thumbnail wird aktualisiert und ein Pin wird unter den entsprechenden Followern des Nutzers verbreitet. Zudem wird auch evaluiert, ob ein Pin zu einem Kategorienfeed hinzugefügt werden sollte, und eine Spamprüfung sowie ein Index für Suchen werden durchgeführt bzw. angelegt.

Diese Jobs sind alle sehr wichtig, müssen aber nicht unbedingt ausgeführt werden, bevor der User eine positive Rückmeldung erhält. Genau an diesem Punkt setzt das asynchrone Job-Execution-System PinLater ein, das nun Open Source zur Verfügung steht.

Pinterest & PinLater

PinLater wurde von Pinterest selbst entwickelt und ist dort seit mehr als zwei Jahren im Einsatz. Und das ist auch nötig, denn Pinterest betreibt mittlerweile mehr als zehn verschiedene Cluster auf Amazon EC2. Zusammen genommen führen über 500 Jobwarteschlangen sechs Millionen Jobs pro Minute aus. PinLater kann einen oder mehrere Jobs in eine Warteschlange stellen und die nicht dringenden Aufgaben später abarbeiten. Ein anderer Use Case ist das Planen und Ausführen von Jobs mit eingeplanten Retries, falls das Backend vorübergehend nicht erreichbar sein sollte. Auch den Workflow zum Erstellen und Versenden von E-Mails an die sogenannten Pinner übernimmt PinLater.

Struktur von PinLater

PinLater besteht aus drei Komponenten:

  1. einem zustandslosen Thrift-Service, um Job-Submission und Job-Planung zu managen
  2. einem Storage-Backend zum Speichern von Jobs und Zustand
  3. Worker Pools zum Ausführen der Jobs
Struktur von PinLater

© Pinterest

Der Thrift-Service bietet drei Kern-Aktionen: in eine Warteschlange stellen, aus der Warteschlange entfernen und ACK, die Empfangsbestätigung von Daten.

PinLater-Modell

© Pinterest

Wird ein Job in die Warteschlange gestellt, wird er zum Storage-Backend gesendet, um ihn weiter zu beobachten. Worker Pools entfernen kontinuierlich Jobs aus der Warteschlange und führen sie aus. Darauf folgt eine positive oder negative ACK – je nachdem, ob die Ausführung erfolgreich war oder gescheitert ist. Der Service Layer ist für alle Aspekte des Jobplanens verantwortlich, inklusive Prioritäten, Retries und Ausführungen in der Zukunft. Einen ausführlichen Einblick in die Funktionsweise gibt der Pinterest-Blog.

Das Open-Source-Release beinhaltet den Service sowie eine auf Java basierende Worker-Framework Referenz-Implementierung. Auf GitHub steht PinLater zum Download bereit. Weitere Informationen zur Verwendung von PinLater finden sich im Pinterest-Blog.

 

Aufmacherbild: Pinterest website on computer screen von Shutterstock / Urheberrecht: Eziutka

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -