L
Lightstorm
Foren As
Ich entwickle eine Anwendung mit node.js und redis als Datenbank.
Die Kommunikation zwischen den beiden funktioniert über eine TCP Verbindung.
Auf der Anwendung gibt es User Aktivitäten die ein Datenbankzugriff erfordern. Dabei ist jeder User über eine bleibende Websocket Verbindung mit der Anwendung verbunden, statt Ajax...
Und ich frage mich jetzt was am besten wäre bzw. ob es ein Unterschied macht wie node.js und redis kommunizieren.
Folgende Möglichkeiten:
1. Nach dem starten der node.js Anwendung, wird eine einzige Verbindung zu redis aufgebaut, gehalten und alle zukünftigen Zugriffe darüber abgewickelt.
2. Die Anwendung baut bei jedem Vorgang, das Datenbankzugriff erfordert. eine neue Verbindung zu redis auf. Ähnlich wie bei PHP Scripts die bei jedem Aufruf sich z.B. zu MySQL verbinden.
3. Es wird für jeden einzelnen User, der gerade angemeldet ist, eine eigene TCP Verbindung zu redis aufgebaut, das für die Dauer der Session genutzt wird. Dann gäbe es z.B. bei 200 angemeldeten Nutzern 200 persistente Verbindungen zu redis. Unsinn?
Ich habe ersteres gewählt, weil ich mir denke, das ständig neue TCP Verbindungen aufzubauen und viele zu verwalten, den Server stärker belasten oder zumindest unnötig sind. Ich frage mich nur, ob das auch so bleibt, wenn die Datenbankzugriffe in die Höhe schießen.
Kann es passieren, das bei sehr vielen DB Anfragen, die TCP Verbindung überlastet und alles langsamer wird?
Was wäre optimaler?
Die Kommunikation zwischen den beiden funktioniert über eine TCP Verbindung.
Auf der Anwendung gibt es User Aktivitäten die ein Datenbankzugriff erfordern. Dabei ist jeder User über eine bleibende Websocket Verbindung mit der Anwendung verbunden, statt Ajax...
Und ich frage mich jetzt was am besten wäre bzw. ob es ein Unterschied macht wie node.js und redis kommunizieren.
Folgende Möglichkeiten:
1. Nach dem starten der node.js Anwendung, wird eine einzige Verbindung zu redis aufgebaut, gehalten und alle zukünftigen Zugriffe darüber abgewickelt.
2. Die Anwendung baut bei jedem Vorgang, das Datenbankzugriff erfordert. eine neue Verbindung zu redis auf. Ähnlich wie bei PHP Scripts die bei jedem Aufruf sich z.B. zu MySQL verbinden.
3. Es wird für jeden einzelnen User, der gerade angemeldet ist, eine eigene TCP Verbindung zu redis aufgebaut, das für die Dauer der Session genutzt wird. Dann gäbe es z.B. bei 200 angemeldeten Nutzern 200 persistente Verbindungen zu redis. Unsinn?
Ich habe ersteres gewählt, weil ich mir denke, das ständig neue TCP Verbindungen aufzubauen und viele zu verwalten, den Server stärker belasten oder zumindest unnötig sind. Ich frage mich nur, ob das auch so bleibt, wenn die Datenbankzugriffe in die Höhe schießen.
Kann es passieren, das bei sehr vielen DB Anfragen, die TCP Verbindung überlastet und alles langsamer wird?
Was wäre optimaler?
Zuletzt bearbeitet: