Plan 1:
Wenn es keine Parallelität gibt und die Bestellnummer nur in einem Thread generiert wird, sind die Erzeugungszeitstempel verschiedener Bestellungen normalerweise unterschiedlich, da das Programm nacheinander ausgeführt wird. Daher kann die Zeitstempel + Zufallszahl (oder selbsterkrementelle Zahl) verwendet werden, um jede Reihenfolge zu unterscheiden. Wenn die Parallelität besteht und die Bestellnummer in einem Prozess durch mehrere Threads generiert wird, kann die Bestellnummer durch Hinzufügen der Thread -ID in die Sequenznummer garantiert sein. Wenn die Parallelität vorliegt und die Bestellnummer durch mehrere Prozesse im selben Host generiert wird, kann die Bestellnummer durch Hinzufügen der Prozess -ID zur Sequenznummer garantiert eindeutig sein. Wenn die Parallelität vorhanden ist und die Bestellnummer von verschiedenen Hosts generiert wird, kann die Nummer, die den Host unterscheiden kann, z. B. die MAC -Adresse, die IP -Adresse oder die CPU -Seriennummer, sicherstellen, dass die Bestellnummer für die Seriennummer eindeutig ist.
Plan 2:
Zeitstempel + Benutzer -ID + mehrere Zufallszahlen + Optimistische Sperre.
Plan 3:
Verwenden Sie Redis Atomic Income, um einen Cluster mit hoher Verfügbarkeit zu erstellen.
Lösung 4 (Nicht-Pure-Zahlen):
Java kommt mit Uuid.
Fallcode
Java bekommt Thread -ID
Thread.currentThread (). GetId ()
Java Get Process ID
// Erhalten Sie den Namen, der die laufende Java Virtual Machine darstellt. String name = ManagementFactory.getRuntimemxbean (). GetName (); System.out.println (Name); // PID String pid = name.split ("@") [0]; System.out.println ("PID ist:" + pid);Holen Sie sich eine MAC -Adresse von Java
Inetaddress ia = inetaddress.getLocalHost (); byte [] mac = networkInterface.getByInetAddress (IA) .GethardWareaddress (); String macstr = DataTypeConverter.PrinThexBinary (MAC);
Zusammenfassen
Die oben genannte ist die einzige Lösung für Java Web, um die Bestellnummernerzeugung in hoher Parallelität und verteiltes Platzier -Java -Web zu erreichen. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!