Wie wird eine Methode über JVMs hinweg synchronisiert?
Mein Beispiel ist eine Webanwendung, die einschränkt, dass ein Benutzername mehr als einmal angemeldet wird (mit anderen Worten, der erste Benutzer kann sich anmelden, aber wenn sich ein anderer Benutzer mit demselben Benutzernamen anmeldet, wird er zurückgewiesen).
Die Webanwendung wird auf mehreren Servern bereitgestellt. Daher gibt es mehrere JVMs, und Benutzer können versuchen, sich je nach Lastenausgleich mit unterschiedlichen Servern anzumelden.
So sieht die Methode aus
%Vor%Es funktioniert auf 1 Anwendungsserver aufgrund der synchronisierten Methode, aber über mehrere JVMs hinweg? Zwei Benutzer könnten gleichzeitig versuchen, sich bei verschiedenen Web-Apps anzumelden. Wie würde ich das verhindern?
* BEARBEITEN * Die App verwendet auch Memcached, wenn Ihre Lösung einige transaktionale Cache-Methoden nutzen möchte.
Sie haben nach Synchronisierungsmethoden für JVMs gefragt. Dies erfordert eine Bibliothek, die verteilte Prozesse behandelt. Es gibt viele Möglichkeiten, hier sind nur ein paar:
Das Einrichten verteilter Sperren ist nie einfach, unabhängig davon, welche Bibliothek Sie verwenden. Wenn Sie es brauchen, gut, aber für Ihr Beispiel scheint das wie Overkill. Andere Optionen:
Tags und Links java concurrency jvm synchronized