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

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

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

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

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

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

Доклад принят в Программу конференции
Сбер — крупнейший банк России и технологическая компания, чья экосистема закрывает финансы, e-commerce, медиа и облачные сервисы. В команде десятки тысяч специалистов в IT, кибербезопасности и AI: собственные Big Data-платформы, модели GigaChat и Kandinsky, исследования в Институте искусственного интеллекта. Один из крупнейших 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/).

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

- Компания Virtual Minds - старейший adtech Германии, обслуживающий одни из самых крупных немецких компаний в publisher adserving, DSP, и SSP. - Tarantool - отечественная база данных от VK, с сервером приложений на борту, ориентированная на сверхвысокие OLTP нагрузки и исполнение кода прямо в базе.
платформы разработки приложений, интеграции, биллинг, телеком, немного финтеха, куча сервисов, всё норм, как сами
Одна из самых быстрорастущих финтех-компаний в России. Мы создаем финансовые сервисы, которые встроены в повседневную жизнь клиентов.
AdminDivision — 15 лет, инфраструктура для высоконагруженных и бизнес-критичных систем: DevOps, Kubernetes, мониторинг. Впрод — вендор инфраструктурного софта, продукт LLMaaS: платформа для запуска LLM в production на open-source стеке.
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
Вебпрактик разрабатывает сервисы и продукты для крупнейших корпораций в стране, много лет входит в топы разработчиков в премиум-ценовом сегменте.
Битрикс24 — одна из крупнейших IT-компаний России. Уже более 25 лет создают продукты, которые помогают работать бизнесу во всем мире. В их онлайн-сервисе собраны все нужные инструменты для работы компании и управления бизнесом. Среди них: сервис для создания, поддержки и развития веб-проектов, готовый набор инструментов для совместной работы компании и CRM-система.
РТЛабс — разработчик Госуслуг. Мы развиваем цифровую экосистему портала gosuslugi.ru и работаем над тем, чтобы изменить представление о государственных сервисах. Команда РТЛабс работает по agile, и наша главная метрика — довольный пользователь.
RaiffeisenBank - один из системно значимых банков Россиию
Т‑Банк — онлайн-экосистема, основанная на финансовых и лайфстайл-услугах. Клиентами Т‑Банка стали 52 млн человек по всей России. Т‑Банк — второй крупнейший банк страны по количеству активных клиентов
МТС — мультисервисная цифровая экосистема и ведущий телеком-оператор в России. Компания развивает сервисы и продукты в сфере больших данных, искусственного интеллекта, облачного хранения, медиа и финансов, телекоммуникаций. Штат IT-специалистов превышает 9,5 тыс. человек.
BI.ZONE — компания по управлению цифровыми рисками. Мы создаем IT-продукты для обеспечения кибербезопасности: от мобильных приложений до сложных платформ, в основе которых лежат методы машинного обучения.
X5 Tech — IT-компания и основной цифровой партнёр торговых сетей и бизнесов X5. Команда из более 5000 специалистов разрабатывает решения, которые помогают более 417 тыс. сотрудникам группы работать с максимальным технологическим комфортом, а миллионам покупателей быстро и удобно покупать свежие продукты. Мы доказываем, что супермаркет — это тоже цифровой проект, в котором есть место большим данным, машинному зрению, мобильным приложениям и многому другому. В команде Х5 Tech сосредоточена экспертиза специалистов, которые отвечают за цифровое развитие всей компании.
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
МТС — мультисервисная цифровая экосистема и ведущий телеком-оператор в России. Компания развивает сервисы и продукты в сфере больших данных, искусственного интеллекта, облачного хранения, медиа и финансов, телекоммуникаций. Штат IT-специалистов превышает 9,5 тыс. человек.
Битрикс24 — одна из крупнейших IT-компаний России. Уже более 25 лет создают продукты, которые помогают работать бизнесу во всем мире. В их онлайн-сервисе собраны все нужные инструменты для работы компании и управления бизнесом. Среди них: сервис для создания, поддержки и развития веб-проектов, готовый набор инструментов для совместной работы компании и CRM-система.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Сбер — крупнейший банк в России, поставщик технологических решений и один из ведущих финансовых институтов страны. SberDevices — исторически технологический стартап внутри Сбера, который создал «умные» устройства Sber, Jazz (платформу видеозвонков), GigaChat и многое другое.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Яндекс — российская технологическая компания: начинала как поисковик, а сейчас это большая экосистема сервисов (поиск, карты, такси, музыка, маркетплейс и др.). Развивает ИИ-технологии и строит высоконагруженные системы.
MiOps — провайдер IT-решений, который помогает бизнесу создавать, развивать и поддерживать современную инфраструктуру цифровых продуктов. Мы автоматизируем процессы разработки и эксплуатации, строим отказоустойчивые платформы, внедряем технологии искусственного интеллекта и обеспечиваем стабильную работу критически важных сервисов.
Сбер — крупнейший банк России и технологическая компания, чья экосистема закрывает финансы, e-commerce, медиа и облачные сервисы. В команде десятки тысяч специалистов в IT, кибербезопасности и AI: собственные Big Data-платформы, модели GigaChat и Kandinsky, исследования в Институте искусственного интеллекта. Один из крупнейших IT-работодателей страны.
Ozon Fintech — технологичное подразделение экосистемы Ozon, разрабатывающее инновационные финансовые сервисы для 30+ млн пользователей. Команда создаёт продукты с нуля на микросервисной архитектуре, самостоятельно реализуя ключевые системы: банковское ядро, процессинг, AML-платформы и интеграции с платёжными сервисами, минимизируя legacy-код.
VK — это более 200 технологичных и высоконагруженных проектов, свыше 15 000 сотрудников. ВКонтакте, ОК, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей. ВКонтакте — крупнейшая социальная сеть в России. Команда ВКонтакте разрабатывает технологические решения, которые отвечают критериям быстродействия, отказоустойчивости и качества, чтобы пользователи получали максимум для общения, работы, учебы, развлечения и творчества.
Raft — это компания, которая специализируется на разработке и интеграции решений с использованием новейших AI-технологий.
Яндекс Go — продуктовая компания с устойчивой Data Driven-культурой, где все решения анализируются и проверяются с оглядкой на данные, а скрипт на Python или SQL может написать любой.
Яндекс – технологическая компания, которая создает инновационные продукты и сервисы на основе машинного обучения и нейронных сетей. Компания объединяет более 85 пользовательских сервисов. Основные бизнес-направления компании – поиск и портальные сервисы, электронная коммерция, сервисы объявлений, фантех, сервисы онлайн-заказа такси и заказа еды, автономный транспорт. Яндекс также предлагает продукты для рекламодателей и владельцев бизнеса.
Garage Eight — международная продуктовая компания, развивающая B2C-экосистему финтех- и инвестиционных продуктов для глобального рынка.
VK — это более 200 технологичных и высоконагруженных проектов, свыше 15 000 сотрудников. ВКонтакте, ОК, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей. ВКонтакте — крупнейшая социальная сеть в России. Команда ВКонтакте разрабатывает технологические решения, которые отвечают критериям быстродействия, отказоустойчивости и качества, чтобы пользователи получали максимум для общения, работы, учебы, развлечения и творчества.
GoRunDebug - что пришло в голову когда пришла идея поработать над интересным для меня направление.
Одна из самых быстрорастущих финтех-компаний в России. Мы создаем финансовые сервисы, которые встроены в повседневную жизнь клиентов.
Ви.Tech – Это компания занимающаяся разработкой для крупнейшего в россии DIY магазина
Служила в Московском Новом Драматическом Театре. Участвует в независимых театральных проектах. С 2016 года преподавала технику речи в школе телевидения ex-tv. С 2019 года преподаватель курсов раскрепощения и творческой свободы в Школе молодых лидеров. С 2020 года преподаватель собственного курса по импровизации и раскрепощению в высшей школе медиа коммуникации.
Звук — hifi-аудиомузыкальный сервис, который помогает пользователям находить и слушать музыку под настроение и стиль жизни. Фокусируется на персонализации, умных рекомендациях и удобном пользовательском опыте. Предлагает удобные подборки для любого настроения и подписку с широким каталогом треков.
VK — это более 200 технологичных и высоконагруженных проектов, свыше 15 000 сотрудников. ВКонтакте, ОК, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей. ВКонтакте — крупнейшая социальная сеть в России. Команда ВКонтакте разрабатывает технологические решения, которые отвечают критериям быстродействия, отказоустойчивости и качества, чтобы пользователи получали максимум для общения, работы, учебы, развлечения и творчества.
Selectel — крупнейший независимый провайдер сервисов IT-инфраструктуры в России. Они создают облачные решения и предлагаем в аренду серверы, которые размещаем в своих дата-центрах в России. За каждым продуктом — опыт и экспертиза 1000+ сотрудников. Админы в Selectel работают с высоконагруженными сервисами, выстраивают и поддерживают инфраструктуру огромных масштабов. В компании 13 команд и направлений работы системных администраторов: от CloudOPS до Ceph-инженеров.
X5 Tech — IT-компания и основной цифровой партнёр торговых сетей и бизнесов X5. Команда из более 5000 специалистов разрабатывает решения, которые помогают более 417 тыс. сотрудникам группы работать с максимальным технологическим комфортом, а миллионам покупателей быстро и удобно покупать свежие продукты. Мы доказываем, что супермаркет — это тоже цифровой проект, в котором есть место большим данным, машинному зрению, мобильным приложениям и многому другому. В команде Х5 Tech сосредоточена экспертиза специалистов, которые отвечают за цифровое развитие всей компании.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
HIPER — международный производитель IT-техники для бизнеса и потребителей, на рынке с 2001 года. Продуктовый портфель: ноутбуки, мониторы, моноблоки, мини-ПК, серверное оборудование, ИБП и интерактивные панели. Произведено и продано 3 955 636 устройств корпоративного назначения; производственная мощность — до 50 000 устройств в месяц, спецпроизводство под проект — от одного месяца. Решения HIPER адаптированы для российских пользователей и закрывают ИТ-инфраструктуру бизнеса любого размера. Компания обеспечивает оперативное сервисное обслуживание и техническую поддержку через авторизованную сеть сервисных центров по всей стране. HIPER — технологии, создающие возможности.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Rambler's Top100