Вычислите стабильный хеш ключа и выберите shard = hash(key) mod N. Каждый shard содержит собственную map и блокировку, а все операции используют одинаковую функцию.
Расскажи, как реализовать шардирование кэша — как по ключу определять, в какую map класть/читать значение?
Вычислите стабильный хеш ключа и выберите shard = hash(key) mod N. Каждый shard содержит собственную map и блокировку, а все операции используют одинаковую функцию.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Вычислите стабильный хеш ключа и выберите shard = hash(key) mod N. Каждый shard содержит собственную map и блокировку, а все операции используют одинаковую функцию.
Это уменьшает конкуренцию между независимыми ключами, но не решает проблему одного горячего ключа. Изменение N требует перераспределения существующих данных. Для распределённого кеша можно рассмотреть consistent hashing, а для локального число шардов часто фиксируют на время жизни структуры.