ERLANG СДЕЛАЕТ ВАШИ ПРИЛОЖЕНИЯ РЕАЛТАЙМОВЫМИ
BRO AGENCYБЕДА ИЛЬЯ@IR4Y_IX
1 ЧТО НУЖНО ЗНАТЬ О WEB-ПРИЛОЖЕНИЯХ
Это клиент-сервеное приложение работающее по протоколу HTTP
Схема работы не подходят для создания приложений реального времени
2
HTTP REQUEST
MIDDLEWARE
MIDDLEWARE
MIDDLEWARE
HANDLER
MIDDLEWARE
MIDDLEWARE
MIDDLEWARE
APPLICATIONWEB SERVER
REQUEST TOAPPLICATION
APPLICATION RESPONCE
APPLICATIONWEB SERVER
BROWSER
DRAW PAGE
3 ПРОБЛЕМА
Эта схема синхронная
Работает по типу запрос ответ
Инициатором соединения выступает клиент
ЧТО ДЕЛАТЬ ЕСЛИ СЕРВЕРУ НУЖНО О ЧЕМ-ТО ОПОВЕСТИТЬ КЛИЕНТА?
5 ЭВОЛЮЦИЯ ПУТЕЙ РЕШЕНИЯ
Пользователь сам обновит страницуShort PollingLongPollingCometWebSocket
6 WEBSOCKET
WebSocket превращает HTTP в асинхронный и симетричный протокол
7 ПОПУЛЯРНЫЕ ВЕБ-ФРЕЙМОРКИК ЭТОМУ НЕ ГОТОВЫ
Оптимизированы для работы по схеме запрос-ответ
Не готовы обрабатывать потоки данных
Не готовы обрабатывать пул WebSocket соединений
8 КАК ЖЕ БЫТЬ ?
Переписать все на специализированных фреймворках, например, N₂O или meteor.js
Это долго и очень дорого
9 А МОЖЕТ КАК-ТО ПО СТАРИНКЕ?
«Давайте возьмем и напишем часть нашего приложения, отвечающую за реалтайм в виде отдельного модуля!А все остальное оставим без изменения.»
10 ЧТО МОЖНО ИСПОЛЬЗОВАТЬ?
NodeJSEventMachineTornadoLibevent
ERLANG
11 ЧТО ТАКОЕ ERLANG?
Создан в 1980-х годах компанией Ericssonи использовался в телекоммуникационном оборудовании.
В 1998 году вышел в open source и стал набирать популярность.
12 ОСНОВОПОЛАГАЮЩИЕ ПРИНИНЦИПЫ
LET IT CRASH
МОДЕЛЬ АКТОРОВ
НЕИЗМЕНЯЕМЫЕДАННЫЕ
13 ПОЧЕМУ ERLANG?
Изначальная ориентация на реалтайм
Проверен годами в телекоммуникационном оборудовании
Создан инженерами для инженеров
14 КАК ОБСТОЯТ ДЕЛА С WEB?
N₂O ChicagoBoss
15 ЧТО БУДЕМ ИСПОЛЬЗОВАТЬ?
DJANGO — основной Web фреймворкTASTYPIE — приложение для создания RESTANGULARJS — фронтендREDIS — Publish/Subscribe очередь сообщенийCOWBOY — обработчик WebSocket соединении
POSTGRESQL
ANGULARJS
DJANGO ORM MODEL
TASTYPIE MODEL RESOURCE
16
SUBSCRIBER
17 PUBLISH SUBSCRIBE
PUBLISHER SUBSCRIBER
SUBSCRIBER
CHANNEL
POSTGRESQL REDIS
DJANGO ORM MODEL
TASTY
PIE
SERIA
LIZER
TASTYPIE MODEL RESOURCE
ANGULARJS ANGULARJS
COWBOY
EREDISSUBSCRIBE PROCESS
ERLA
NG
BULLET
SUBSCRIBESAVE PUBLISH
TESTYPIEHYDRATE
HTTP POST WEBSOCKET
20 ПОЧЕМУ БЫ НЕ ПОЙТИ ДАЛЬШЕ?
Добавим RPC вызовы через RabbitMQ
Добавим возможность подписываться на канал во время RPC вызовов.
Оформим в виде отдельной библиотеки: https://github.com/ir4y/asteroid
CELERY WORKER
RABBITMQ
ERLANG CELERY CLIENT
COWBOY
ERLA
NG
BULLET
ANGULARJS RPC PROVIDER
SELECT WORKER SEND TASK RESULT IN JSON
PARSE CELERY RESULT
RESTORE UUIDAPPEND UUID TO CELERY RESULTSEND DATA TO BULLET PROCESS
ROUTE RECEIVED DATA WITH UUID TO CALLBACK
SERIALIZE DATA TO JSON
SAVE UUIDSPAWN PROCESS
SYNC CALL TO CELERY
GENERATE UUIDCALL PROCEDUER
GITHUB.COM/IR4Y
Top Related