Plan 1:
동시성이없고 주문 번호가 하나의 스레드에서만 생성되는 경우, 프로그램이 순차적으로 실행되기 때문에 다른 주문의 생성 시간 스탬프는 일반적으로 다릅니다. 따라서 타임 스탬프 + 랜덤 번호 (또는 자체 점수 번호)를 사용하여 각 순서를 구별 할 수 있습니다. 동시성이 존재하고 프로세스에서 여러 스레드에 의해 주문 번호가 생성되면 스레드 ID를 시퀀스 번호에 추가하여 주문 번호를 고유하게 보장 할 수 있습니다. 동시성이 있고 동일한 호스트의 여러 프로세스에 의해 주문 번호가 생성되는 경우, 프로세스 ID를 시퀀스 번호에 추가하여 주문 번호를 고유하게 보장 할 수 있습니다. 동시성이 있고 다른 호스트가 순서 번호를 생성하는 경우 Mac 주소, IP 주소 또는 CPU 일련 번호와 같이 호스트를 구별 할 수있는 숫자는 주문 번호가 일련 번호에 고유한지 확인할 수 있습니다.
Plan 2:
타임 스탬프 + 사용자 ID + 몇 가지 랜덤 숫자 + 낙관적 잠금.
Plan 3:
Redis Atomic 증분을 사용하여 고 가용성 클러스터를 구축하십시오.
솔루션 4 (비 퓨 숫자) :
Java는 UUID와 함께 제공됩니다.
사례 코드
Java는 스레드 ID를 얻습니다
thread.currentthread (). getId ()
Java는 프로세스 ID를 얻습니다
// 실행중인 Java 가상 머신을 나타내는 이름을 얻습니다. 문자열 이름 = managementFactory.getRuntImemxBean (). getName (); System.out.println (이름); // pid string을 가져옵니다. pid = name.split ( "@") [0]; System.out.println ( "PID :" + PID);
Java에 의해 Mac 주소를 얻으십시오
inetAddress ia = inetAddress.getLocalHost (); BYTE [] mac = NetworkInterface.getByInetAddress (IA) .gethardWareaddress (); 문자열 macstr = DataTypeConverter.printhexbinary (Mac);
요약
위의 내용은 Java Web이 높은 동시성에서 주문 번호 생성을 달성하고 Java 웹을 배치하는 유일한 솔루션입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!