Highload++ 2017 завершён!

Профессиональная конференция разработчиков высоконагруженных систем

СКОЛКОВО, Москва 7 и 8 ноября

11-я ежегодная конференция для разработчиков highload-систем, которая соберет   2 700 участников из разных регионов России и мира. Мероприятие направлено на обмен знаниями о технологиях, позволяющих одновременно обслуживать многие тысячи и миллионы пользователей.

Программа охватывает такие аспекты веб-разработок, как архитектуры крупных проектов, базы данных и системы хранения, системное администрирование, нагрузочное тестирование, эксплуатация крупных проектов и другие направления, связанные с высоконагруженными системами.

Асинхронное программирование в PHP (phpDaemon: пристегните ремни — взлетаем)
Основная секция

Доклад принят в Программу конференции
Объединенная компания Wildberries & Russ — международная IT-компания, лидер рынков e-commerce и наружной рекламы в России. Образована в результате слияния крупнейшего маркетплейса СНГ Wildberries и оператора наружной рекламы Russ. Бизнес-модель Wildberries & Russ построена на использовании технологий. Компания активно развивает собственную IT-инфраструктуру, а также продукты для покупателей, продавцов, рекламодателей и других категорий пользователей.

Тезисы

Тезисы:

Добрый день. Я расскажу о необычных аспектах применения PHP: о написании асинхронных сетевых приложений, и полу-синхронных веб-приложений.

Вы наверняка уже наслышаны о протоколе FastCGI, который служит каналом связи с приложением. Популярное применение — связь между веб-сервером и Веб-приложением, его реализации есть во множестве языков. Протокол поддерживается многими веб-серверами, среди них nginx и lighttpd. Однако, в популярном языке PHP, реализация протокола до не столь давних пор была представлена лишь патчем PHP-FPM, который де-факто не выигрывает у Apache-prefork mod_php, поскольку он, вопреки идеологии FastCGI, запускает скрипт каждый раз с нуля, не говоря уже об асинхронности I/O. Идеология же FastCGI подразумевает единоразовую инициализацию приложения (подгрузку нужных библиотек, соединение с базой данных, и т.д.), и выполнение запросов один за другим или, вообще, параллельно (событийно переключаясь между контекстами запросов).

Модуль FastCGI в phpDaemon — правильная реализация FastCGI, которая позволяет добиться немыслимой производительности и снижения нагрузки на систему. Теперь нам не нужно тысячи раз в секунду копировать мегабайты памяти, не надо каждый раз соединяться с базой данных и проходить у нее авторизацию... мы можем просто выполнить то, что действительно необходимо, и приняться за следующий запрос. Теперь не нужно думать о том, сколько у нас подгружается классов из тяжелого фреймворка. Кэш оп-кода (eAccelerator) даст прирост лишь в случае использования компилирующих шаблонизаторов.

Давайте для начала разберём архитектуру — как же всё это работает, а затем я расскажу о предоставляемых вкусностях, и мы уделим значительное время вашим вопросам.

phpDaemon — это вполне самостоятельный демон, способный обрабатывать соединения по нескольким TCP- и UNIX-сокетам. Он использует libevent.

Для начала работы вам необходимо создать файл с приложением в папке applications и выполнить phpdaemon start.

Мастер-процесс создаст нужное количество рабочих процессов, которые начнут принимают новые соединения в пул, читать из них данные и делегировать выполнение запросов нужным приложениям, руководствуясь указаниями AppResolver'а. При этом вы можете выполнять какие-то процедуры с запросом даже до окончания обработки тела запроса.

Строго говоря, операции принятия соединения, приема данных, обработки запроса, и передачи ответа — асинхронны, т. е. мы можем принять два или больше соединений и поочередно их читать и обрабатывать в рамках одного процессе PHP (количество в рамках лимита max-concurrent-requests-per-worker). Разумеется, выполнение более одного конкурентного запроса в рабочем процесса потребует от программиста хранить все запросо-зависимые данные в экземпляре класса Request, и обеспечить отсутствие блокировок процесса. Это позволяет выполнять десятки тысяч запросов в секунду. Архитектура в чем-то похожа на nginx.

Архитектура позволяет легко создавать свои событийные сетевые сервисы, в дистрибутиве поставляются реализации FlashPolicy, HTTP, FastCGI, LockServer, TelnetHoneyPot, MemcacheClient, MongoClient...

Не станем вдаваться в подробности, но это действительно легко, и работать придётся лишь с оберткой, не думая о низком уровне.

Слайд №1: Спектр возможностей очень широк (всё опциально):

  • Умный MPM.
  • Модульная структура и API. /*К примеру, можно написать свой менеджер процессов, учитывающий фазу луны.*/
  • Возможность смены пользователя и корня рабочих процессов.
  • Поддержка Request-Body-File, X-Sendfile, multipart, attachment (callback), UCS-2.
  • Прием APPNAME.
  • Авто-сборка мусора (GC).
  • Лимиты для рабочего процесса.
  • Статус рабочих процессов.
  • Асинхронность выполнения запросов.
  • Асинхронная работа с сетью (libevent).
  • Встроенный модуль асинхронного CGI-сервера (libevent).

Слайд №2: Где и как это можно применить особенно эффективно?

  • Любые системы, использующие PHP.
  • Сетевые Веб-приложения (IM-гейты, чаты).
  • Торрент-трекеры.

Хотите немного серверной магии? Представьте себе несложную задачу: реализовать простецкую загрузку видео-файлов по HTTP, конвертацию их в FLV, и, разумеется, сохранение. Вы наверняка напишете простейший скрипт с использованием move_uploaded_file() и exec(), который будет висеть пока клиент отправляет запрос, кто-то пойдет дальше и будет записывать в БД идентификаторы файлов ожидающих конвертации, используя для конвертации отдельную пачку процессов, это позволит ограничить количество одновременно конвертируемых файлов.

А теперь я хочу немного вас удивить, я готов реализовать всю эту схему используя лишь 1 процесс PHP (ну, строго говоря, 2, учитывая мастер-процесс, но он не участвует в обработке). При этом не будет никакой потери в производительности, и мне даже не понадобится база данных (хотя, в нее стоит сбрасывать состояние, чтобы защититься от сбоев питания). Как? Очень просто. Достаточно создать приложение с использованием phpDaemon: в run() методе класса Request проверять счетчик работающих процессов конвертацию (обычную переменную), и если лимит не превышен — открывать pipe'а с ffmpeg'ом и класть его в свойство запроса, ну и вызвать $this->sleep(), при повторном вызове проверять состояние pipe и в случае его завершения - завершать запрос (я имею в виду именно запрос в очереди рабочего процесса, броузер получит страничку и отключится задолго до этого).

Как это работает? Очень просто. Как я уже говорил, обработка запросов асинхронна, и рабочий процесс будет принимать сразу несколько upload'ов и раскидывать кусочки по временным файлам, а когда запрос полностью принят — будет мгновенно открывать pipe c ffmpeg и возвращаться к пресловутой обработке.

Кстати, по такому же принципу работает встроенный CGI-сервер, служащий для подключения сторонних приложений.

Целевая аудитория:

Разработчики, в первую очередь так или иначе использующие PHP, но и все остальные тоже. Доклад позволит многим выйти на новую ступень оптимизации своих веб-проектов.

О докладчике:

Программист, системный архитектор, эксперт в области IT-безопасности. Опыт более 10 лет. Работаю CTO в Dultonmedia (http://yatv.ru/).

Другие доклады секции
Основная секция

K2 Cloud — это профессиональная команда IТ-специалистов, product и sales-менеджеров. Вместе они развивают облачную платформу собственной разработки, которая предоставляет крупным корпоративным клиентам высокое качество сервисов по модели laaS, PaaS и квалифицированную поддержку в режиме 24/7.
ООО «СИБИНТЕК-СОФТ» – дочернее общество ООО ИК «СИБИНТЕК» - внутреннего ИТ-интегратора компании Роснефть. Основной профиль – оказание услуг по реализации ИТ-проектов, сопровождению и развитию информационных систем, созданию и внедрению цифровых платформ и решений, в том числе разработка собственных продуктов в сфере информационных технологий как для поддержки процессов финансово-хозяйственной деятельности, так и для решения задач производственной автоматизации.
MWS (МТС Web Services) - облачный сервис для внутреннего и внешнего пользователя
ROGII — международная компания, разрабатывающая продукты для геонавигации.
"Открытая Мобильная Платформа" обеспечивает компании надёжными отечественными решениями для построения доверенной безопасной мобильной инфраструктуры.
AgentArea - безопасная платформа для управления ИИ-агентами. Молодая команда уже стала финалистом AI Championship в кибербезопасности.
Помощь в повышении квалификации для работающих разработчиков и open source-разработка.
Инфраструктурная платформа Genesis Core максимально упрощает «пользовательский путь» разработчика, от первой строчки и до деплоя на прод через локальные стенды.
Компания Axiom JDK — поставщик российской платформы Java, основана управляющей командой Центра разработки Oracle в Санкт-Петербурге. Инженерное ядро сформировано из разработчиков, которые стояли у истоков создания Java в России и заботятся о безопасности платформы с 1997 г. Компания производит и поддерживает безопасный стек базовых технологий для разработки и исполнения Java приложений с обеспечением санкционной устойчивости.
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
SberDevices — это компания полного цикла. Мы создаём идеи, самостоятельно разрабатываем продукты, занимаемся прототипированием, конструированием, придумываем дизайн, программные решения, контролируем качество на фабриках и создаём инструменты для аппаратного тестирования.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 50 миллионов клиентов. Т-Банк развивает IТ-индустрию, активно внедряет современные технологии и делится экспертизой.
Лемана ПРО (Леруа Мерлен) — лидер рынка DIY в России. Переосмысливают DIY-ретейл так же, как другие технологические лидеры до этого меняли банкинг и IТ-сервисы. В компании можно с нуля создавать диджитал-решения, примерять разные роли, использовать современные технологии, запускать новые продукты.
ОТП Банк входит в международную финансовую Группу ОТП (OTP Group), которая является одним из лидеров рынка финансовых услуг Центральной и Восточной Европы. ОТП Банк — это универсальная кредитная организация, предоставляющая широкий спектр банковских услуг и продуктов для корпоративных клиентов и частных лиц. Активы Банка на 1 апреля 2020 г. составили 152,6 млрд руб., собственный капитал — 33,7 млрд руб. ОТП Банк входит в число 50 крупнейших банков России, а по ряду направлений входит в число лидеров рынка. Занимает 2-е место на рынке POS-кредитования и 7-е место на рынке кредитных карт. ОТП Банк является участником Системы страхования вкладов, членом Ассоциации российских банков, Ассоциации Европейского Бизнеса, Национальной ассоциации участников фондового рынка, Национальной фондовой ассоциации, Московской Биржи. ОТП Банк обслуживает более 3,7 млн клиентов и присутствует более чем в 3 700 населенных пунктов России. Осуществление обслуживания происходит через собственную сеть, которая состоит в настоящее время из 171 049 точек потребительского кредитования, 88 кредитно-кассовых офисов (ККО), сети отделений из 135 точек клиентского обслуживания, банкоматной сети — 195 АТМ и 269 терминалов самообслуживания. ОТП Банк обладает аккредитацией на участие в конкурсах Агентства по страхованию вкладов, а также входит в список банков, поручительством которых могут быть обеспечены кредиты Банка России.
РСХБ.Цифра — это бренд, объединяющий все технологические решения Россельхозбанка и его дочерних компаний. Команда занимается цифровой трансформацией одного из крупнейших банков России и управляет высоконагруженными системами: АБС, ДБО, процессингом. Более 5000 человек по всей стране создают и выводят на рынок собственное ПО для банков и госкорпораций, финансовых, страховых организаций и агропромышленных предприятий. 26 программных продуктов РСХБ.цифра вошли в реестр отечественного ПО.
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
AgentArea — безопасная платформа для управления ИИ-агентами. Молодая команда уже стала финалистом AI Championship в кибербезопасности.
Группа компаний VK это крупнейшая ИТ компания, которая объединяет в себе социальные платформы, почту, облако, образовательные и технологические сервисы для пользователей и компаний.
На Авито каждый может найти что-то своё среди миллионов частных объявлений и предложений компаний. У них десятки тысяч RPS к бэкенду, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц сервисом пользуется треть населения России.
Ви.Tech – Это компания занимающаяся разработкой для крупнейшего в россии DIY магазина
Миссия компании — обучить хотя бы 15% руководителей современным методикам управления и сделать Россию лидером в области корпоративного менеджмента.
Занимаются заказной разработкой технической документации, процессным консалтингом, связанным с документацией, а также обучением и поиском технических писателей.
СберЗдоровье — российская медицинская компания, специализирующаяся на телемедицинских услугах и цифровых решениях в области здравоохранения.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
В «Магните» занимается управлением портфелем IT-проектов, трансформацией IT-вертикали, а также контролирует эффективность производственного цикла. Одна из задач — повышение эффективности управления изменениями для бизнес-заказчиков.
Яндекс Go — продуктовая компания с устойчивой Data Driven-культурой, где все решения анализируются и проверяются с оглядкой на данные, а скрипт на Python или SQL может написать любой.
АО ИНЛАЙН ГРУП - российская компания с 25 летней историей, классический ИТ системный интегратор. Продукт ИКСАР выведен на рынок в 2018 году и на данный момент занимает лидирующие позиции на рынке AR для Промышленности. Сайт продукта: https://iksar.pro/ ТГ канал продукта: https://t.me/iksarpro
AG-LEGAL — юридический консалтинг, сопровождающий IT-компании, а также крупные федеральные компании по вопросам интеллектуальной собственности, категорирования КИИ, персональных данных, включением в реестр отечественного ПО.
K2 Cloud — это профессиональная команда IТ-специалистов, product и sales-менеджеров. Вместе они развивают облачную платформу собственной разработки, которая предоставляет крупным корпоративным клиентам высокое качество сервисов по модели laaS, PaaS и квалифицированную поддержку в режиме 24/7.
Разрабатывают софт для СберТех. Отдел занимается развитием Open Source-продуктов: Apache Ignite, Apache Kafka, Postgresql.
ООО Группа Лоджик Старс является ведущим игроком на рынке IT и уже более 20 лет разрабатывает высококачественное программное обеспечение в сфере автобизнеса. Специализируются на создании инновационных решений, которые помогают ихклиентам оптимизировать бизнес-процессы, повышать эффективность и достигать высоких результатов.
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Компания Биокад — биотехнологическая компания полного цикла, то есть занимается как разработкой, так и производством лекарственных препаратов. В компании более 3000 сотрудников. Треть из них с научными степенями. IТ-департамент — более 250 человек.
Авто.ру — это проект Яндекса, который помогает людям купить или продать машину
На Авито каждый может найти что-то своё среди миллионов частных объявлений и предложений компаний. У них десятки тысяч RPS к бэкенду, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц сервисом пользуется треть населения России.
BI.ZONE — компания по управлению цифровыми рисками. Мы создаем IT-продукты для обеспечения кибербезопасности: от мобильных приложений до сложных платформ, в основе которых лежат методы машинного обучения.
Билайн — один из ведущих поставщиков телекоммуникационных услуг в России.
MAGNIT TECH — IT-компания, которая трансформирует один из крупнейших ритейлеров страны. Это более 5000 сотрудников, 800+ систем, 260+ проектов и одна цель: изменить ритейл в такт передовым технологиям. Мы не просто обслуживаем процессы, мы проектируем инновации с нуля, запускаем флагманские продукты и перестраиваем логику ритейла – от логистики и аналитики до клиентских платформ и AI-решений.
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
IT-компания Хоулмонт — российская компания, которая создает собственные технологии и инструменты разработки мирового уровня.
МФТИ / Физтех — ведущий российский исследовательский университет. Насчитывает 10 Нобелевских лауреатов. В топ‑100 глобального рейтинга Times Higher Education. Десятки научных школ, международные лаборатории, одни из сильнейших программ.
Команда «Онтико» создает пространства для обмена опытом между профессионалами — мы проводим лучшие в России (и одни из лучших в мире) профессиональные конференции для IT-разработчиков.
РСХБ.Цифра — это бренд, объединяющий все технологические решения Россельхозбанка и его дочерних компаний. Команда занимается цифровой трансформацией одного из крупнейших банков России и управляет высоконагруженными системами: АБС, ДБО, процессингом. Более 5000 человек по всей стране создают и выводят на рынок собственное ПО для банков и госкорпораций, финансовых, страховых организаций и агропромышленных предприятий. 26 программных продуктов РСХБ.цифра вошли в реестр отечественного ПО.
MTS Digital, KION - онлайн кинотеатр, который раздает десятки гигабит видео в секунду и делает жизнь чуть интереснее
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
Rambler's Top100