如何在群集中生成唯一ID

时间:2010-04-27 08:15:49

标签: java

是否有任何群集API有助于在许多服务器上生成唯一ID?

4 个答案:

答案 0 :(得分:2)

保留一些ID

Server 1:   1000000.. 2999999
Server 2:   2000000.. 3999999
...
Server 3:   3000000.. 3999999

您可以添加一些情报,以便预订是动态的,但没有必要。

答案 1 :(得分:2)

使用UUID
即使在实践中碰撞是可能的,但是每个人都使用它的可能性很低,包括关键的工业应用。 Here是关于碰撞概率的讨论。

答案 2 :(得分:2)

Hazelcast是一款非常简单的java开源集群解决方案。 这是文档中的引用。

Hazelcast IdGenerator创建群集范围的唯一ID。生成的ID是介于0和Long.MAX_VALUE之间的长类型原始值。 Id生成几乎以AtomicLong.incrementAndGet()的速度发生。生成的ID在群集的生命周期中是唯一的。如果重新启动整个群集,ID将再次从0开始。

import com.hazelcast.core.IdGenerator;

import com.hazelcast.core.Hazelcast;

IdGenerator idGenerator = Hazelcast.getIdGenerator(“customer-ids”);

long id = idGenerator.newId();

http://www.hazelcast.com/documentation.jsp#IdGenerator

答案 3 :(得分:1)

我正在使用hazelcast,一个非常好的集群框架,提供独特的ID等等。