Все задачи
Сложнаяsystem-designreliabilityfailover

Переживи отказ базы данных

Принято: —Решили: 0

Условие

Платёжный сервис: 800 запросов/с. На 30-й секунде primary база данных отказывает на 45 секунд. Без реплики это единая точка отказа: все запросы получают ошибки. Если к primary подключена реплика чтения, чтения сразу уходят на неё, а через 15 секунд реплика становится primary и принимает записи. В окно отказа допускается до 5 % ошибок, но в последние 30 секунд система должна полностью восстановиться. Тариф реплики выберите так, чтобы она вытянула всё, став primary.

Ограничения

  • p95 ≤ 250 мс, ошибки ≤ 0,1 % (в отказе ≤ 5 %), восстановление за последние 30 с, бюджет $2000/мес.

Требования

СимуляцияПостроить с нуля
p95
≤ 250 ms
Ошибки
≤ 0.10 %
Бюджет
$2,000/mo
Пользователей
50,000
Ваша архитектура стоит$0 / $2,000

★ в бюджете · ★★ ≤ 75 % · ★★★ ≤ 50 % бюджета

Сценарии (проверяются по порядку)
  1. 1Обычная нагрузкаНагрузка

    800 запросов/с в течение 60 секунд: 70 % чтений, 20 % записей, 10 % статики.

    60 s · 800 rps · R 70 / W 20 / S 10 %

  2. 2Отказ primaryОтказ

    На 30-й секунде база данных отказывает на 45 секунд; ошибки ≤ 5 %, в последние 30 секунд — обычный SLO.

    120 s · 800 rps · R 70 / W 20 / S 10 % · База данных отказывает на 30-й с на 45 с · SLO здесь: 5.0 % · восстановиться за последние 30 с

Блоки

Нажмите, чтобы добавить, или перетащите на холст. Соединяйте блоки, протягивая от правой точки к левой.

ИИ-наставник

Застряли? Возьмите подсказку — наставник объясняет идею, но никогда не выдаёт решение.

Решите задачу, чтобы открыть разбор.