5

アプリケーションが複数の JVMS に分散されている場合、単一トン クラスは各 JVM に複数のインスタンスを持ちます。この目的のために一意の ID を生成する必要があり、シングルトン パターン クラスを使用する必要があります。スタンドアロン環境では問題なく動作しています。分散環境でシングルトン パターンを作成して、インスタンスを 1 つだけ使用できるようにする方法は?

編集:私のアプリケーションでは、次のようなユーザーIDを作成する必要があります

名前が Pavan Kumar のような場合、ユーザー ID は pavankumar である必要があります。システムに既にこのユーザー ID が存在する場合、ユーザー ID は pavankumar1、pavankumar2 などのようにする必要があります。

同じ名前のユーザーに対する複数のリクエストが異なるサーバーに渡った場合、ID が重複する可能性があります。この目的のために、分散環境全体でシングルトンを使用したいと考えていました。

4

5 に答える 5

3

hazelcast [ doc ]を試すことができます。このライブラリを使用すると、シングルトンを作成できる分散ロックとデータ構造を使用できます。

于 2011-09-14T06:28:10.097 に答える
3

久しぶりに、この質問に対する確固たる答えを見つけました。AKKA ツールキットを使用して、分散環境でシングルトンを実装することができます。実装方法の詳細については、こちらhttp://doc.akka.io/docs/akka/2.3.1/contrib/cluster-singleton.htmlを参照してください。

于 2014-07-19T18:48:15.220 に答える
2

中央の場所(データベースなど)を使用してIDを生成できます。もちろん、一度に1つのエンティティによってのみ変更されるように、リソースを適切にロックする必要があります。

于 2011-09-14T05:17:34.997 に答える
2

エンティティを db に永続化する場合は、db シーケンスに依存して ID を生成できます。つまり、ソリューションを複数のjvmが一意のIDを生成することから、それを行う単一のdbに反転します。それとは別に、ニーズと規模に応じて活用できる @nicholas のようなソリューションがあります。

于 2011-09-14T05:21:03.927 に答える
2

Apache CommonsのJava Caching SystemやOracle のCoherence Cacheなどの分散キャッシュの使用を検討したことがありますか? やり過ぎかもしれませんが、実際に何をしたいかによって異なります。

于 2011-09-14T04:31:46.767 に答える