Bamboo-Leaf — это система генерации распределённых идентификаторов, написанная на Java. Алгоритм Leaf-Segment основан на оптимизации и расширении базового номерного алгоритма (Segment). Алгоритм Leaf-Snowflake основан на оптимизации и расширении базового снежинкового (Snowflake) алгоритма. В нём переопределены размеры различных частей снежинки, что позволило решить проблемы ограничения узлов WorkerID и повторения последовательностей при откате времени. Это также повысило количество создаваемых идентификаторов за миллисекунду.
Распределённые последовательности Bamboo-Leaf подходят для большего количества сценариев, обеспечивая высокую пропускную способность и надёжность, а также удобство внедрения.
При этом Bamboo-Leaf предоставляет клиентскую библиотеку Bamboo-Leaf-Client (SDK), которая позволяет локально генерировать идентификаторы, повышая производительность и надёжность системы. Все эти возможности доступны через Bamboo-Leaf-Client, позволяя системе каждый день генерировать миллиарды уникальных идентификаторов. Подробнее в документации
bamboo-leaf
Класс API: BambooLeafSnowflakeClient
Номер | Интерфейс | Название | Описание |
---|---|---|---|
1 | public long snowflakeId(String namespace); | Снежинка | Возвращает значение типа Long |
2 | public String snowflakeId16(String namespace); | Снежинка + случайное число | Возвращает 16-значное поле: 13 цифр (перевод стандартного снежинкового алгоритма в 36-ричная система), 3 цифры (случайное число переведено в 36-ричная система) |
3 | public String snowflakeId20(String namespace); | Снежинка + namespace + случайное число | Возвращает 20-значное поле: 13 цифр (стандартный снежинковый алгоритм переведен в 36-ричная система), 3 цифры (namespace переведен в 36-ричная система), 3 цифры (случайное число переведено в 36-ричная система) |
| ---- | ---- | ---- | ------ |
| 1 | public Long segmentId(String namespace); | Возвращает число от 1 до Long.MAX_VALUE | Возвращает значение типа Long |
| 2 | public Long dateSegmentId(String namespace); | Возвращает последовательность long с датой, состоящую из 19 цифр
Формат: 8 цифр yyyyMMdd + 11 цифр последовательности | Например: 202101010000000001
После достижения значения 99999999999 последовательность сбрасывается.
Этот алгоритм позволяет создавать до 99999999999 уникальных номеров в день |
| 3 | public String dateSegmentId(String namespace, String prefix); | Возвращает последовательность строки с префиксом и датой, состоящую из 19 цифр
Формат: префикс + 8 цифр yyyyMMdd + 11 цифр последовательности | Например: P202101010000000001
После достижения значения 99999999999 последовательность сбрасывается.
Этот алгоритм позволяет создавать до 99999999999 уникальных номеров в день |
| 4 | public Long timeSegmentId(String namespace); | Возвращает последовательность времени, состоящую из 19 цифр
Формат: 12 цифр yyMMddHHmmss + 7 цифр последовательности | Например: 2101010101010000001
После достижения значения 9999999 последовательность сбрасывается.
Этот алгоритм позволяет создавать до 9999999 уникальных номеров в секунду || 5 | public String timeSegmentId(String namespace, String prefix); | Возвращает строку, состоящую из префикса и времени, которая состоит из 19 цифр
Формат: префикс + 12 цифр yyMMddHHmmss + 7 цифр последовательности | Например: P2101010101010000001
После достижения значения 9999999 последовательность сбрасывается.
Этот алгоритм позволяет создавать до 9999999 уникальных номеров в секунду |# Пропуская способность и доступность
Заключение: Распределенная модель работы локального клиента обеспечивает высокую доступность, позволяющую работать даже при недоступности централизованной службы bamboo-server.
JDK 1.8+, Maven, MySQL, текущий Java клиент зависит только от JDK.
После добавления в WeChat вас добавят в групповой чат.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )