2016-11-04 102 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。它會返回整個保存的對象。 –