Как создать уникальный идентификатор в кластеризации - PullRequest
1 голос
/ 27 апреля 2010

Существует ли какой-либо API-интерфейс кластеризации, который помогает генерировать уникальный идентификатор на многих серверах?

Ответы [ 4 ]

2 голосов
/ 27 апреля 2010

Hazelcast - супер простое кластерное решение с открытым исходным кодом для Java. Вот цитата из документации.

Hazelcast IdGenerator создает уникальные идентификаторы для всего кластера. Сгенерированные идентификаторы - это примитивные значения длинного типа от 0 до Long.MAX_VALUE. Генерация идентификатора происходит почти со скоростью AtomicLong.incrementAndGet (). Сгенерированные идентификаторы являются уникальными в течение жизненного цикла кластера. Если перезапустить весь кластер, идентификаторы снова начинаются с 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

2 голосов
/ 27 апреля 2010

Использование UUID .
Даже при том, что столкновение возможно на практике, шансы так астрономически низки, что каждый использует его, включая критические промышленные применения. Здесь - обсуждение вероятности столкновения.

2 голосов
/ 27 апреля 2010

Зарезервируйте несколько идентификаторов

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

Вы можете добавить немного интеллекта, чтобы бронирование было динамичным, но в этом нет необходимости.

1 голос
/ 27 апреля 2010

Я использую hazelcast, очень хорошую структуру кластеризации, предоставляющую уникальный идентификатор и многое другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...