Встречается на собеседованиях • сегодня

Как спроектировать систему для присвоения уникальных номеров на запрос при масштабировании

Для генерации уникальных номеров в распределенной системе можно использовать несколько подходов:

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

Для высокой доступности лучше комбинировать подходы: например, Snowflake для генерации + Redis для кеширования/резервирования диапазонов. Важно учитывать требования к сортировке ID и допустимую длину идентификатора.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы