IoT-Sitzungsdauer

7

Eine Linux-Box sendet Messungen an AWS-RDBMS. Ein Python-Skript öffnet und schließt die Verbindung nur so lange, bis Daten in die Datenbank hochgeladen werden (Sitzungen werden unmittelbar nach dem Update geschlossen). Die Alternative besteht darin, dass die Box eine unbestimmte Sitzung für die Datenbank öffnet und das RDBMS aktualisiert: Sie sind sich nicht sicher, welche Probleme damit auftreten würden, wenn die Internetverbindung fehlschlagen würde, und sind sich nicht sicher, inwieweit die Verbindung bei einer instabilen Internetverbindung bestehen bleibt. Im Maßstab können Hunderte von Messfeldern Daten in das RDBMS hochladen.

Was ist die beste Vorgehensweise in Bezug auf die Verbindungsdauer der Python IoT-Sitzung? Ist es empfehlenswert, die Sitzung nach der Übertragung der Daten zu schließen? Definieren Sie möglicherweise eine Leerlaufzeit, die nach der Datenübertragung beginnt: Wenn die Leerlaufzeit mehr als eine vordefinierte Zeitspanne erreicht, schließen Sie den Kanal. Bonus für jede Erklärung des Warum hinter der Best Practice.

Vielleicht hängt diese Frage von der Plattform ab? dh RDBMS gegen AWS Greengrass?

Gatorback
quelle
2
Es kann Ihnen helfen, spezifischere Antworten zu erhalten, wenn Sie genau erklären, wonach Sie suchen, wenn Sie Best Practices sagen. Es ist nicht immer klar, was „Best Practices“ tatsächlich bedeuten. Haben Sie spezielle Bedenken bezüglich Ihres Setups (z. B. "Funktioniert dies gut?"), Die Sie bearbeiten könnten , um sie einzuschließen?
Aurora0001
Bei dieser Art von Frage ist es immer hilfreich, etwas mehr Kontext zu geben, warum Sie die Frage stellen. So wie es aussieht, ist es ziemlich unzusammenhängend (und auf jedem anderen Stapel könnte es eher wie eine Hausaufgabenfrage aussehen - obwohl ich diesmal nicht vorschlage, dass es tatsächlich so ist)
Sean Houlihane
Ich freue mich über die Kommentare, um mehr Details / Kontext hinzuzufügen: Alle „Anstöße“ in Form spezifischer Fragen wären willkommen und würden die Gestaltung der Frage beschleunigen.
Gatorback
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da es sich nur um eine weitere generische Socket-Codierungsfrage handelt, bei der die beiden Alternativen auf Hunderten, wenn nicht Tausenden von Websites gut erklärt werden, einschließlich vieler Antworten auf SO
Mawg sagt, Monica am

Antworten:

2

Die Variablen, die das Internet der Dinge der Partei hier bringt, sind mindestens Größe und Energie. Sie können auch davon ausgehen, dass Sicherheit / Ausfallsicherheit anderen Einschränkungen unterliegt als die Frage, wie diese Frage vor 5 Jahren beantwortet wurde. Die 'Wurzel'- Frage zu SO ist bereits 7 Jahre alt und nicht sehr beliebt.

Die Häufigkeit von Transaktionen und die Kosten für den Aufbau einer authentifizierten Verbindung sind wahrscheinlich der Haupttreiber, sowohl hinsichtlich der Datenbandbreite als auch der Energiekosten.

Gibt es Kosten, wenn die Verbindung offen bleibt? Wie viel mehr Aufwand benötigen Sie, um eine "meist dauerhafte" Verbindung zu verwalten, als die trivialere "Open-Use-Close" -Verbindung? Welcher Ansatz führt am schnellsten zu Ressourcenkonflikten (vorausgesetzt, Ihr Produkt ist massiv skalierbar)?

Werden Sie Ihren Code / Ihr Protokoll in Zukunft wahrscheinlich weiter an den Rand des Netzwerks migrieren (oder die Cloud-Funktionalität näher an den Rand migrieren)? Diese potenziellen Migrationen können Ihre Einschränkungen ändern, oder Sie möchten die potenzielle Softwareinvestition lieber aufschieben.

Sean Houlihane
quelle
1

Obwohl Sie die Sitzung für IOT verwenden, ist dies * keine IOT-Frage, sondern nur eine allgemeine Socket-Frage, und als solche gibt es bei Google und bei Stack Overflow viele, viele, viele Antworten .

Grundsätzlich gibt es keine "richtige" Antwort, Sie müssen nur Ihre Situation berücksichtigen.

Im Allgemeinen ist es einfacher, den Code "Nach jeder Transaktion schließen" zu implementieren, da Sie nicht so viel Code benötigen: "Hoppla, meine derzeit geöffnete Sitzung wurde nur unerwartet geschlossen". Das ist der Ansatz, den ich immer verfolge und den ich in der Industrie am häufigsten gesehen habe.

Wenn Sie jedoch häufige Pakete senden müssen (Größe ist nicht wichtig, nur die Häufigkeit), kann der Aufwand für das Schließen und erneute Öffnen nach jedem Paket zu Leistungsproblemen führen.

Du bezahlst dein Geld, du triffst deine Wahl :-)

Mawg sagt, Monica wieder einzusetzen
quelle