Встречается на собеседованиях • сегодня
Как спроектировать систему для присвоения уникальных номеров на запрос при масштабировании
Для генерации уникальных номеров в распределенной системе можно использовать несколько подходов:
- UUID - простой, но неупорядоченный вариант:
java
UUID uuid = UUID.randomUUID();- Snowflake ID (Twitter-подобный алгоритм):
- 41 бит - timestamp
- 10 бит - machine ID
- 12 бит - sequence number
Гарантирует уникальность и сортировку по времени.
- База данных с sequence:
sql
CREATE SEQUENCE global_id_seq;
-- Запрос следующего значения
SELECT nextval('global_id_seq');- Redis INCR - атомарное увеличение:
java
Jedis jedis = new Jedis("redis");
long id = jedis.incr("global_counter");Для высокой доступности лучше комбинировать подходы: например, Snowflake для генерации + Redis для кеширования/резервирования диапазонов. Важно учитывать требования к сортировке ID и допустимую длину идентификатора.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы