Middle — Senior
48
Распределение данных в базе через шардирование
Условие задачи
Архитектура сервиса:
- Клиенты отправляют POST‑запросы для создания сокращённых URL и GET‑запросы для получения оригинального адреса.
- Все запросы проходят через API‑Gateway, который обеспечивает балансировку нагрузки и проверку прав доступа.
- Запросы маршрутизируются к отдельным микросервисам TinyUrlPOST и TinyUrlGET.
- Основное хранилище – MySQL‑БД, обслуживающая оба типа запросов.
Исходя из описанной схемы, сформулируйте план шардирования базы данных:
- по какому критерию (например, по полю short_link или по user_id) следует делить данные;
- какие стратегии (range‑based, hash‑based, list‑based и пр.) можно применить;
- каким образом обеспечить масштабируемость и равномерное распределение нагрузки между шардовыми узлами;
- как реализовать механизм маршрутизации запросов к соответствующему шару.