Ich befinde mich in der Entwurfsphase eines Projekts, in dem der Endbenutzer eine Anfrage von einer Webseite sendet, die einen lang laufenden asynchron verarbeiteten Job erzeugt. Gibt es eine "Best Practice" für dieses Problem? Sind Web-Services und Service-Broker ein guter Weg? Ist die Microsoft-Messaging-Warteschlange hier anwendbar?
web-development
async
John Ruf
quelle
quelle
Antworten:
Ich weiß nichts über "Best Practice". Ich kenne die häufigsten Fehler.
Erster Fehler: DOS selbst
Sie verwenden den Webhandler, um den lang laufenden Job zu verarbeiten. Dies kann schlecht oder extrem schlecht sein, abhängig von Ihrem Prozentsatz an Treffern, die zu Jobs mit langer Laufzeit werden, wie lange sie ausgeführt werden und wie viel anhaltenden Datenverkehr Sie erhalten.
Sie möchten sicherstellen, dass Sie nicht mehr als einen Job mit langer Laufzeit innerhalb des Zeitraums erhalten, den dieser Job mit langer Laufzeit benötigt. Wenn Sie dies tun, DOS Sie selbst. Es wird auch schlimmer, je mehr Verkehr Sie erhalten, vorausgesetzt, der Prozentsatz und die Zeit bleiben konstant. Es ist eines dieser Probleme, das dem Verkehrswachstum selbst eine Grenze auferlegt.
Zweiter Fehler: Laichen vom Webhandler
Das Laichen eines Prozesses aus dem Webhandler, um einen lang laufenden Prozess zu handhaben, kann schwierig und daher auch fehleranfällig sein.
Optionen
Normalerweise
at(1)
distanziere ich mich sauber vom Webhandler, ohne mich zu gabeln.Sie können auch eine Polling-Implementierung mit verwenden
cron
.Sie können mit einem anderen Serverprozess kommunizieren, der die Verarbeitung übernimmt. , Dass die Kommunikation mit getan werden
sockets
,pipes
oder höherer Ebene Abstraktionen wie ein RESTES HTTP - Aufruf oder Routing - Nachricht einer Warteschlange.quelle
Ich nehme an, Sie sprechen über mehr als ein paar Minuten.
In wenigen Minuten können Sie einen Arbeitsthread im Hintergrund starten und einige Fortschritte auf der Benutzeroberfläche anzeigen. Viele Webanwendungen verwenden diese Methode.
Wenn es länger als beispielsweise 5 Minuten dauert, möchten Sie die Aufgabe möglicherweise an einen dedizierten Dienst delegieren. Ein Beispiel sind die von Google Analytics generierten Berichte.
Die Microsoft Messaging-Warteschlange kann zum Übertragen von Informationen von einem System zu einem anderen oder einer Komponente zu einem anderen verwendet werden.
quelle