2016-01-10 7 views
5

Ich habe vor kurzem mit der Arbeit an verteilten Computing für die Erhöhung der Berechnungsgeschwindigkeit begonnen. Nach rigoroser Google-Suche und vielen SO-Foren entschied ich mich für Sellerie, aber ich habe einige Probleme, die Konzepte und Terminologie zu verstehen.
Worker vs Prozess vs Client und Job vs Aufgabe Erklärung in Sellerie Python Modul

Was ist der Hauptunterschied zwischen Arbeiter und Prozess .. ?? Sind sie gleich oder werden in verschiedenen Kontexten anders genannt? bitte erklären

von der Sellerie docs heißt es:

Sellerie kommuniziert über Nachrichten, in der Regel einen Broker zwischen Kunden und Arbeitnehmern zu vermitteln. Um eine Aufgabe zu initiieren, fügt ein Client der Warteschlange eine Nachricht hinzu, die der Broker dann an einen Worker liefert.

wenn es ist, was sind die Kunden hier .. ?? (zur Zeit verwende ich nur eine einzige Maschine octacore)

wenn Nachrichten an Broker übergeben .. ?? Warum sollten Backend- und Nachrichtenwarteschlangen für die Interprozesskommunikation verwendet werden? bitte erklären Sie

Hier habe ich eine große Frage (für mich), die ich nicht auskommen kann .. !!! , wenn ich die Sellerie-Konsole ausführen von:

Sellerie Arbeiter -A Aufgaben --loglevel = info --concurrency 5

bedeutet dies, Die Sellerie-Konsole ist ein Arbeitsprozess, der verantwortlich ist von 5 verschiedenen Prozess und verfolgt die Aufgabenwarteschlange. Wenn eine neue Aufgabe in die Aufgabenwarteschlange geschoben wird, weist dieser Mitarbeiter die Aufgabe/Aufgabe einem der 5 Prozesse zu.

Diese Frage könnte sehr einfach sein, aber bitte stellen Sie einige Links oder Tuts zum besseren Verständnis bereit. Vielen Dank im Voraus

Ich bin ein Anfänger SO, Wenden Sie sich bitte meine Frage zum besseren Verständnis für andere bearbeiten (es könnte mir mehr helfen)

Antwort

1

Letzte Frage zuerst:

celery worker -A tasks --loglevel=info --concurrency 5 

Sie sind richtig - der Arbeiter kontrolliert 5 Prozesse. Der Mitarbeiter verteilt Aufgaben auf die 5 Prozesse.

Ein "Client" ist ein Code, der Sellerie-Aufgaben asynchron ausführt.

Es gibt zwei verschiedene Arten von Kommunikation - wenn Sie apply_async ausführen, senden Sie eine Aufgabenanforderung an einen Broker (am häufigsten rabbitmq) - dies ist im Grunde eine Reihe von Nachrichtenwarteschlangen.

Wenn die Arbeiter fertig sind, legen sie ihre Ergebnisse in das Ergebnis-Backend.

Das Broker- und Ergebnis-Backend ist ziemlich separat und erfordert verschiedene Arten von Software, um optimal zu funktionieren.

Sie können RabbitMQ für beide verwenden, aber sobald Sie eine bestimmte Anzahl von Nachrichten erreichen, wird es nicht richtig funktionieren. Die häufigste Kombination ist RabbitMQ für Broker und Redis für Ergebnisse.

+0

danke für die kurze Info. Sie sagen RabbitMQ als Broker und Redis als Back-End-Recht. 1.) Woher kommt dieses Memcached ins Spiel? Ich habe viele Foren gesehen, die dies als Nachrichtenwarteschlange verwenden. 2.) was, wenn ich den obigen Sellerie-Arbeiter-Befehl in zwei verschiedenen Konsolen ausgeführt und eine Aufgabe von einem interaktiven Python eingereicht habe .. ?? Ich meine, wie verwende ich diese bestimmte Arbeiterkonsole ... ?? – jeldikk

+0

Memcached kann anstelle von Redis verwendet werden. Redis ist wahrscheinlich die bessere Wahl. Deine zweite Frage ergibt keinen Sinn. Bitte lesen Sie erneut die Sellerie-Dokumentation und stellen Sie dann eine neue Frage in SO – scytale

Verwandte Themen