2017-08-09 4 views
0

Ich verwende derzeit Amazon EC2 Instance für den Umgang mit der Kommunikation unserer IoT-Produkte (Entwicklungsstufe). Ich bin nicht sehr erfahren in der Skalierung der Spezifikationen unserer Instanz, um die Zunahme der Geräte in der Zukunft zu überwinden. Also denke ich daran, AWS Lambda zu verwenden und die gesamte Geschäftslogik von der EC2-Instanz nach Lambda zu verschieben. Aber jetzt gibt es ein paar Dinge, die ich nicht verstehe.AWS Lambda für IoT

  1. Im Voraus Einstellungen meiner Lambda-Funktion kann ich die Speicherbelegung für meine Lambda-Funktion einstellen. Wenn ich einen Speicher von 512 MB einstelle, wird dieser dann automatisch skaliert, wenn meine Funktion mehr als 512 MB Speicher benötigt?

  2. Ist der Speicher, den ich für die Lambda-Funktion pro Ausführung eingestellt habe? Zum Beispiel habe ich 30 Anfragen, die gleichzeitig bearbeitet werden müssen. Wenn meine Lambda-Funktion 30 Mal ausgeführt wird, bedeutet das, dass meine 30 Ausführungen nur bis zu 512 MB Speicher benötigen? Oder ich habe 512 MB Speicher, die pro Ausführung verwendet werden können?

  3. Die Dokumentation besagt, dass Amazon die Instanz der Funktion möglicherweise wiederverwendet. Wenn also zwei Anfragen zur gleichen Zeit eingehen und Amazon die vorhandene Kopie der Funktion wieder verwendet, bedeutet das, dass eine Instanz meiner Funktion zwei Anfragen gleichzeitig verarbeiten kann?

  4. Bei jeder Anforderung wird eine Datenbankverbindung hergestellt. Wird diese Verbindung beibehalten? Wenn es beibehalten wird, wird die Verbindung dann beendet, wenn die Funktionsinstanz beendet wird?

Antwort

2
  1. Wenn Sie die Speichereinstellung auf 512 MB gesetzt, dann wird jeder Aufruf genau 512 MB Speicher, um es verfügbar. Die Einstellung definiert das Maximum, das jeder Aufruf Ihrer Funktion verwenden kann.

  2. Ja ist es pro Ausführung (Aufruf).

  3. Es wird die gleiche Funktion für nachfolgende Aufrufe wiederverwenden. Es wird eine Funktion für gleichzeitige Aufrufe nicht wiederverwenden. Wenn Sie 2 gleichzeitige Funktionsausführungen haben, werden sie von 2 separaten Instanzen der Lambda-Funktion ausgeführt.

  4. Wenn Sie die Datenbankverbindung beim Initialisieren Ihrer Lambda-Funktion erstellen und nicht warten, bis der Handler aufgerufen wird, können Sie diese Datenbankverbindung über mehrere Aufrufe einer einzelnen Instanz Ihrer Funktion hinweg beibehalten. Wenn Ihre Funktionsinstanz jedoch beendet wird, kann die Datenbankverbindung nicht ordnungsgemäß geschlossen werden. Ich bevorzuge, wenn möglich, eine Datenbank mit einer REST-API, wie DynamoDB, mit AWS Lambda-Funktionen zu verwenden, um Probleme mit langlebigen Datenbankverbindungen zu vermeiden.

+0

Hallo, danke für die Antwort! Das macht es für mich viel klarer. Nur eine Follow-up-Frage. Für Problem Nummer 4, was passiert, wenn ich die Datenbankverbindung jedes Mal schließe, wenn ich mit einer Abfrage oder einem Update fertig bin. Wäre das eine gute Lösung, um langlebige Datenbankverbindungen zu vermeiden? –

+0

Das Öffnen und Schließen der Verbindung jedes Mal kann einige Probleme beheben, aber es kann andere Probleme wie langsamere Lambda-Funktionen im Allgemeinen verursachen. Eine Menge hängt davon ab, welche Datenbank Sie genau verwenden. –