用Java生成UUID版本2

时间:2016-11-04 11:11:38

标签: java amazon-web-services uuid

我即将在aws上托管Java中创建分布式计算环境。我将有几个计算节点,需要生成唯一的UUID(稍后将用作数据库密钥)。

据我所知UUID规范说只有UUID Version 2对dce是安全的。

Java中是否存在任何实现?

4 个答案:

答案 0 :(得分:1)

如果您关心的只是在分布式环境中随机生成的字符串,那么您应该能够依赖java.util.UUID中的UUID.randomUUID()

例如,查看DynamoDBMapper类,它为DynamoDB API提供高级抽象。对于标记为@DynamoDBHashKey的所有@DynamoDBAutoGeneratedKey字段,它在内部使用上述方法:

  

将分区键或排序键属性标记为自动生成。保存这些属性时,DynamoDBMapper将生成随机UUID

如果它适用于DynamoDB,很可能它对您也有效!

答案 1 :(得分:1)

以下是类型2(不是基于随机的,而是基于时间的UUID)的简短摘录:

Maven依赖项:

<dependency>
    <groupId>com.fasterxml.uuid</groupId>
    <artifactId>java-uuid-generator</artifactId>
    <version>3.2.0</version>
</dependency>

示例应用程序:


import com.fasterxml.uuid.EthernetAddress;
import com.fasterxml.uuid.Generators;

/**
 * Java UUID Generator
 *
 */
public class UUIDVersionExample {

    public static void main(String[] args) {

    String uuidType2= Generators.timeBasedGenerator(EthernetAddress.fromInterface()).generate().toString();
       System.out.println("UUID=" +uuidType2);

    }

}

答案 2 :(得分:0)

java.util.UUID

UUID id = UUID.randomUUID();

答案 3 :(得分:0)

是的,它存在,但是对于大多数应用程序来说,它并不是对资源的良好利用。我花了一段时间试图找到它,这就是为什么我在这里发布链接的原因: Java Practices -> Generating Unique IDs

这是一篇重要的文章,仅复制作品以将其张贴在此处似乎不合适。总之,您必须生成一个随机数,然后使用其摘要形成适当的长度字符串。这样做可能很耗时,因此不适合您要“即时”创建的ID。