Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[DUMP Екатеринбург 2017] Real-time приложения. Модные фреймворки. Что дальше?

[DUMP Екатеринбург 2017] Real-time приложения. Модные фреймворки. Что дальше?

Видео: https://youtube.com/watch?v=OXjNsLQPQUc

Полезные ссылки:

- https://goo.gl/ubvYpc – доклад Никиты Прокопова о синхронизации данных

- https://goo.gl/EnWfU0 – доклад Андрея Ситника о Logux

- https://github.com/centrifugal/centrifugo

- http://wamp-proto.org

- http://dev.apollodata.com

- http://anycable.io

- https://github.com/logux

Vladimir Dementyev

April 14, 2017
Tweet

More Decks by Vladimir Dementyev

Other Decks in Programming

Transcript

  1. Real-Time The real-time web is a web … that enable

    users to receive information as soon as it is published by its authors, rather than … check a source periodically for updates. * https://en.wikipedia.org/wiki/Real-time_web
  2. Эпоха Просочения • Поддержка WebSockets в Chrome (2009) • Опубликован

    стандарт WebSockets (2011) • WebSockets в IE (2012) • WebSockets в Safari и Android (2013)
  3. 2005 2007 2011 2012 2014 2017 Real-time эволюция до н.э.

    Средние века Эпоха Просочения
  4. Проблемы решений • Как встроить в существующий проект? • Как

    мигрировать с/на? • Оно вообще работает?
  5. Транспорт • Поддержка фоллбеков* • Сжатие/сериализация данных • Heartbeat •

    Фаейрволы/антивирусы и ws:// * поддержка WS в браузерах в 2017 – 94%* caniuse.com
  6. Как решить? • История сообщений потока • Различные варианты хранения

    (список, last-win, свой вариант) • Подписка с last_message_id
  7. Broadcast RTT 0s 1s 2s 3s 4s 5s 6s 7s

    8s 9s 10s Number of connections 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 Go Erlang ActionCable Running on AWS EC2 c3.4xlarge (16 vCPU, 30 GiB RAM) Websocket Shootout
  8. Чего мы хотим • Решение транспортных проблем • Адекватная производительность

    • Согласованность данных • Интеграция с существующей бизнес-логикой
  9. WAMP • Pub/Sub + RPC (RMI) • Клиент – Брокер

    – Клиент • Подробная спецификация (базовый и продвинутый профиль)
  10. WAMP • Логика на любом языке • Готовые реализации брокеров

    • История сообщений* • Бинарная сериализация (MsgPack) * только в продвинутом профиле
  11. • Попытка исправить Meteor • GraphQL как единый протокол (query,

    mutation, subscription) • GraphQL подписки не стандартизированы * http://www.apollodata.com
  12. AnyCable • Протокол ActionCable (Rails) с расширениями • gRPC для

    взаимодействия с приложением • "Умный" WebSocket прокси (Erlang, Golang) * https://anycable.io
  13. Logux • Синхронизация логов • Logux протокол • Интеграция с

    Redux/Vuex/etc • Замена AJAX и REST * https://github.com/logux/logux-protocol