Попробуйте решить эту задачу самостоятельно
Практикуйтесь с интерактивными подсказками и моментальной обратной связью
Постановка задачи
💾 Что такое Distributed Cache?
Distributed Cache (распределенный кэш) - это система, которая хранит данные в виде пар "ключ-значение" в памяти на нескольких машинах в сети. В отличие от одноузловых кэшей, которые ограничены ресурсами одной машины, распределенные кэши масштабируются горизонтально на множество узлов для обработки больших объемов данных. Кластер кэшей работает совместно, разделяя и реплицируя данные, обеспечивая высокую доступность и отказоустойчивость при сбоях отдельных узлов.
Функциональные требования
Основные требования
- Пользователи могут устанавливать, получать и удалять пары ключ-значение.
- Пользователи могут настраивать TTL (время жизни) для пар ключ-значение.
- Вытеснение данных должно осуществляться в соответствии с политикой LRU (Least Recently Used)
За рамками задачи
- Пользователи могут настраивать размер кэша.
Мы выбрали политику LRU, но если вам не сказали об этом прямо, лучше уточнить у интервьюера, как вытеснять данные из кэша. Конечно, существуют и другие политики, которые вы можете использовать, например, LFU (Least Frequently Used), FIFO (First In First Out) и т.д.
Нефункциональные требования
На этом этапе вам следует спросить интервьюера, какой масштаб мы ожидаем. Это окажет большое влияние на дизайн, начиная с нефункциональных требований.
Предположим, что нам нужно хранить до 1 ТБ данных и ожидать пиковой нагрузки до 100 000 запросов в секунду.
Основные требования
- Система должна обладать высокой доступностью.
- Система должна поддерживать операции с низкой задержкой (< 10 мс для запросов
getиset). - Система должна быть масштабируемой и способной поддерживать ожидаемый объем данных в 1 ТБ и 100 000 запросов в секунду.
За рамками задачи
- Надежность хранения (сохранение данных после перезагрузок)
- Строгие гарантии согласованности
- Возможности сложных запросов
- Поддержка транзакций
Обратите внимание, что мы делаем довольно много серьезных предположений о том, что нас здесь интересует. Обязательно уточните это у интервьюера. Вероятно, вы уже использовали кэш раньше, поэтому знаете множество потенциальных компромиссов. Например, некоторым интервьюерам может быть важна надежность хранения данных.
Перейдите на Premium, чтобы продолжить
Разблокируйте доступ к этой статье и всем остальным материалам с NowInterview Premium
Перейти на Premium