SlideShare a Scribd company logo
1 of 19
Протоколы уровня 
приложения в 
браузере 
Илья Кутуков, Parallels
Задача 
• Передавать видео графической сессии пользователя компьютера в 
браузер 
• Передавать пользовательский ввод из браузера на удаленный 
компьютер 
• Делать это с минимальной задержкой и потерями 
• Обеспечить нативную поддержку в большинстве браузеров, включая IE 
и Safari 
• Обеспечить высокий уровень безопасности. И возможность сделать его 
еще выше.
Что мы хотели сделать 
Кодирование/декодирование 
Transports abstraction layer 
Транспортный уровень браузера 
Облачная инфраструктура 
Транспортный уровень хоста 
Transports abstraction layer 
Кодирование/декодирование
VS
Создатели браузеров 
• Не хотят, чтобы браузер стал DDoS платформой 
• Не хотят напстер в браузере 
• Безопасность ставится выше нужд разработчика 
• Транспортный уровень всегда имеет обертку, существенно 
сужающую возможности
Транспорт: есть ли выбор? 
HTTP 1.X (TCP), SSE, AJAX 
text based, request-response, heavy headers, asymmetric, no duplex, no 
multiplex, gzip from a box, 100% impact 
WebSocket (TCP) 
binary/text, duplex, reliable, ordered, server push, ~80% impact, no 
compression out of the box. Multiplexing and compression extensions approaching 
WebRTC (TCP, UDP, STCP) DataChannels 
binary, ordered/unordered, reliable/unreliable, duplex, multiplex, multihoming, 
server push, no compression, ~50% impact
Все сложно
TCP 
Гарантированная доставка 
в гарантированном порядке 
Обратная сторона – HOL блокировка 
Большой блок данных 
Важный 
блок данных 
Важный 
Хочется так: блок данных 
Большой блок данных
Time Division Multiplexing 
Используется несколько подключений 
Большой блок данных 
Важный 
блок данных 
Обычные браузеры ~ 6 каналов на хост 
Мобильные браузеры – 2 канала на хост
Transport abstraction layer 
Big 
message 
Small 
message 
Route layer 
Slim queue/buffer Fat queue/buffer 
Connections pool 
Slim Fat Fat
Реконнекты 
Без heartbeat на уровне приложения невозможно 
быстро определить смерть сокета 
Мы используем две политики восстановления, session 
reset и freeze/replay
Freeze/replay 
Запомнить ID последнего полученного 
сообщения 
Блокировать действия пользователя 
Откатить очередь посланных сообщений (!) 
Остановить таймеры в бизнес-логике 
Послать серверу запомненный ID 
Получить и обработать все 
накопленные сообщения 
Вернуть таймеры и действия 
пользователя 
Транспорт сломался 
Транспорт 
восстановился
Варианты из коробки 
SockJS 
family 
Primus.IO 
Socket.IO Engine.IO 
>=1.0 
Socket.IO 
<1.0 
Autobahn.ws 
family
Сообщения 
ID 1020 
StartStream 
From chunk 3 
ID 1020 
Chunk 3 
Заказ потока 
ID 1020 
Chunk 4 
ID 1020 
Chunk 5 
Seq 1021 
GiveX 
Seq 1021 
HereIsX 
RPC
Кодирование 
• Не стоит без необходимости передавать схему 
данных вместе с данными 
• IDL позволяет унифицировать схемы 
• Существующие serialization frameworks представляют 
готовое решение из коробки
Выбор Serialization framework 
ProtoBuf Thrift Avro 
Особенности дизайна Data-oriented Service-oriented Flexible schemas 
Стабильная и быстрая 
имплементация под JS 
Потребовалась 
незначительная 
доработка 
- - 
Объем кодогенерации 
(вероятность багов в ней) 
Низкий Средний/высоки 
й 
Высокий 
Размер сообщений на тестовых 
последовательностях ~ 
1.1x 1.1x 1.0x 
Возможность текстовой 
сериализации 
- + +
Мы используем Protocol Buffers 
• Имплементация клиентской стороны - от DcodeIO, 
серверной - от Google 
• На практике получилась высокая производительность 
кодирования и декодирования 
• Отладка бинарного протокола была мучительной 
• Схема строится из родительских Request/Reply 
сообщений и наборов extensions
Тюнинг 
• Многопоточное кодирование/декодирование 
посредством WebWorkers 
• Per-message компрессия 
• Префетч и индексация фрагментов сообщений 
• TCP Warm-up
Посмотреть и почитать 
http://ganges.usc.edu/pgroupW/images/a/a9/Serializarion_Framework.pdf 
https://github.com/dcodeIO 
http://csweb1.fandm.edu/jiyengar/papers/tcpmice-techrep2003.pdf 
http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/ 
https://www.igvita.com/ 
https://github.com/primus/primus 
https://github.com/sockjs 
https://github.com/Automattic/socket.io 
http://autobahn.ws/

More Related Content

What's hot

VMC Как попробовать виртуализацию VMware
VMC Как попробовать виртуализацию VMwareVMC Как попробовать виртуализацию VMware
VMC Как попробовать виртуализацию VMwareareconster
 
Современные флэш-технологии – от концепции к преимуществам использования // А...
Современные флэш-технологии – от концепции к преимуществам использования // А...Современные флэш-технологии – от концепции к преимуществам использования // А...
Современные флэш-технологии – от концепции к преимуществам использования // А...IBS
 
Анонс ОС Windows 10 для DEPO Computers
Анонс ОС Windows 10 для DEPO ComputersАнонс ОС Windows 10 для DEPO Computers
Анонс ОС Windows 10 для DEPO ComputersDEPO Computers
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Ontico
 
Преимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows ServerПреимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows ServerDEPO Computers
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?Anton Zhbankov
 
Видео + Конференция. Сетевые технологии ВКС. Стас Солдатов
Видео + Конференция. Сетевые технологии ВКС. Стас СолдатовВидео + Конференция. Сетевые технологии ВКС. Стас Солдатов
Видео + Конференция. Сетевые технологии ВКС. Стас СолдатовTrueConf__
 
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...DEPO Computers
 
Оптимизация производительности среды VDI
Оптимизация производительности среды VDIОптимизация производительности среды VDI
Оптимизация производительности среды VDIKhamzet Shogenov
 
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Cisco Russia
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластерEatDog
 
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...DEPO Computers
 
Построение гибридных облачных решений с Cisco Intercloud Fabric.
Построение гибридных облачных решений с Cisco Intercloud Fabric.Построение гибридных облачных решений с Cisco Intercloud Fabric.
Построение гибридных облачных решений с Cisco Intercloud Fabric.Cisco Russia
 
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновTrueConf__
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageDEPO Computers
 
Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...
Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...
Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...DEPO Computers
 
Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...
Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...
Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...DEPO Computers
 
Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...
Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...
Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...DEPO Computers
 

What's hot (20)

VMC Как попробовать виртуализацию VMware
VMC Как попробовать виртуализацию VMwareVMC Как попробовать виртуализацию VMware
VMC Как попробовать виртуализацию VMware
 
Современные флэш-технологии – от концепции к преимуществам использования // А...
Современные флэш-технологии – от концепции к преимуществам использования // А...Современные флэш-технологии – от концепции к преимуществам использования // А...
Современные флэш-технологии – от концепции к преимуществам использования // А...
 
Анонс ОС Windows 10 для DEPO Computers
Анонс ОС Windows 10 для DEPO ComputersАнонс ОС Windows 10 для DEPO Computers
Анонс ОС Windows 10 для DEPO Computers
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
 
Преимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows ServerПреимущества серверного оборудования DEPO Сomputers и ПО Windows Server
Преимущества серверного оборудования DEPO Сomputers и ПО Windows Server
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?
 
Видео + Конференция. Сетевые технологии ВКС. Стас Солдатов
Видео + Конференция. Сетевые технологии ВКС. Стас СолдатовВидео + Конференция. Сетевые технологии ВКС. Стас Солдатов
Видео + Конференция. Сетевые технологии ВКС. Стас Солдатов
 
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
 
Оптимизация производительности среды VDI
Оптимизация производительности среды VDIОптимизация производительности среды VDI
Оптимизация производительности среды VDI
 
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластер
 
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
 
Построение гибридных облачных решений с Cisco Intercloud Fabric.
Построение гибридных облачных решений с Cisco Intercloud Fabric.Построение гибридных облачных решений с Cisco Intercloud Fabric.
Построение гибридных облачных решений с Cisco Intercloud Fabric.
 
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
 
Automation Compliance Checks
Automation Compliance ChecksAutomation Compliance Checks
Automation Compliance Checks
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO Storage
 
Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...
Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...
Новые модели серверов DEPO Storm на базе Intel Xeon. Практический опыт постро...
 
Dataline средства репликации
Dataline средства репликацииDataline средства репликации
Dataline средства репликации
 
Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...
Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...
Преимущества облачных сервисов DEPO Cloud на базе новой 22-нанометровой микро...
 
Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...
Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...
Новые возможности Windows Server 2016 и его преимущества для решения Ваших би...
 

Similar to Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)

Варианты дизайна и лучшие практики создания безопасного ЦОД
Варианты дизайна и лучшие практики создания безопасного ЦОДВарианты дизайна и лучшие практики создания безопасного ЦОД
Варианты дизайна и лучшие практики создания безопасного ЦОДCisco Russia
 
Вебинар "Дизайн и архитектура UCCE Live Data"
Вебинар "Дизайн и архитектура UCCE Live Data"Вебинар "Дизайн и архитектура UCCE Live Data"
Вебинар "Дизайн и архитектура UCCE Live Data"Cisco Russia
 
iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché iRidiumMobile365
 
Сервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XEСервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XECisco Russia
 
Архитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционированиеАрхитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционированиеCisco Russia
 
Совместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местDell_Russia
 
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...DEPO Computers
 
Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1Cisco Russia
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - ПроизводительностьAlexander Demidov
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Alexey Bokov
 
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспектыОблака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспектыDe Novo
 
Краткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseКраткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseCisco Russia
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)Cisco Russia
 
Сетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполненииСетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполненииCisco Russia
 
Cisco. Унифицированные вычисления практические аспекты перехода к частному об...
Cisco. Унифицированные вычисления практические аспекты перехода к частному об...Cisco. Унифицированные вычисления практические аспекты перехода к частному об...
Cisco. Унифицированные вычисления практические аспекты перехода к частному об...Yulia Sedova
 

Similar to Протоколы уровня приложения в браузере, Илья Кутуков (Parallels) (20)

Варианты дизайна и лучшие практики создания безопасного ЦОД
Варианты дизайна и лучшие практики создания безопасного ЦОДВарианты дизайна и лучшие практики создания безопасного ЦОД
Варианты дизайна и лучшие практики создания безопасного ЦОД
 
Вебинар "Дизайн и архитектура UCCE Live Data"
Вебинар "Дизайн и архитектура UCCE Live Data"Вебинар "Дизайн и архитектура UCCE Live Data"
Вебинар "Дизайн и архитектура UCCE Live Data"
 
iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché
 
Сервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XEСервисные контейнеры для OC IOS XE
Сервисные контейнеры для OC IOS XE
 
Архитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционированиеАрхитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционирование
 
Совместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих мест
 
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
 
Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспектыОблака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
 
Краткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseКраткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat Defense
 
Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Windows Azure Internals
Windows Azure InternalsWindows Azure Internals
Windows Azure Internals
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
Web-конференции в частном облаке предприятия (c Cisco Webex Meetings Server)
 
Сетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполненииСетевое оборудование Cisco в индустриальном исполнении
Сетевое оборудование Cisco в индустриальном исполнении
 
Cisco. Унифицированные вычисления практические аспекты перехода к частному об...
Cisco. Унифицированные вычисления практические аспекты перехода к частному об...Cisco. Унифицированные вычисления практические аспекты перехода к частному об...
Cisco. Унифицированные вычисления практические аспекты перехода к частному об...
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)

  • 1. Протоколы уровня приложения в браузере Илья Кутуков, Parallels
  • 2. Задача • Передавать видео графической сессии пользователя компьютера в браузер • Передавать пользовательский ввод из браузера на удаленный компьютер • Делать это с минимальной задержкой и потерями • Обеспечить нативную поддержку в большинстве браузеров, включая IE и Safari • Обеспечить высокий уровень безопасности. И возможность сделать его еще выше.
  • 3. Что мы хотели сделать Кодирование/декодирование Transports abstraction layer Транспортный уровень браузера Облачная инфраструктура Транспортный уровень хоста Transports abstraction layer Кодирование/декодирование
  • 4. VS
  • 5. Создатели браузеров • Не хотят, чтобы браузер стал DDoS платформой • Не хотят напстер в браузере • Безопасность ставится выше нужд разработчика • Транспортный уровень всегда имеет обертку, существенно сужающую возможности
  • 6. Транспорт: есть ли выбор? HTTP 1.X (TCP), SSE, AJAX text based, request-response, heavy headers, asymmetric, no duplex, no multiplex, gzip from a box, 100% impact WebSocket (TCP) binary/text, duplex, reliable, ordered, server push, ~80% impact, no compression out of the box. Multiplexing and compression extensions approaching WebRTC (TCP, UDP, STCP) DataChannels binary, ordered/unordered, reliable/unreliable, duplex, multiplex, multihoming, server push, no compression, ~50% impact
  • 8. TCP Гарантированная доставка в гарантированном порядке Обратная сторона – HOL блокировка Большой блок данных Важный блок данных Важный Хочется так: блок данных Большой блок данных
  • 9. Time Division Multiplexing Используется несколько подключений Большой блок данных Важный блок данных Обычные браузеры ~ 6 каналов на хост Мобильные браузеры – 2 канала на хост
  • 10. Transport abstraction layer Big message Small message Route layer Slim queue/buffer Fat queue/buffer Connections pool Slim Fat Fat
  • 11. Реконнекты Без heartbeat на уровне приложения невозможно быстро определить смерть сокета Мы используем две политики восстановления, session reset и freeze/replay
  • 12. Freeze/replay Запомнить ID последнего полученного сообщения Блокировать действия пользователя Откатить очередь посланных сообщений (!) Остановить таймеры в бизнес-логике Послать серверу запомненный ID Получить и обработать все накопленные сообщения Вернуть таймеры и действия пользователя Транспорт сломался Транспорт восстановился
  • 13. Варианты из коробки SockJS family Primus.IO Socket.IO Engine.IO >=1.0 Socket.IO <1.0 Autobahn.ws family
  • 14. Сообщения ID 1020 StartStream From chunk 3 ID 1020 Chunk 3 Заказ потока ID 1020 Chunk 4 ID 1020 Chunk 5 Seq 1021 GiveX Seq 1021 HereIsX RPC
  • 15. Кодирование • Не стоит без необходимости передавать схему данных вместе с данными • IDL позволяет унифицировать схемы • Существующие serialization frameworks представляют готовое решение из коробки
  • 16. Выбор Serialization framework ProtoBuf Thrift Avro Особенности дизайна Data-oriented Service-oriented Flexible schemas Стабильная и быстрая имплементация под JS Потребовалась незначительная доработка - - Объем кодогенерации (вероятность багов в ней) Низкий Средний/высоки й Высокий Размер сообщений на тестовых последовательностях ~ 1.1x 1.1x 1.0x Возможность текстовой сериализации - + +
  • 17. Мы используем Protocol Buffers • Имплементация клиентской стороны - от DcodeIO, серверной - от Google • На практике получилась высокая производительность кодирования и декодирования • Отладка бинарного протокола была мучительной • Схема строится из родительских Request/Reply сообщений и наборов extensions
  • 18. Тюнинг • Многопоточное кодирование/декодирование посредством WebWorkers • Per-message компрессия • Префетч и индексация фрагментов сообщений • TCP Warm-up
  • 19. Посмотреть и почитать http://ganges.usc.edu/pgroupW/images/a/a9/Serializarion_Framework.pdf https://github.com/dcodeIO http://csweb1.fandm.edu/jiyengar/papers/tcpmice-techrep2003.pdf http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/ https://www.igvita.com/ https://github.com/primus/primus https://github.com/sockjs https://github.com/Automattic/socket.io http://autobahn.ws/