Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемАлександра Калакутская
1 Centrifuge – мгновенные сообщения для веб-приложений. Эволюция от Python к Go. Александр Емелин, 2015.
2 О докладчике Работаю в Mail.Ru Group, участвую в разработке внутренних и некоторых внешних сервисов компании Пишу на Python и иногда на Javascript С недавних пор полюбил еще и Go Профиль на Github –
3 Мгновенные (real-time) сообщения? Сообщение о неком событии, доставленное в браузер клиента моментально после того, как бэкенд приложения узнал о событии Никакой перезагрузки страницы и периодических AJAX- запросов, только push Менее чем за 250 мс
4 С чего всё начиналось Корпоративный интранет – Server-Sent Events, Twisted (Cyclone) для мгновенных сообщений Неудавшаяся идея агрегатора (Sentry для всего) Wait for it… Centrifuge
5 Клиентская часть WebSockets WebSuckets ( Полифиллы к WebSockets – Socket.io, SockJS и другие Pub/Sub библиотека – для удобного менеджмента каналов
6 Серверная часть Django, Flask… Если мы говорим о Python Django-подобные фреймворки в других языках программирования Как быть?
7 Пути решения Переписать всё на Asyncio, Tornado или подобном асинхронном фреймворке. Или другом языке (Javascript, Go, Erlang) Gevent подход WebSocket API веб-сервера (uwsgi) Nginx-push-stream-module Внешний асинхронный сервер/сервис
8 Open-source решения (Faye, Autobahn, DKLAB Realplexor, Centrifuge/Centrifugo и др.) Внешний, зачастую платный, сервис (pusher.com, pubnub.com и др.)
9 Centrifuge
11 Генерация токена для подключения
13 Возможности из коробки Авторизация Масштабирование через Redis PUB/SUB Активные подключения в канале (presence), история сообщения в канале (history), события подписки/отписки (join/leave) Разные типы каналов API, библиотеки для Python, Ruby, PHP Javascript-клиент Административный веб-интерфейс И другие…
14 Centrifugo
15 Почему Go Производительность (4-20x) Использование нескольких ядер одновременно Встроенная в язык concurrency-модель - горутины, возможность использовать все доступные библиотеки без необходимости поиска неблокирующих На выходе один исполняемый файл под все платформы Проблемы с Tornado Проще вносить изменения в код
16 Марафон коммитов длиной в 2 месяца
17 Другие плюсы Go, обнаружившиеся в процессе Конфигурация – Viper Просто тестировать Race detector Debug – возможность в рантайме пронаблюдать за жизненным циклом горутин
18 И еще одна деталь Удалось выделить real-time ядро Центрифуги в отдельный модуль, который можно использовать извне
19 Ссылки на проект Организация Centrifugal на Github со всеми репозиториями Организация Centrifugal на Github Документация на gitbooks.io Документация Демо-инстанс на Heroku (пароль demo)Демо-инстанс
20 Ссылки на полезные материалы RFC 6455 Websocket Protocol WebSockets: a Guide Python and real-time Web Real-time Applications and will Django adapt to it? State of the Real-Time Web with Django Stateless and Proud in the Realtime World Lessons Learned Architecting Realtime Applications Django on Gevent
21 Вопросы?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.