Выбор ответа Senior Разборы систем обновлено
Генерация id в распределённой системе
Вопрос
Нужны 64-битные id сообщений, уникальные без центральной БД и примерно сортируемые по времени. Что подходит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Snowflake: время, машина, счётчик. Snowflake-подобный id (метка времени в миллисекундах, id машины и счётчик внутри миллисекунды) помещается в 64 бита, генерируется локально на каждом узле и сортируется по времени, потому что старшие биты это время.
Варианты ответа
- UUID v4 в каждом сервисе
- Автоинкремент каждого шарда
- Хеш содержимого сообщения
- Snowflake: время, машина, счётчикправильный ответ
Разбор
Snowflake-подобный id (метка времени в миллисекундах, id машины и счётчик внутри миллисекунды) помещается в 64 бита, генерируется локально на каждом узле и сортируется по времени, потому что старшие биты это время. UUID v4 случаен и занимает 128 бит. Автоинкременты разных шардов пересекаются. Хеш содержимого совпадёт у одинаковых сообщений и не отражает время.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.