Category: архитектура

Category was added automatically. Read all entries about "архитектура".

jewishi

Архитектура. sync vs async

Дано сферическое веб-приложение в вакууме. Работает для простоты классически - пришёл запрос HTTP извне, в зависимости от переменных запроса приложение делает запрос к СУБД, получает ответ, обрабатывает его, отдаёт страничку HTTP-ответом. Допускаем, что запрос к базе занимает 150ms, обработка ответа и шаблонизация - 50ms. Отклонениями пренебрегаем для построения модели. К диску не обращаемся, дисковых блокировок нет. Считаем, что СУБД идеальна, сферична и вакуумна, и выдаёт ответ за 150ms гарантировано при любых нагрузках. Предполагается использование round-robin балансера по умолчанию перед приложением. Предполагается, что для
приложения выделяется специальный сервер.

Требуется получить от приложения оптимальным образом сферическую цифру в 100 HTTP-запросов в секунду извне.

В случае синхронного алгоритма реализации приложения, нам потребуется 20 работающих копий приложения, так как одна копия сможет обрабатывать строго 5 qps.

В случае асинхронного алгоритма реализации приложения (event-driven), нам потребуется количество приложений от одного до количества ядер.

Вопроса у меня два:
1. Есть ли в данной модели выигрыш асинхронного метода перед синхронным? Какой? Чем объясняется?
2. Если есть, то сколько асинхронных приложений оптимально держать? Почему? Чем объясняется?