[Moscow.pm] асинхронный код позволяет сильно сэкономить ресурсы серверов
Михаил Монашёв
postmaster на softsearch.ru
Вс Фев 8 11:31:13 PST 2015
Здравствуйте, Daniel.
>> Там один ресурс, который экономится: чем быстрее обрабатывается
>> запрос, тем быстрее от освободит занимаемую под обработку память.
>> Поэтому всё, что можно запустить параллельно, запускается
>> параллельно.
> Имею возразить и попросить уточнений :)
> 1) синхронная модель предполагает вытесняющую многозадачность,
> которая, в свою очередь, предполагает накладные расходы на
> переключение контекста. так что процессор тоже должен, типа,
> экономиться. ну или не тоже.
Что такое переключение контекста? Если я правильно понимаю, то это
значит засунуть все регистры процессора в оперативку, прочитать из
памяти другие значения регистров и совершить переход на следующую
задачу. Возможно оно чуть сложнее, точно не скажу. В любом случае это
несравненно меньше по времени, чем выполнение даже небольшого кода на
языке высокого уровня. И я удивлюсь, если кто-то в перле упёрся именно
в это. Обычная проблема большинства кода - это очень неэффективное
использование памяти: много выделяется того, чего не нужно, память не
используется повторно, память используется хаотично и в большем
количестве, чем реально необходимо и т.д.
> 2) действительно ли кобек-ориентированное программирование позволяет
> обрабатывать запросы быстрее? а каким образом?
Пришёл запрос на выдачу странички. Надо сделать 30 запросов к
мемкешеду, 20 к базе. С огромной вероятностью их не надо делать
последовательно. Хотя в синхронном программировании все они делаются
один за другим. В асинхронном мы имеем возможность запустить
выполнение нескольких (не обязательно всех) запросов одновременно и
обрабатывать их результаты по мере их прихода. Например, до того, как
юзер прошёл авторизацию можно достать из мемкешеда список его френдов.
Ведь скорее всего он пройдёт авторизацию и этот список нам
понадобится.
--
С уважением,
Михаил mailto:postmaster на softsearch.ru
Подробная информация о списке рассылки Moscow-pm