Сервис принимает запрос на создание платежа, а клиент повторяет его после тайм-аута. Как спроектировать API, чтобы повтор не создал второй платёж?
База Hintsage
Проектирование систем
Декомпозиция требований, оценка нагрузки, API, хранение данных и системные компромиссы.
Практика
Вопросы: Проектирование систем
В расчёте нагрузки использовали только средний RPS за час. Какой ключевой риск это создаёт?
В системе заказов один крупный клиент создаёт почти весь трафик, хотя остальные клиенты распределены равномерно. Как изменить ключ шардирования, чтобы убрать горячий шард?
Сравните выбор реляционной схемы и документного хранилища для каталога с постоянно меняющимися атрибутами: какой главный компромисс возникает?
Для ленты, в которую постоянно добавляются записи, сравните пагинацию по смещению и по курсору: какой подход сохранит стабильность выдачи?
Ситуация: после успешной записи пользователь сразу читает данные из реплики и видит старое состояние. Какую гарантию должен обеспечить API?
Команда требует: «система должна отвечать быстро». Как превратить это требование в проверяемое ограничение?
Как развивать публичный API при длительном сосуществовании старых и новых клиентов, не ломая прежний контракт?
При ревью обработчика чтения профиля обнаружена ветка ниже. Какой механизм может перегрузить базу данных при одновременном истечении TTL и как исправить этот дефект?
profile = cache.get(user_id)
if profile is not found:
profile = database.load(user_id)
cache.set(user_id, profile, ttl=300)
return profile
Сервис получает запросы быстрее, чем рабочие процессы успевают их обрабатывать. Как не допустить неограниченного роста очереди?
В цепочке из пяти синхронных сервисов один медленно отвечает. Как спроектировать тайм-ауты, чтобы задержка не распространялась по всей цепочке?
В сервисе бронирования два параллельных запроса могут списать один последний билет. Какой механизм на уровне хранилища предотвращает продажу сверх доступного остатка?
Операция формирования отчёта занимает несколько минут. Как спроектировать API, чтобы клиент не удерживал синхронный запрос открытым?
В сервисе заказов аналитические запросы конкурируют с оформлением заказов за ресурсы базы. Как разделение моделей чтения и записи снижает это влияние?
В социальной ленте один автор имеет миллион подписчиков. Почему публикация одной записи может создать миллион операций записи?
На ревью схемы обнаружен индекс, ускоряющий один запрос чтения в таблице с частыми вставками. Как определить, оправдывает ли выигрыш от индекса его стоимость?
Команда оценивает систему только по числу запросов в секунду. Как перевести эту оценку в нагрузку на хранилище?
Команда декомпозирует сервис, выделяя отдельный микросервис для каждой таблицы. Какой системный дефект чаще всего создаёт такой подход?
В таблице часто ищут записи по двум полям и сортируют результат по третьему. Как выбрать порядок колонок составного индекса?
Представьте API профиля: два клиента одновременно меняют один ресурс без передачи версии. Какой дефект может проявиться?
Показано 1–20 из 50