Frage

Ich muss eine Sequenz/einen Zähler über einen acht Knotencluster replizieren. Dies bedeutet, dass jede HTTP -Anforderung den nächsten Wert in der Sequenz empfängt, indem Sie etwas wie GetNextIntandIncrement () aufrufen, wobei der Sequenzzustand über alle Server synchronisiert ist. Um dies zu verdeutlichen, muss dies bei Anwendung/globalem Umfang und nicht in der Sitzung vorhanden sein. Ich weiß, es klingt nach einer schrecklichen Idee und wird zweifellos zu Engpässen führen, aber dies ist die Anforderung.

Meine Frage ist, was ist die beste Lösung? Ich habe mir staatliche Sitzungsbohnen angesehen, aber sie scheinen nur für einen Kunden konzipiert zu sein. Ich habe eine Datenbanksequenz betrachtet. Ich habe mir auch Terrakotta -Clustering angesehen. Sie haben eine Sequenzdemo http://www.terracotta.org/web/display/orgsite/recipe?recipe=sequencer Ich möchte jedoch Lösungen von Drittanbietern vermeiden, wenn eine J2EE -Lösung besteht. Ich benutze Weblogic 8.1.

War es hilfreich?

Lösung

Einige Java -EE -Anbieter haben Cache -Lösungen (z. B. das Objektnetz von WebSphere) abgelassen.

Was ist los mit der DB -Lösung? Es ist klar, dass das Sperren benötigt wird. Warum also nicht an die DB gehen? Ich vermute, wenn Sie wirklich echte inkrementelle Werte, keine Fehlwerte usw. benötigen, sind Transaktionsbeziehungen mit anderen Datenbankwerten wichtig. Verwenden Sie also die DB.

Wenn Sie den Bedarf an absoluten Sequenetial -Werten (dh Lücken zulassen) entspannen können, können Sie Zahlensätze herausparkeln und dadurch die Streitigkeiten erheblich reduzieren. Wenn Sie wirklich sequentielle Werte und keine Lücken benötigen, kaufen Sie die Notwendigkeit eines gewissen Grades an die Instanzen ein - Sie können nicht zulassen der aktuelle. Wenn Sie es sich leisten können, die ungerade Sequenznummer zu verlieren, dann machen Sie es viel besser. Oder wenn Sie unabhängige Nummerierungsschemata zwischen Fällen in einer viel besseren Position sind. Zum Beispiel Name, die Sie Server A, B, C ... IDS A001, A002, B001, C001, C002 usw. haben.

Andere Tipps

Ich denke, eine Datenbanksequenz würde Ihnen wahrscheinlich das deterministischste Ergebnis erzielen, insbesondere wenn Sie hochserialisierte Transaktionen verwenden, um sie anzufordern.

Ich würde jedoch ernsthaft die Gültigkeit in Frage stellen, so etwas zu tun, aber das sind nur meine 2 Cent.

Sie haben Weblogic in den Tags für diese Frage - Weblogic erlaubt Cluster -Singletons. zB eine Instanz pro Cluster mit Failover -Unterstützung.

Dies sollte Ihre Anforderung erfüllen:

http://e-docs.bea.com/wls/docs100/javadocs/weblogic/cluster/singleton/singletonservice.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top