Короткий уникальный идентификатор в распространяемой системе с переменным алфавитом - PullRequest
0 голосов
/ 12 апреля 2019

Мы пытаемся найти относительно простой алгоритм для генерации идентификаторов длиной 7 символов со следующими требованиями:
* Каждый идентификатор должен быть уникальным
* Существует несколько серверов, которые не подключены.Будет добавлено еще больше серверов.
* мы можем определить сегмент, который будет использоваться каждым сервером перед первой операцией
* Каждый генератор подписывается на один сервер перед первой операцией
* Это могут быть тысячи генераторов
*Каждый генератор может генерировать несколько идентификаторов в автономном режиме (скажем, до 100), затем он подключается к Интернету и синхронизируется со своим сервером
* Используемый алфавит: начинайте с цифр, когда почти нет (желательно глобально) - добавляйте строчные буквы, когдапочти не осталось - добавьте заглавные буквы.

Генераторами будут смартфоны с iOS и Android, поэтому сэмплы в Swift и Dart приветствуются.
Одно из решений будет следующим:
* первые 2 символа кодируют сервер
* следующие 2 символа кодируютГенератор внутри сервера
* Код кода последних 3 символов для генератора, поэтому
Генератор 1 на сервере 1 сможет генерировать с номерами от 0101000 до 0101999. Генератор 2 на сервере 1 - с 0102000 до 0102999.Генератор 1 на сервере 2 - с 0201000 по 0201999.
Проблема в том, что мы не знаем, сколько идентификаторов будет генерировать каждый генератор, и мы блокируем одинаковые сегменты для «хороших» и «плохих» генераторов, а также серверов.Нам нужно будет использовать буквы после 1000 идентификаторов для одного генератора, что нежелательно, когда у нас много других чисел.

Спасибо за любые хорошие идеи!

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