Разделите путь создания ссылки и высокочастотный путь перехода. Храните уникальное соответствие кода адресу, кэшируйте востребованные ссылки и масштабируйте stateless-обработчики горизонтально.
Проектирование высоконагруженного сервиса сокращения URL
Разделите путь создания ссылки и высокочастотный путь перехода. Храните уникальное соответствие кода адресу, кэшируйте востребованные ссылки и масштабируйте stateless-обработчики горизонтально.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Требуется разработать концепцию приложения, реализующего сервис сокращения ссылок (подобно Bitly), способного обслуживать приблизительно 10 000 запросов в секунду. Необходимо описать архитектуру уровня приложений: выбор и организация хранилища данных, стратегия масштабирования, а также общую структуру компонентов системы. При этом не привязывайтесь к конкретным технологиям, классам или библиотекам.
Ответ
Разделите путь создания ссылки и высокочастотный путь перехода. Храните уникальное соответствие кода адресу, кэшируйте востребованные ссылки и масштабируйте stateless-обработчики горизонтально.
Уточните, относятся ли 10 000 RPS к чтению или созданию, размер URL, географию и допустимую задержку. Уникальность обеспечивается генерацией и ограничением записи, а маршрутизация по коду — индексом или шардом. Репликация и кэш уменьшают нагрузку, но требуют правил свежести, удаления и TTL. Нужны rate limiting, защита от вредоносных ссылок, метрики, резервирование и план восстановления. Конкретный набор технологий без этих требований выбирать рано.