2016-11-04 77 views
0

我即将在aws上托管的java中创建分布式计算环境。我将有几个计算节点,并需要生成唯一的UUID(稍后将用作数据库密钥)。 就我所了解的UUID规范而言,只有UUID类型2对于dce是安全的。 在java中是否有任何现有的实现?在Java中生成UUID类型2

回答

0

java.util.UUID

UUID id = UUID.randomUUID(); 
+0

根据文档,这会生成一个类型4 UUID,这不是我所需要的。我需要一个2型UUID。 – Eric

+0

我的不好。但根据wikipedia“版本2的UUID是从组或用户ID和日期时间生成的”[wikii](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_2_.28DCE_security.29) – slayne

+0

意思是说你的type2 UUID将不会完全随机。 – slayne

1

如果所有你关心的是随机产生在分布式环境中的字符串,你应该能够从java.util.UUID依靠UUID.randomUUID()

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

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

如果它适用于DynamoDB,它的可能性很高,它也适用于您!

+0

我认为这是我应该使用的。但是如何在PutItemRequest之后获得密钥?在Java SDK [withReturnValues](http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/model/PutItemRequest.html#withReturnValues-com.amazonaws.services.dynamodbv2。 'PutItemRequest'的model.ReturnValue-)只能返回旧值。 – Eric

+0

使用DynamoDBMapper。它会返回整个保存的对象。 –