2016-11-10 11 views
0

I resque zu Hintergrund-Prozess zwei Arten von Jobs bin mit:Mehrere Warteschlangen vs mehrere Jobs in resque

(1) 3rd-party API requests 
(2) DB query and insert 

Während die zwei Jobs parallel verarbeitet werden können, wobei jeder Auftragstyp an sich nur in einer seriellen Reihenfolge verarbeitet werden können . Zum Beispiel müssen Datenbankoperationen in der seriellen Reihenfolge ausgeführt werden, können jedoch parallel mit API-Anforderungen von Drittanbietern ausgeführt werden.

ich eine der beiden folgenden Methoden am betrachten dies für die Ausführung:

(1) Having two queues with one queue handling only API requests and the other queue 
handling only db queries. Each queue will have its own worker. 

(2) One single queue but two workers. One worker for each job. 

Ich möchte den Unterschied in den beiden Ansätzen kennen und die zu den beiden ein besserer Ansatz zu nehmen wäre.

Antwort

1

Diese Auswahl der Architektur ist nicht geradlinig, man muss viele Dinge beachten.

Mit zwei Warteschlangen mit einer Warteschlange, die nur API-Anfragen bearbeiten, und der anderen Warteschlange , die nur Datenbankabfragen behandelt. Jede Warteschlange hat ihren eigenen Arbeiter.

Antwort: Sie können diese Architektur haben, wenn Sie beide die Warteschlangen gleichermaßen beschäftigt, dh, wenn Sie haben eine Warteschlange mit mehr Zahl der Arbeitsplätze und andere leer dann ein Arbeiter Idol sein wird und dort Arbeitsplätze in anderen warten sein Warteschlange.
Sie sollten immer über die volle Auslastung Ihrer Mitarbeiter nachdenken.

Eine einzige Warteschlange, aber zwei Arbeiter. Ein Arbeiter für jeden Job.

Antwort: Dieser Ansatz wird auch in unserem Projekt verwendet.
Wenn alle Jobs in einer Warteschlange eingereiht sind und mehrere Worker darauf ausgeführt werden.
Ihre Mitarbeiter werden immer beschäftigt sein, egal welche Art von Job vorhanden ist.
geeignete Arbeiter Auslastung ist möglich.


Endlich würde ich vorschlagen, Sie zweiten Ansatz nutzen können.

Verwandte Themen