Я разрабатываю HTTP-сервис с пропускной способностью до 500 миллионов запросов в день (обслуживаемых более чем одной независимой машиной).
Для каждого запроса мне нужно сгенерировать уникальный идентификатор и вернуть егопользователю.Идентификатор должен быть на 100% уникальным в течение 10 минут.(Предпочтителен 1 день, идеальны глобальные уникальные идентификаторы.) Для генерации этого идентификатора не требуется связь сервер-сервер.
Пример глупого псевдосеанса:
Client: GET /foo
Server: Content-Type: text/xml
<root>
<id>ab9d1972-2844-11e0-86b2-000c29544403</id>
<other_data/>
</root>
В предыдущем поколенииэтой службы HTTP я использовал UUID.
Я доволен UUID, но есть одна проблема: они слишком длинные.При таком количестве запросов этот дополнительный размер заметен в трате дискового пространства для файлов журнала.
Каков наилучший способ создания короткого, но уникального идентификатора?Думаю, чтобы сделать что-то стоящее, алгоритм должен генерировать не более половины длины UUID, оставаясь уникальным для всего дня (10 минут должно быть еще короче).
В идеале, предлагаемый алгоритм должен иметь нормальное и легкое производство.качественная реализация на простом C.
Обновление: для сгенерированного идентификатора не требуется кодировка URI при передаче в запросе GET.