Расскажи, как реализовать шардирование кэша — как по ключу определять, в какую map класть/читать значение?

Вычислите стабильный хеш ключа и выберите shard = hash(key) mod N. Каждый shard содержит собственную map и блокировку, а все операции используют одинаковую функцию.

Короткий ответ

Что ответить на собеседовании

Вычислите стабильный хеш ключа и выберите shard = hash(key) mod N. Каждый shard содержит собственную map и блокировку, а все операции используют одинаковую функцию.

Подробный разбор

Ответ с пояснениями

Вычислите стабильный хеш ключа и выберите shard = hash(key) mod N. Каждый shard содержит собственную map и блокировку, а все операции используют одинаковую функцию.

Это уменьшает конкуренцию между независимыми ключами, но не решает проблему одного горячего ключа. Изменение N требует перераспределения существующих данных. Для распределённого кеша можно рассмотреть consistent hashing, а для локального число шардов часто фиксируют на время жизни структуры.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее