5 Stimmen

Umgang mit Singleton-Klassen in verteilter Umgebung

Wenn eine Anwendung über mehrere JVMS verteilt ist, hat meine einzelne ton-Klasse mehrere Instanzen auf jeder JVM. Zu diesem Zweck muss ich eine eindeutige ID generieren und eine Klasse mit Singleton-Muster verwenden. In einer Standalone-Umgebung funktioniert es gut. Wie kann man ein Singleton-Muster in einer verteilten Umgebung erstellen, so dass wir nur eine Instanz verwenden können?

EDIT: Für meine Anwendung muss ich eine Benutzerkennung erstellen wie

Wenn der Name Pavan Kumar lautet, sollte die Benutzerkennung pavankumar lauten, wenn sie bereits im System vorhanden ist. Wenn diese Benutzerkennung existiert, sollte die Benutzerkennung pavankumar1, pavankumar2 usw. lauten. ......

Wenn mehrere Anfragen für Benutzer mit demselben Namen auf verschiedenen Servern eingehen, kann dies zu einer doppelten ID führen. Zu diesem Zweck wollte ich ein Singleton über verteilte Umgebung verwenden.

4voto

Dungeon Hunter Punkte 18931

Ich habe nach langer Zeit eine solide Antwort auf diese Frage gefunden. Es ist möglich, ein Singleton in einer verteilten Umgebung mit dem AKKA-Toolkit zu implementieren. Details zur Implementierung können hier gefunden werden http://doc.akka.io/docs/akka/2.3.1/contrib/cluster-singleton.html

3voto

Emil Punkte 13139

Sie können ausprobieren hazelcast [ doc Diese Bibliothek ermöglicht es Ihnen, verteilte Sperren und Datenstrukturen zu haben, mit denen Sie Ihr Singleton schreiben können.

2voto

nicholas.hauschild Punkte 41528

Haben Sie die Verwendung eines verteilten Caches wie Java-Caching-System von Apache Commons oder Kohärenz-Cache von Oracle? Es mag übertrieben sein, aber es hängt wirklich davon ab, was genau Sie tun wollen.

2voto

Nrj Punkte 6513

Sie können eine zentrale Stelle (z. B. eine Datenbank) verwenden, um die Kennungen zu generieren. Natürlich müssen Sie die Ressource entsprechend sperren, damit sie jeweils nur von einem Unternehmen geändert werden kann.

2voto

Scorpion Punkte 3910

Wenn Sie die Entität in einer Datenbank aufbewahren wollen, können Sie sich auf die Datenbanksequenz verlassen, um eine ID zu generieren; kurz gesagt, kehren Sie die Lösung um, indem Sie mehrere JVMs haben, die eindeutige IDs generieren, und eine einzige Datenbank dies tut. Abgesehen davon gibt es Lösungen wie die von @nicholas erwähnten, die je nach Bedarf und Umfang genutzt werden können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X