SlideShare a Scribd company logo
Асинхронные приложения в руби

Роман Горель
Ваше приложение
Запрос

Вебсервер

Приложение

БД
Остальные запросы – в очередь
Запрос

Вебсервер

Приложение

БД
Нужно больше инстансов!
Запрос

Фронтэнд-сервер

Приложение

Приложение

БД

Приложение
Докупим еще серверов

Балансер

Фронтэнд-сервер

Приложен
ие

Приложен
ие

БД

Фронтэнд-сервер

Приложен
ие

Сервер
1

Приложен
ие

Приложен
ие

БД

Приложен
ие

Сервер
2
Синхронная модель
Многопоточность /
многопроцессовость
Многопроцессовость
●

●

Параллельное
выполнение

●

Легко управлять
●

Дорогое
переключение
контекста
Ресурсоемкость
Многопоточность
●

●

●

Параллельное
выполнение
Дешевле
переключение
контекста
Меньшее
потребление
ресурсов

●

●

Потокобезопасност
ь
GIL
Проблема C10k
Пул
Запрос

Поток

Запрос

Поток

Запрос

Поток

10k
Очередь
Асинхронная модель
Блокировка в синхронной модели
Асинхронные технологии
Reactor pattern
EventMachine
Простой веб-сервер
ab -c 5 -n 10 "http://127.0.0.1:3000/"
EM deferred
Sync vs Deferred
Свои Deferred классы
Спагетти из коллбеков
Файберы приходят на помощь
EM-Synchrony
Немного магии EM-Synchrony
Поддерживаемые клиенты
●

Mysql2

●

Activerecord (via mysql2)

●

Mongo / Mongoid

●

Memcached

●

Redis
Как же применить это к вебу?
Sinatra::Async
Маунтим к рельсам
●

Gemfile

●

Routes.rb
Проверим асинхронность

Rails controller, sleep(1)

AsyncTest
Почитать
●
●

●

Илья Григорик - http://www.igvita.com/
Мануал по Twisted
http://krondo.com/?page_id=1327

http://everburning.com/news/eventmachine-introdu
Asynchronous Applications in Ruby. Roman Gorel

More Related Content

What's hot

React Webinar Slides
React Webinar SlidesReact Webinar Slides
React Webinar Slides
Kateryna Porshnieva
 
Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"
Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"
Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"
Provectus
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"
railsclub
 
Эффективный JavaScript - IQLab Frontend Fusion 2012
Эффективный  JavaScript - IQLab Frontend Fusion 2012Эффективный  JavaScript - IQLab Frontend Fusion 2012
Эффективный JavaScript - IQLab Frontend Fusion 2012
Ecommerce Solution Provider SysIQ
 
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Ontico
 
Windows Azure Service Bus
Windows Azure Service BusWindows Azure Service Bus
Windows Azure Service Bus
Pavel Revenkov
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
CodeFest
 

What's hot (7)

React Webinar Slides
React Webinar SlidesReact Webinar Slides
React Webinar Slides
 
Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"
Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"
Станислав Иващенок: "Serverless в dev ops на примере сервисов amazon"
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"
 
Эффективный JavaScript - IQLab Frontend Fusion 2012
Эффективный  JavaScript - IQLab Frontend Fusion 2012Эффективный  JavaScript - IQLab Frontend Fusion 2012
Эффективный JavaScript - IQLab Frontend Fusion 2012
 
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
 
Windows Azure Service Bus
Windows Azure Service BusWindows Azure Service Bus
Windows Azure Service Bus
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 

Similar to Asynchronous Applications in Ruby. Roman Gorel

«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Ontico
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Ontico
 
Павел Кудинов: Сетевая многозадачность: событийные машины
Павел Кудинов: Сетевая многозадачность: событийные машиныПавел Кудинов: Сетевая многозадачность: событийные машины
Павел Кудинов: Сетевая многозадачность: событийные машиныguestf673
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Ontico
 
Виртуальный сервер
Виртуальный серверВиртуальный сервер
Виртуальный сервер
Елена Кузовкина
 
презентация
презентация презентация
презентация
larinem
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
Andrey Smirnov
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
Ontico
 
Презентация
Презентация Презентация
Презентация
larinem
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
Fwdays
 
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
LogeekNightUkraine
 
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповВидео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
TrueConf
 
Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"
Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"
Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"
Fwdays
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
Alexander Demidov
 
Презентация Ростелекома про межвед 01_2012 год
Презентация Ростелекома про межвед  01_2012 годПрезентация Ростелекома про межвед  01_2012 год
Презентация Ростелекома про межвед 01_2012 год
Victor Gridnev
 
HTML5 WebSockets and WebWorkers
HTML5 WebSockets and WebWorkersHTML5 WebSockets and WebWorkers
HTML5 WebSockets and WebWorkers
Alexander Feschenko
 
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
JetStyle
 

Similar to Asynchronous Applications in Ruby. Roman Gorel (20)

«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
 
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
Виртуализированный highload (NFV), Александр Шалимов (ЦПИКС)
 
Павел Кудинов: Сетевая многозадачность: событийные машины
Павел Кудинов: Сетевая многозадачность: событийные машиныПавел Кудинов: Сетевая многозадачность: событийные машины
Павел Кудинов: Сетевая многозадачность: событийные машины
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Виртуальный сервер
Виртуальный серверВиртуальный сервер
Виртуальный сервер
 
презентация
презентация презентация
презентация
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 
Презентация
Презентация Презентация
Презентация
 
Sivko
SivkoSivko
Sivko
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
 
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповВидео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
 
Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"
Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"
Дмитрий Немеш "Миграция нагруженного проекта на микросервисы"
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Презентация Ростелекома про межвед 01_2012 год
Презентация Ростелекома про межвед  01_2012 годПрезентация Ростелекома про межвед  01_2012 год
Презентация Ростелекома про межвед 01_2012 год
 
HTML5 WebSockets and WebWorkers
HTML5 WebSockets and WebWorkersHTML5 WebSockets and WebWorkers
HTML5 WebSockets and WebWorkers
 
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
Минисервисы или микросервисы в условия цейтнота, Руслан Каримов, UWDC 2015
 
Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)
 

More from Sphere Consulting Inc

Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.
Sphere Consulting Inc
 
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Sphere Consulting Inc
 
Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.
Sphere Consulting Inc
 
Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.
Sphere Consulting Inc
 
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mqRoman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Sphere Consulting Inc
 
OpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy ZaporozhetsOpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy Zaporozhets
Sphere Consulting Inc
 
Debugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo SorochanDebugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo Sorochan
Sphere Consulting Inc
 
FormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro PiluginFormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro Pilugin
Sphere Consulting Inc
 

More from Sphere Consulting Inc (8)

Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.
 
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.
 
Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.
 
Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.
 
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mqRoman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
 
OpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy ZaporozhetsOpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy Zaporozhets
 
Debugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo SorochanDebugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo Sorochan
 
FormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro PiluginFormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro Pilugin
 

Asynchronous Applications in Ruby. Roman Gorel