SlideShare a Scribd company logo
Perl и SPDY
  Perlburg-2012
Колмогорцев Егор
  ИМКН УрФУ
Проблемы HTTP

●   Один запрос на одно соединение.
●   Запросы может инициировать только клиент.
●   Заголовки передаются несжатыми.
●   Заголовки, которые не изменяются, приходится заново посылать при
    каждом запросе.
●   Сжатие передаваемых данных возможно только опционально.
    Оптимальным является сжимать данные всегда.
Perl и SPDY
Цели SPDY

●   Главная цель - уменьшить время загрузки веб - страниц на 50%
●   Протокол не должен требовать изменений в TCP и HTTP
●   Обеспечить возможность нескольких параллельных HTTP - запросов
    через одно TCP соединение
●   Предоставить серверу возможность самому инициировать
    дополнительные соединения.
●   Обеспечить возможность передачи данных через зашифрованное
    соединение.
Реализация

●   Параллельные HTTP запросы
●   Приоритеты запросов.
●   Сжатие HTTP - заголовков.
●   Server push & server hint.
●   Может работать как поверх SSL,
    так и без него
●   NPN (Next Protocol Negotiation) -
    расширение SSL
Клиент на Perl

●   SSL
     ○ Стабильный OpenSSL не поддерживает NPN
     ○ Perl модули о нем даже не слышали
     ○ Собием свежий OpenSSL
     ○ Пишем патч на Net::SSLeay
●   SPDY::Protocol.pm
     ○ Парсит / собирает SPDY - фреймы
●   SPDY::Client.pm
     ○ Асинхронно загружает ресурсы
     ○ Работает с HTTP::Request / HTTP::Response
Тестирование производительности

●   Perl v. 5.10.1
●   Запросы вида https://encrypted.google.com/search?q=n
 ●  Скорость до загружаемого ресурса: ping = 237 ms, загрузка - 6,51 Mbps,
    отдача - 4.3 Mbps.
Тесты:
     a.  Загрузка только HTML страницы (размер около 70 кб).
     b.  Загрузка страницы вместе с доп. контентом (изображения,
         скрипты итд), суммарный размер примерно 250 kb.
Тестируемые

1.   Последовательная загрузка (через Net::SSLeay::get_https)
2.   Параллельная загрузка в 6 потоков (как в текущих реализациях
     популярных браузеров)
3.   Параллельная загрузка без ограничения на число потоков
4.   SPDY - соединение
Perl и SPDY
Perl и SPDY
Perl и SPDY
Perl и SPDY
Спасибо за внимание!
  Можно задавать вопросы...

More Related Content

PDF
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
PDF
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
PDF
Golang в avito
PDF
06 - Web-технологии. Протокол HTTP
PPTX
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
PDF
01 - Web-технологии. Архитектура Web приложений
PPT
Mafiozi Performance1
PPTX
Асинхронная обработка данных: RabbitMQ, Comet
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
Golang в avito
06 - Web-технологии. Протокол HTTP
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
01 - Web-технологии. Архитектура Web приложений
Mafiozi Performance1
Асинхронная обработка данных: RabbitMQ, Comet

What's hot (20)

PPT
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
PPT
HTML Бесплатное размещение
PDF
HBase on Dev{Highload}
PPTX
Cпецкурс 2014, занятие 7. Web-приложения
PPT
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
PDF
WebSockets
PDF
Доставка данных в реальном времени.
PDF
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
PDF
Путь к Go на конкретном примере
PDF
Корневая директория WordPress
PPSX
Сервер «Аллодов Онлайн». Архитектура и особенности разработки.
PDF
Все о бекенде мобильных приложений Badoo
PDF
Ускорение фронтенда ponominalu.ru
PDF
02 - Web-технологии. Web-клиенты
PPTX
Lesson1
PDF
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
PDF
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
PDF
OSSDEV-2015: ReOpenLDAP
PPTX
Fiddler
PDF
Евгений Потапов, АйТиСумма
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
HTML Бесплатное размещение
HBase on Dev{Highload}
Cпецкурс 2014, занятие 7. Web-приложения
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
WebSockets
Доставка данных в реальном времени.
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Путь к Go на конкретном примере
Корневая директория WordPress
Сервер «Аллодов Онлайн». Архитектура и особенности разработки.
Все о бекенде мобильных приложений Badoo
Ускорение фронтенда ponominalu.ru
02 - Web-технологии. Web-клиенты
Lesson1
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
OSSDEV-2015: ReOpenLDAP
Fiddler
Евгений Потапов, АйТиСумма
Ad

Viewers also liked (9)

PPT
Использование Mojolicious::Plugin::AnyData в тестовом режиме проекта
PPT
Tale Comenius Paco for Bori
PPTX
Контрактное программирование
PPT
Wanas Strategic Sustainability Prez
PDF
Wcf faq
PPTX
Nginx.pm
PPTX
Потоки в перле изнутри
PDF
Функциональные тесты на Perl
PDF
Coro - реальные потоки в Perl
Использование Mojolicious::Plugin::AnyData в тестовом режиме проекта
Tale Comenius Paco for Bori
Контрактное программирование
Wanas Strategic Sustainability Prez
Wcf faq
Nginx.pm
Потоки в перле изнутри
Функциональные тесты на Perl
Coro - реальные потоки в Perl
Ad

Similar to Perl и SPDY (20)

PDF
HTTP протокол
PDF
Ян Жабин "Преимущества использования протокола HTTP/2"
PPTX
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
PDF
Twisted Framework - сетевые приложения в Python
PDF
Twisted Framework - сетевые приложения в Python
PPTX
Стажировка-2013, разработчики, занятие 7. Web, HTTP
PDF
Вячеслав Бирюков - HTTP и HTTPS
PDF
Smirnov Twisted Python
PDF
Неочевидные возможности ускорения работы сайта
PDF
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
PDF
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
PDF
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
PDF
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
PDF
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
PDF
PDF
My talk on HBase ops engineering at TBD Jun 2016
PDF
2013 09 14 http-протокол
PDF
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
PDF
Платформа для видео сроком в квартал. Александр Тоболь.
HTTP протокол
Ян Жабин "Преимущества использования протокола HTTP/2"
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Вячеслав Бирюков - HTTP и HTTPS
Smirnov Twisted Python
Неочевидные возможности ускорения работы сайта
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
My talk on HBase ops engineering at TBD Jun 2016
2013 09 14 http-протокол
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Платформа для видео сроком в квартал. Александр Тоболь.

Perl и SPDY

  • 1. Perl и SPDY Perlburg-2012 Колмогорцев Егор ИМКН УрФУ
  • 2. Проблемы HTTP ● Один запрос на одно соединение. ● Запросы может инициировать только клиент. ● Заголовки передаются несжатыми. ● Заголовки, которые не изменяются, приходится заново посылать при каждом запросе. ● Сжатие передаваемых данных возможно только опционально. Оптимальным является сжимать данные всегда.
  • 4. Цели SPDY ● Главная цель - уменьшить время загрузки веб - страниц на 50% ● Протокол не должен требовать изменений в TCP и HTTP ● Обеспечить возможность нескольких параллельных HTTP - запросов через одно TCP соединение ● Предоставить серверу возможность самому инициировать дополнительные соединения. ● Обеспечить возможность передачи данных через зашифрованное соединение.
  • 5. Реализация ● Параллельные HTTP запросы ● Приоритеты запросов. ● Сжатие HTTP - заголовков. ● Server push & server hint. ● Может работать как поверх SSL, так и без него ● NPN (Next Protocol Negotiation) - расширение SSL
  • 6. Клиент на Perl ● SSL ○ Стабильный OpenSSL не поддерживает NPN ○ Perl модули о нем даже не слышали ○ Собием свежий OpenSSL ○ Пишем патч на Net::SSLeay ● SPDY::Protocol.pm ○ Парсит / собирает SPDY - фреймы ● SPDY::Client.pm ○ Асинхронно загружает ресурсы ○ Работает с HTTP::Request / HTTP::Response
  • 7. Тестирование производительности ● Perl v. 5.10.1 ● Запросы вида https://encrypted.google.com/search?q=n ● Скорость до загружаемого ресурса: ping = 237 ms, загрузка - 6,51 Mbps, отдача - 4.3 Mbps. Тесты: a. Загрузка только HTML страницы (размер около 70 кб). b. Загрузка страницы вместе с доп. контентом (изображения, скрипты итд), суммарный размер примерно 250 kb.
  • 8. Тестируемые 1. Последовательная загрузка (через Net::SSLeay::get_https) 2. Параллельная загрузка в 6 потоков (как в текущих реализациях популярных браузеров) 3. Параллельная загрузка без ограничения на число потоков 4. SPDY - соединение
  • 13. Спасибо за внимание! Можно задавать вопросы...