プラン1:
並行性がなく、注文番号が1つのスレッドでのみ生成される場合、プログラムは順次実行されるため、異なる注文の生成タイムスタンプは通常異なります。したがって、タイムスタンプ +乱数(または自己総数)を使用して、各順序を区別できます。並行性が存在し、順序番号がプロセス内の複数のスレッドによって生成される場合、スレッドIDをシーケンス番号に追加することにより、順序番号が一意になることを保証できます。同時性があり、同じホストの複数のプロセスによって順序番号が生成される場合、プロセスIDをシーケンス番号に追加することにより、順序番号を一意にすることが保証できます。並行性があり、異なるホストによって注文番号が生成される場合、MACアドレス、IPアドレス、CPUシリアル番号などのホストを区別できる番号は、注文番号がシリアル番号に固有のものであることを確認できます。
プラン2:
タイムスタンプ +ユーザーID +いくつかの乱数 +楽観的ロック。
プラン3:
Redis Atomic Incrementを使用して、高可用性クラスターを構築します。
ソリューション4(非純度番号):
Javaにはuuidが付属しています。
ケースコード
JavaはスレッドIDを取得します
thread.currentthread()。getId()
JavaはプロセスIDを取得します
//実行中のJava仮想マシンを表す名前を取得します。 string name = managementfactory.getRuntimemxbean()。getName(); System.out.println(name); // pid string pid = name.split( "@")[0]; system.out.println( "pid is:" + pid);
JavaでMacアドレスを取得します
inetAddress ia = inetAddress.getLocalHost(); byte [] mac = networkinterface.getByinetAddress(IA).gethardwareaddress(); string macstr = datatypeconverter.printhexbinary(mac);
要約します
上記は、Java Webが高い並行性と分散型Java Webで注文数生成を達成する唯一のソリューションです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!