SlideShare a Scribd company logo
node.js
Как работает async Получаем http запрос Смотрим, есть ли пользователь с этой сессией Если нужно – добавляем пользователя Добавляем запись “Вася зашел на index.html” Пример: счетчик посещений
Варианты решения Цикл SELECT * FROM users ... INSERT INTO users INSERT INTO stats JFDI
JFDI
Варианты решения Workers M S S S
Workers (idea)
Ага, щас
Workers (real world)
Workers Работает быстрее Вариант I несложно превратить в II (в большистве случаев) Поддержка нескольких CPU Много worker-ов - много RAM (в случае с процессами) Бардак с shared memory Процессорное время распределяет планировщик ядра (абы как)
Async calls
Async Количество задач ограничено только возможностями CPU Вы сами выбираете, когда переключаться между задачами Разработка и поддержка сложнее Используется только одно ядро Нельзя использовать блокирующийся код
Workers + async M Async Async Async
Workers + Async Вы используете все возможности вашего сервера Вы сами выбираете, когда переключаться между задачами Разработка и поддержка кода становятся еще сложнее
Какой вариант лучше? Не знаю
QA cron while/accept forks async
Async
Работа с сетью select/poll  O(N=total fd) kqueue (BSD only)  O(N=active fd) epoll (linux only)  O(N=active fd)
Таймеры setitimer alarm
Абстракция от бардака libev libevent
node.js libev JS v8 + + ... + = node.js
HTTP FS Прозрачный SSL DNS setTimeout, setInterval Что в коробке?
Что еще? npm = cpan = pip = emerge ndb Socket.IO async-интерфейс к 99% приложений, с которыми вам прийдется работать* * По данным агенства  Roga & Kopyta inc. на июль 2011-го года
Success stories ВКонтакте XMPP 37Signals Wikia Palm/HP WebOS
Тесты производительности * * Эти тесты тестируют неверно, результаты неправильные и пользы от них никакой
Беполезный график
? [email_address] http://twitter.com/kostenko

More Related Content

PDF
Константин Осипов
PDF
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
PDF
Алексей Федоров
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
Олег Бартунов и Иван Панченко
PDF
Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)
PDF
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
PDF
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Константин Осипов
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
Алексей Федоров
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Олег Бартунов и Иван Панченко
Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай

What's hot (20)

PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PDF
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
PDF
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
PPTX
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
PDF
Build your own multistack JS startup
PDF
Юрий Насретдинов, Badoo
PPTX
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
PDF
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
PDF
Профилирование кода на C/C++ в *nix системах
PDF
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
PDF
Путь к Go на конкретном примере
PDF
Benchmarking PostgreSQL in Linux and FreeBSD
PDF
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PPT
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
PDF
Ровная балансировка нагрузки на фронтенд-кластере
PDF
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PPTX
Управление памятью в CPython
PDF
Вячеслав Бахмутов
PDF
Linuxvirt seminar-csc-2015
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Build your own multistack JS startup
Юрий Насретдинов, Badoo
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Профилирование кода на C/C++ в *nix системах
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Путь к Go на конкретном примере
Benchmarking PostgreSQL in Linux and FreeBSD
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Ровная балансировка нагрузки на фронтенд-кластере
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Управление памятью в CPython
Вячеслав Бахмутов
Linuxvirt seminar-csc-2015
Ad

Similar to Node.js (Андрей Костенко) (20)

PDF
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
PDF
Профилирование Node.js
PDF
Выявление неполадок в Java приложениях
ODP
Java 9 - кратко о новом
PDF
IT-инфраструктура. FAQ для разработчика
PPTX
мониторинг производительности приложения на PINBA
PDF
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
PPT
ВВЕДЕНИЕ В NODE.JS
PPTX
Dz Java Hi Load 0.4
PDF
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
PDF
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
PDF
Другая виртуализация
PDF
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
PDF
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
PPTX
Контроль качества и сопровождение программ в реальном времени
ODP
DevOps в реальном времени
ODP
Java: вчера, сегодня, завтра
PPTX
Антон Наумович - Контроль качества и сопровождение в реальном времени
PDF
TMPA-2013 Sartakov: Genode
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Профилирование Node.js
Выявление неполадок в Java приложениях
Java 9 - кратко о новом
IT-инфраструктура. FAQ для разработчика
мониторинг производительности приложения на PINBA
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
ВВЕДЕНИЕ В NODE.JS
Dz Java Hi Load 0.4
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Другая виртуализация
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
Контроль качества и сопровождение программ в реальном времени
DevOps в реальном времени
Java: вчера, сегодня, завтра
Антон Наумович - Контроль качества и сопровождение в реальном времени
TMPA-2013 Sartakov: Genode
Ad

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
PDF
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)

Node.js (Андрей Костенко)