Centrifuge – мгновенные сообщения для веб-приложений. Эволюция от Python к Go. Александр Емелин, 2015.

Презентация:



Advertisements
Похожие презентации
AJAX Asynchronous JavaScript and XML среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
Advertisements

Uнmрасеmu Web-интерфейсы. В данном документе представлены наши работы по созданию Web интерфейсов для корпоративных приложений. Мы используем самые последние.
Троицкий Д.И. Интернет-технологии1 ДИНАМИЧЕСКИЕ WEB-СТРАНИЦЫ СЕРВЕРНЫЕ СЦЕНАРИИ Лекция 9 Кафедра «Автоматизированные станочные системы» Dept. of Automated.
Введение в PHP-MySQL Факультет Интернета МФПУ СИНЕРГИЯ Курс «Веб-разработка» Илья Ершов.
D7 – новая платформа разработки сайтов и порталов Тушинский Юрий Технический директор Битрикс.
WEB- ТЕХНОЛОГИИ Лекция 1. WEB- ПРИЛОЖЕНИЯ 1 Особый тип программ, построенных по архитектуре « клиент - сервер » Основа получение запросов от пользователя.
Web Ready 2013 Автор: Сергей Соколов Минск, 25 Октября 2013 а.v3 Технические аспекты (только для IT-аналитиков)
Java как язык Веба: эволюция или ребрендинг? Анатолий Филин, ЗАО «Грамант»
Ruby on Rails. Что такое Ruby? Ruby – это открытый, объектно- ориентированный скриптовый язык, изобретенный Юкихиро Мацумото в начале 90-х.
Всевоволод Головизнин, MVC – паттерн проектирование, в котором бизнес - логика, управляющая логика и интерфейс разделены на три отдельных компонента.
ДонНУ, кафедра КТ, проф.В.К.Толстых Web-службы (Web-сервисы) введение введение Разработка в среде Delphi Из цикла лекций «Internet-технологии разработки.
ATLAS/AJAX – новый подход к web Кондратьев Денис VNG User Group
Мониторинг в Mail.Ru Group Лихобабин Сергей Руководитель отдела внутренней разработки.
Разработка прототипа системы управления веб-содержимым Анисимов А.О. Руководители: Васючкова Т. А., Семенов И. А.
ИРБИС 128: опыт внедрения, преимущества и новые решения для библиотек Сергиенко Татьяна Васильевна, вед. специалист Ресурсного центра БИК СФУ.
Интегрированная система для совместной работы Lotus Notes / Domino г. Киев, ул. Фрунзе, 69 тел.: +38 (044)
Единая система аутентификации Обзор решения Москва, 2012г.
Разработка информационной системы управления документацией (Wiki-системы) программный проект по курсу «Базы данных» Скворцов А.Н. гр. 4081/4 Рытенков А.С.
Предпосылки формирования нового подхода к проектированию динамических ресурсов всемирной паутины ацп. Кейно П.П. Научный руководитель: проф., к.т.н. Силуянов.
Школьный портал Бычков Андрей. 1.Идеи Во время осенних каникул 2009 года, когда объявили карантин и продлили каникулы ещё на одну неделю, возник вопрос.
Транксрипт:

Centrifuge – мгновенные сообщения для веб-приложений. Эволюция от Python к Go. Александр Емелин, 2015.

О докладчике Работаю в Mail.Ru Group, участвую в разработке внутренних и некоторых внешних сервисов компании Пишу на Python и иногда на Javascript С недавних пор полюбил еще и Go Профиль на Github –

Мгновенные (real-time) сообщения? Сообщение о неком событии, доставленное в браузер клиента моментально после того, как бэкенд приложения узнал о событии Никакой перезагрузки страницы и периодических AJAX- запросов, только push Менее чем за 250 мс

С чего всё начиналось Корпоративный интранет – Server-Sent Events, Twisted (Cyclone) для мгновенных сообщений Неудавшаяся идея агрегатора (Sentry для всего) Wait for it… Centrifuge

Клиентская часть WebSockets WebSuckets ( Полифиллы к WebSockets – Socket.io, SockJS и другие Pub/Sub библиотека – для удобного менеджмента каналов

Серверная часть Django, Flask… Если мы говорим о Python Django-подобные фреймворки в других языках программирования Как быть?

Пути решения Переписать всё на Asyncio, Tornado или подобном асинхронном фреймворке. Или другом языке (Javascript, Go, Erlang) Gevent подход WebSocket API веб-сервера (uwsgi) Nginx-push-stream-module Внешний асинхронный сервер/сервис

Open-source решения (Faye, Autobahn, DKLAB Realplexor, Centrifuge/Centrifugo и др.) Внешний, зачастую платный, сервис (pusher.com, pubnub.com и др.)

Centrifuge

Генерация токена для подключения

Возможности из коробки Авторизация Масштабирование через Redis PUB/SUB Активные подключения в канале (presence), история сообщения в канале (history), события подписки/отписки (join/leave) Разные типы каналов API, библиотеки для Python, Ruby, PHP Javascript-клиент Административный веб-интерфейс И другие…

Centrifugo

Почему Go Производительность (4-20x) Использование нескольких ядер одновременно Встроенная в язык concurrency-модель - горутины, возможность использовать все доступные библиотеки без необходимости поиска неблокирующих На выходе один исполняемый файл под все платформы Проблемы с Tornado Проще вносить изменения в код

Марафон коммитов длиной в 2 месяца

Другие плюсы Go, обнаружившиеся в процессе Конфигурация – Viper Просто тестировать Race detector Debug – возможность в рантайме пронаблюдать за жизненным циклом горутин

И еще одна деталь Удалось выделить real-time ядро Центрифуги в отдельный модуль, который можно использовать извне

Ссылки на проект Организация Centrifugal на Github со всеми репозиториями Организация Centrifugal на Github Документация на gitbooks.io Документация Демо-инстанс на Heroku (пароль demo)Демо-инстанс

Ссылки на полезные материалы 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

Вопросы?