Как создать уникальный идентификатор
Как мы можем генерировать уникальные идентификаторы между двумя JVM, работающими одновременно? Я думаю UUID uuid = UUID.randomUUID();
или же UID uid = new UID();
недостаточно.
2 ответа
Вы можете использовать идентификатор UUID-сервера, чтобы UUID был уникальным на всех серверах.
Посмотрите документы UUID, вы можете перейти по ссылке, чтобы найти rfc4122, объясняющий, как будет сгенерирован UUID. Последние 48 бит касаются вашего вопроса, spacial unique node identifier
подтверждая, что это значение будет универсальным уникальным идентификатором.
4.1.2. Layout and Byte Order
To minimize confusion about bit assignments within octets, the UUID
record definition is defined only in terms of fields that are
integral numbers of octets. The fields are presented with the most
significant one first.
Field Data Type Octet Note
#
time_low unsigned 32 0-3 The low field of the
bit integer timestamp
time_mid unsigned 16 4-5 The middle field of the
bit integer timestamp
time_hi_and_version unsigned 16 6-7 The high field of the
bit integer timestamp multiplexed
with the version number
clock_seq_hi_and_rese unsigned 8 8 The high field of the
rved bit integer clock sequence
multiplexed with the
variant
clock_seq_low unsigned 8 9 The low field of the
bit integer clock sequence
node unsigned 48 10-15 The spatially unique
bit integer node identifier
Единственный риск, который я вижу, связан с этой частью
UUID - это идентификатор, который является уникальным как в пространстве, так и во времени, относительно пространства всех UUID. Поскольку UUID имеет фиксированный размер и содержит поле времени, значения могут быть перенесены
Но это должно было бы продолжаться долго, прежде чем оно придет к вам. Так что я бы не стал сильно беспокоиться о текущем решении.