Я собираюсь использовать Snowcast https://github.com/noctarius/snowcast как уникальный генератор идентификаторов для моего приложения. Я собираюсь предоставить эти идентификаторы в URL-адресах веб-приложения.Hazelcast Генерация последовательности последовательностей снегового генератора и длина id
Сейчас у меня есть два варианта, как настроить Snowcast секвенсор с моей Spring приложения загрузки:
@Bean
public SnowcastSequencer snowcastSequencer(Snowcast snowcast) {
Calendar calendar = GregorianCalendar.getInstance();
calendar.set(2017, Calendar.FEBRUARY, 1, 0, 0);
SnowcastEpoch snowcastEpoch = SnowcastEpoch.byTimestamp(calendar.getTimeInMillis());
return snowcast.createSequencer("sequence_generator", snowcastEpoch);
}
или
@Bean
public SnowcastSequencer snowcastSequencer(Snowcast snowcast){
SnowcastEpoch snowcastEpoch = SnowcastEpoch.byTimestamp(new Date().getTime());
return snowcast.createSequencer("sequence_generator", snowcastEpoch);
}
в результате snowcastSequencer.next()
вызова метода в случае Calendar
на основе эпохи Я получаю следующую длинную величину:
15617925960433665
но в случае Date
на основе эпохи:
12046041089
Я больше заинтересован в более короткие идентификаторы .. как второй, но я беспокоиться о возможной уникальности идентификаторов вопроса.
Не могли бы вы рассказать или это нормально использовать эпоху на основе даты в случае уникальных идентификаторов?
Спасибо за ваш ответ! Прямо сейчас я должен думать или нормально иметь отрицательные значения на моих URL-адресах. – alexanoid
есть ли способ избежать генерации отрицательных значений? Мое решение не может принимать отрицательные значения (( – alexanoid
Нет, мне жаль, что это невозможно, поскольку самый верхний бит используется для эпохальных миллисов, и таким образом всегда есть возможность иметь отрицательные значения. – noctarius