[Moscow.pm] асинхронный код позволяет сильно сэкономить ресурсы серверов

Alexander Lourier aml на rulezz.ru
Вс Фев 8 14:14:00 PST 2015


>
> 8 февраля 2015 г., 23:22 пользователь Alexander Lourier <aml на rulezz.ru>
> написал:
> >> > ну смешно же. любой демон, работающий с внешней средой.
> >> ну, то есть, прокси. одну задачу придумали. а еще?
> >
> >
> > Почему обязательно прокси?
> >
> > Практически любое веб-приложение требует на каждый запрос
> аутентифицировать
> > сессию, запросить данные у бэкендов (memcached, база, какие-то другие
> > серверы), собрать шаблон, отправить обратно. Вычислительной нагрузки -
> кот
> > наплакал (сформировать запросы, распарсить ответы, отрендерить шаблон,
> > сформировать ответ). Но это не прокси, это полноценное приложение,
> которых
> > большинство.
>
> Да, вот именно что большинство. Но не согласен, что в перечисленном
> выше списке вычислительной нагрузки - кот наплакал. Её много.
> Нельзя сделать такое приложение только асинхронным. Пока в
> каком-нибудь одном  воркере будут вычисления, все остальные будут
> тупить.
>

В перле - да. В общем случае - необязательно. В Go свободный тред из пула
подхватит горутину и продолжит её выполнять.


> Соответственно придётся делать и fork, а внутри каждого unix процесса
> - асинхронный код. Что похоже на двойную работу ради экономии памяти.
>

Fork или threads - обязательно, чтобы загрузить все ядра процессора.
Асинхронный код, чтобы использовать их более эффективно.


> Имхо вообще асинхронные приложения мало где оправданы - это должно
> быть приложение либо блокирующеесся только вводом-выводом,

либо то где
> хайлоад/много воркеров и разработка fork+AE+риск что Марк найдёт свой
> автобус хоть как-то выгоднее содержания дополнительных компов/памяти
> памяти (для "большинства задач" речь о выделении о покупке одной
> планки памяти в следующий апгрейд).
>

Они оправданны, если имеет смысл экономить ресурсы. Если же эффект от
экономии не оправдывает затрат времени разработчика, то конечно не надо.
Планка в один сервер стоит дёшево. Если серверов 10, и планка нужна в
каждый, это уже дороже. Если это арендованные серверы или облако, то
намного дороже и каждый месяц. Если усилия разработчиков на разработку и
поддержку асинхронного кода меньше, чем выгода от его внедрения, то ну его
нафиг, конечно.

Собственно, суть в том, что на перле писать и поддерживать асинхронный код
- это боль. Поэтому нужна очень серьёзная экономия, чтобы этим заниматься.

На Go (или даже Stackless Python) это совершенно естественно и бесплатно.
Поэтому там даже вопрос так не стоит - конечно надо писать асинхронно.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150208/5671c6f2/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm