2016-08-01 30 views
0

So habe ich einen Dienst, der jedes Mal, wenn Benutzer einen REST API-Aufruf durchführt, einige lange Berechnungen vornehmen muss. Im Moment schiebt ein HTTP-Handler einige Daten in eine Tabelle in RethinkDB und ein Hintergrundjob verwendet changefeed, um die Daten zu holen und Berechnungen durchzuführen.Teilen changefeed Abfrageergebnisse zwischen vielen Sitzungen

Daten: { id: RethinkDB's UUID, payload: ... }

Jetzt möchte ich:

  • Machen Sie den Prozess im Hintergrund laufen parallel auf mehreren Rechnern
  • Verwenden Phantasie ReQL verschiedene Aufgaben zu verschiedenen Maschinen versenden
  • Vermeiden Sie doppelte Berechnungen

Eine Idee, die ich habe ist:

  1. jeden Prozess Geben Sie eine separate PROCESS_ID (1,2,3 ..)
  2. Karte ID Data zu einer Reihe (num_id)
  3. Verwendung Changefeed in jedem Prozess und wartet auf Daten, bei denen num_id% max_process_id process_id wird

Hat jemand eine bessere Idee?

Gibt es eine kanonische Möglichkeit, die changefeed-Abfrage automatisch an mehrere Maschinen zu senden?

Antwort

1

Ich denke, die Idee, die Sie beschrieben, klingt wie eine gute Möglichkeit, es zu tun. Änderungsfeeds verfügen nicht über eine integrierte Möglichkeit zum Senden an mehrere Workers.