26
node.js

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

  • Upload
    ontico

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

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

node.js

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

Как работает async

•Получаем http запрос•Смотрим, есть ли пользователь с

этой сессией•Если нужно – добавляем

пользователя•Добавляем запись “Вася зашел

на index.html”

Пример: счетчик посещений

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

Варианты решения

•Цикл•SELECT * FROM users ...•INSERT INTO users•INSERT INTO stats

JFDI

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

JFDI

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

Варианты решенияWorkers

MM

SS SSSS

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

Workers (idea)

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

Ага, щас

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

Workers (real world)

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

Workers• Работает быстрее

• Вариант I несложно превратить в II (в большистве случаев)

• Поддержка нескольких CPU

• Много worker-ов - много RAM (в случае с процессами)

• Бардак с shared memory

• Процессорное время распределяет планировщик ядра (абы как)

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

Async calls

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

Async•Количество задач ограничено только возможностями CPU

• Вы сами выбираете, когда переключаться между задачами

• Разработка и поддержка сложнее

•Используется только одно ядро

•Нельзя использовать блокирующийся код

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

Workers + asyncMM

AsynAsyncc

AsynAsyncc

AsynAsyncc

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

Workers + Async• Вы используете все возможности вашего сервера

• Вы сами выбираете, когда переключаться между задачами

• Разработка и поддержка кода становятся еще сложнее

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

Какой вариант лучше?

Не знаю

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

QA•cron•while/accept•forks•async

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

Async

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

Работа с сетью

•select/poll O(N=total fd)

•kqueue (BSD only) O(N=active fd)

•epoll (linux only) O(N=active fd)

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

Таймеры• setitimer

• alarm

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

Абстракция от бардака

• libev

• libevent

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

node.jslibevlibev JSJS v8v8+ + ......+

=

node.jsnode.js

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

•HTTP•FS•Прозрачный SSL•DNS•setTimeout, setInterval

Что в коробке?

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

Что еще?•npm = cpan = pip = emerge•ndb•Socket.IO•async-интерфейс к 99%

приложений, с которыми вам прийдется работать*

* По данным агенства Roga & Kopyta inc. на июль 2011-го года

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

Success stories

•ВКонтакте XMPP•37Signals•Wikia•Palm/HP WebOS

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

Тесты производительно

сти ** Эти тесты тестируют неверно,

результаты неправильныеи пользы от них никакой

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

Беполезный график

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

[email protected]

http://twitter.com/kostenko