Ich habe angefangen, Code zu meiner Website zu entwickeln und wollte wissen, wie ich die Website, die Lastbalance freundlich ist, entwickeln oder gestalten kann. Ich habe einen Beitrag zu Stackoverflow bezüglich der Skalierbarkeit gelesen und die ausgewählte Antwort lautete: "Stellen Sie sicher, dass Sie beim Entwickeln Ihrer Anwendung den Lastenausgleich berücksichtigen." Wie gehe ich hier vor?
Ihre Entscheidung wird in die Umwelt fallen. Wenn es sich um ein Produkt zum Verkauf handelt, haben Sie keine Kontrolle über die Implementierung des Lastenausgleichs. Dies bedeutet, dass "sticky sessions", bei denen ein Benutzer für die Dauer einer Sitzung an denselben Server gebunden ist, nicht garantiert werden können. Sticky-Sitzungen ermöglichen nahezu allen Anwendungen eine Lastverteilung, sind jedoch nicht so effizient.
Wenn Sie eine Implementierung mit Sticky-Sitzungen nicht garantieren können, vermeiden Sie die Verwendung des Session-Status insgesamt oder schauen Sie sich eine Lösung für eine geteilte Sitzung an.
1) Verwenden Sie keine statischen Felder zum Speichern von Daten, Statistiken, ...
2) Verwenden Sie die Sitzung mit Sorgfalt - Sie können immer noch in-Prozess mit klebrigen Sitzungen verwenden, aber ich mag es nicht.
3) Verlassen Sie sich nicht auf die IP des Servers
Nun, eine Antwort besteht darin, die Abhängigkeit von Sitzungsvariablen zu reduzieren. Es ist möglich, Sitzungsvariablen zwischen Servern über den Sitzungsserver zu teilen, aber das bedeutet, dass alle Ihre Server einen einzigen Fehlerpunkt auf dem Sitzungsserver haben und dann die Leistung verringern.
Im Grunde versuchen Sie einfach, jede Seite so eigenständig und zustandslos wie möglich zu machen, und Sie werden gut sein.
Dies ist für die meisten von Ihnen offensichtlich, aber in unserer Umgebung gab es ein Problem, als wir einen Load-Balancer / mehrere Webserver einsetzten: Verlassen Sie sich nicht auf die IP-Adressen Ihres Webservers.
Wir hatten eine Produktionsumgebung, die einen Switch und eine Reihe interner IP-Adressen verwendete, einschließlich der des Webservers (unsere Produkte laufen normalerweise in einer geschlossenen Umgebung, nicht im offenen Internet). Wenn Sie mehrere Webserver haben, wird das ein Problem.
Stellen Sie sicher, dass Sie über eine Entwicklungs- / QA-Umgebung verfügen, in der Sie Ihre Software in einer Umgebung mit Lastenausgleich testen und die Probleme in Ihrem Code bei der Entwicklung sehen können, anstatt bis zum Bereitstellungstag zu warten.
Eine Sache, die berücksichtigt werden muss, ist die Verwendung von Sitzungsdaten, um den Status beizubehalten.
Da nachfolgende Anträge Ihrer Anwendung von anderen Servern in der Kontostandslinie bearbeitet werden können, können Sie den InProc-Modus und den StateServer-Modus nicht verwenden.
Tags und Links sql-server c# asp.net-mvc-2 sql-server-2008 load-balancing