2016-11-17 4 views
0

Für meine Web-App brauche ich eine separate Instanz von EC2, um CPU-intensive Dinge zu verarbeiten, und Dinge, die in die Warteschlange gestellt werden können, wie Web-Serving-Instanz Bildgrößenänderung, Senden von E-Mail ....Bitte erklären Sie Amazon SQS (und Warteschlangen im Allgemeinen)

Wenn Sie eine AWS Elastic Beanstalk-Instanz erstellen, werden Sie aufgefordert, zwischen einer "Web" - oder "Worker" -Umgebung zu wählen. Aus meiner Sicht ist es in der Arbeitsumgebung, dass ich diese Art von Aufgaben bearbeiten werde.

Welche Rolle spielt SQS in diesem Zusammenhang? Ich lese, es geht nur darum, "Nachrichten" und solche Sachen zu senden, aber wie kann ich mein Bild mit einer "Nachricht" skalieren lassen?

Soll ich einen spezifischen Code für die Worker-Instanz erstellen, um die Bildgrößenänderung zu verarbeiten, und dann SQS verwenden, um das Bild zu verarbeiten? Kann SQS dann ein Bild von der Web-Instanz an die Worker-Instanz übergeben? Ich vermisse das Hauptkonzept komplett.

Antwort

0

Ein Warteschlangendienst (z. B. Amazon SQS) wird zum Speichern von Nachrichten für den späteren Abruf verwendet. Stellen Sie sich das wie eine TODO-Liste vor - Sie fügen Elemente zur Warteschlange hinzu und später rufen Sie ein Element aus der Warteschlange ab und ergreifen Maßnahmen für das Objekt.

Angenommen, Benutzer laden Bilder auf eine Website hoch und möchten Miniaturbilder aus diesen Bildern erstellen. Ihre Website speichert das Bild in Amazon S3 und überträgt dann eine Nachricht in eine SQS-Warteschlange. Die Nachricht würde einen Verweis auf das Bild in S3 und Details über den Benutzer enthalten.

Dann wird Ihre Elastic Beanstalk Arbeiter eine Nachricht aus der Warteschlange anfordern und das Bild verarbeiten. Es würde das Bild von S3 abrufen, die Größe ändern, es in einem S3-Bucket speichern und dann vielleicht dem Benutzer per E-Mail mitteilen, dass der Job beendet ist. Der Worker wird dann beendet, und Elastic Beanstalk löst einen neuen Worker aus, der die nächste Nachricht aus der Warteschlange liest und alles erneut ausführt.

Elastic Beanstalk worker

Also, ja - Sie werden den Arbeiter Code erstellen. Elastic Beanstalk löst den Worker mit der SQS-Nachricht aus. SQS selbst löst nichts aus - es ist tatsächlich Elastic Beanstalk, das die Nachricht abruft und den Worker ausführt.

See: Elastic Beanstalk worker environments

+0

Danke, das klärt alles. In der Tat wird der Arbeiter eine neue separate Instanz der App starten, nur um die Arbeit in der Warteschlange auszuführen. Es wird durch einen Treffer auf einer URL ausgelöst. Alles, was auf der Codeseite zu tun ist, ist die Definition von Routen und Code für die Warteschlangen. Ist es das ? –