tgoop.com/Java_Iibrary/1727
Create:
Last Update:
Last Update:
Если хочешь уверенно проходить собеседования по системному дизайну, есть набор простых эвристик, которые помогают быстро подобрать решение под типовую задачу. Вот краткий список:
• Задержки + глобальная аудитория → CDN. Доставляем данные с edge-серверов, чтобы уменьшить latency.
• Чтение + узкое место → кэш. Часто читаемые данные кладём в кэш, разгружая базу.
• Запись + всплеск трафика → очередь. Пишем асинхронно, сглаживая пики нагрузки.
• Распределённая транзакция → Saga. Координируем шаги с компенсациями между сервисами.
• ACID + реляционка → SQL. Строгая консистентность и транзакции.
• Гибкость + масштаб → NoSQL. Подходит для схемы без фиксированной структуры и горизонтального масштабирования.
• SQL + рост → шардинг. Делим базу на шарды, чтобы тянуть нагрузку.
• Нагрузка + рост → scale out. Добавляем сервера, а не апгрейдим один.
• Трафик + надёжность → балансировка. Распределяем запросы для стабильности.
• Критичные сервисы + отказ → резервирование. Дублируем, чтобы не было single point of failure.
• Долговечность + сбои → репликация. Держим копии данных для доступности и восстановления.
• Запросы + всплески → троттлинг. Ограничиваем лишние запросы.
• Нагрузка + пики → автоскейлинг. Автоматически подгоняем мощность под трафик.
• Реалтайм + обновления → WebSockets. Двунаправленное живое соединение.
• Повтор + безопасность → идемпотентность. Повторяем операции без побочных эффектов.

