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

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

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

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

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

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

Доклад принят в Программу конференции
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.

Тезисы

Тезисы:

Добрый день. Я расскажу о необычных аспектах применения 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/).

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

СберМаркет (ООО «Инстамарт Технолоджис») — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce-проектов в России и делает это с любовью.
Ozon — лидирующая платформа e-commerce в России. В команде Ozon Tech 3 800 инженеров — и она продолжает расти. Десятки миллионов людей пользуются сервисами Ozon, их IT-инфраструктура управляет миллионами процессов каждый час. Микросервисы на Go и C#, в стеке технологий есть Vue.js, Swift и Kotlin, Kubernetes, Kafka, Hadoop и ClickHouse.
Гринатом – ИТ-компания в структуре Росатом с фокусом на разработке инновационных решений для современных бизнес-процессов в атомной отрасли и за ее пределами. Мы развиваем цифровую экосистему Росатома, создаем свое ПО и обеспечиваем атомную отрасль современными ИТ-решениями, услугами и сервисами.
Команда Яндекс 360 создает продукты, которые решают повседневные задачи миллионов пользователей: от хранения воспоминаний до деловой переписки. В Яндекс 360 входят Почта, Диск, Документы, Телемост, Календарь, Заметки и Мессенджер
Raft — разработчик приложений, ИИ-систем и ИТ-инфраструктуры для бизнеса. Компания проектирует решения с использованием генеративного ИИ, включая YandexGPT, ChatGTP и LLaMA, помогает с миграцией в облако, организацией CI/CD и внедрением Kubernetes. Raft работает с клиентами из сфер ИТ, медицины, финансов, логистики, ритейла, образования и фудтеха. Среди них — Microsoft, X5 Group, DNS, Amwell, «БКС Мир инвестиций» и ВТБ. Разработчик специализируется на чат-ботах, инструментах анализа речи для оценки качества обслуживания и решениях по безопасности. Raft разрабатывает инструменты на базе облачных сервисов Yandex Cloud, включая YandexGPT API, Yandex SpeechKit и Yandex SpeechSense.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Tarantool — middleware для эффективного создания высоконагруженных сервисов. Сочетает в себе сервер приложений, гибридное хранилище данных, а также инструменты и средства масштабирования. Производительность систем на Tarantool может достигать 1 млн транзакций в секунду.
Positive Technologies — ведущий разработчик продуктов, решений и сервисов для результативной кибербезопасности, позволяющих выявлять и предотвращать атаки до того, как они причинят неприемлемый ущерб бизнесу и целым отраслям экономики. Технологический портфель компании охватывает большинство категорий средств защиты информации и продолжает расширяться. Мы создаем метапродукты — новое поколение инструментов для достижения результативной кибербезопасности с минимальным участием человека. Кроме того, Positive Technologies — первая и единственная компания из сферы кибербеза на Московской бирже.
«Газпромбанк» (Акционерное общество) — один из крупнейших универсальных финансовых институтов России, предоставляющий широкий спектр продуктов и услуг корпоративным и частным клиентам, финансовым институтам, институциональным и частным инвесторам.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Маркет позволяет покупателям заказывать товары прямо из дома и получать заказы по всей стране, а партнёрам — развивать свой бизнес, повышая продажи и привлекая новых клиентов. Для этого команда Маркета строит архитектуру так, чтобы можно было быстро делать новые фичи и не ломать важные сценарии, учится выдерживать многократный рост нагрузки и не перерасходовать ресурсы, следит, чтобы сайт Маркета работал как надо. У них есть целый арсенал технологий: микросервисы и микрофронты, тыквы и gracefull degradation, отложенная обработка запросов и автоматические системы нагрузочного тестирования. Изменяют архитектуру всех сервисов Маркета и помогают продуктовым командам быстро и безопасно развиваться.
Samokat.tech — продуктово-технологическая команда, которая делает ИТ для ритейла реального времени. От доставки продуктов и товаров для дома за 15 минут до развития нового слоя городской инфраструктуры для мгновенной доставки любых товаров – с помощью технологий.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
ВКонтакте — крупнейшая социальная сеть в России и странах СНГ. Миссия — соединять людей, сервисы и компании, создавая простые и удобные инструменты коммуникации. VK — это больше 200 технопроектов. Свыше 10 000 человек создают и развивают одни из самых популярных и высоконагруженных интернет-сервисов в стране. Делают комфортнее, легче и интереснее жизнь сотне миллионов людей.
Яндекс Go — это суперапп, предоставляющий сервисы, связанные с передвижением по городу. Он объединяет водителей и курьеров в сервисах для заказа такси, доставки и транспортировки грузов.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
«Яндекс.Метрика» — бесплатный интернет-сервис компании Яндекс, предназначенный для оценки посещаемости веб-сайтов и анализа поведения пользователей. По данным w3techs.com, в 2019 году Яндекс. Метрика являлась третьей по размеру системой веб-аналитики в Европе. По данным «Лаборатории Касперского», в 2021-2022 годах она была самым распространенным трекинговым сервисом в России и странах СНГ.
СберМаркет (ООО «Инстамарт Технолоджис») — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce-проектов в России и делает это с любовью.
Команда Тинькофф — это разработчики, продакт-менеджеры, дизайнеры, маркетологи, аналитики, тестировщики, SRE-инженеры и другие специалисты. Вместе они создают новые и развивают существующие финтех-продукты, которыми пользуются 25 миллионов клиентов и каждый из нас.
«Флант» — лидер российского рынка DevOps и Kubernetes. №1 контрибьютор Kubernetes из России и единственный в России сертифицированный CNCF-поставщик услуг по Kubernetes (KCSP). С 2008 года занимается созданием и обслуживанием ИТ-инфраструктуры для критичных бизнес-приложений, с 2021 года предлагает продукты собственной разработки — экосистему решений Deckhouse для надежной enterprise-инфраструктуры. В 2023 году объединились с «Экспресс 42», и сегодня компания является вендором ПО и сервисной компанией по построению DevOps-решений под ключ.
Яндекс 360 — это виртуальное пространство, в котором собраны сервисы для работы и повседневных задач: Почта, Диск для хранения файлов, Телемост с видеозвонками, Документы, Мессенджер, Рассылки, Заметки и Календарь. Яндекс 360 помогает организовать работу как одному человеку, так и целой команде организации в рамках продуктов Яндекс 360 для бизнеса.
Аспро — разработчик программного обеспечения. С 2010 года разрабатываем облачные системы, платформы и готовые решения для бизнеса.
Altenar — международная IT-b2b-компания с офисами в России, на Мальте и в Греции, которая занимается разработкой высоконагруженного программного обеспечения для сбора, обработки, анализа спортивных данных в реальном времени и их последующего преобразования в информацию для b2b-клиентов.
Предоставляют полный цикл DevOps-услуг и сопутствующие программные продукты.
ГК Юзтех входит в топ-15 лидеров разработки программного обеспечения на российском рынке согласно рейтингу CNews Analytics и в топ-7 лучших IT-работодателей России в 2022 г. по версии HH и Хабр. С 2006 года ГК Юзтех осуществляет полный спектр работ в области заказной разработки ПО для своих Заказчиков в отраслях: ретейл, финансы, телеком, IТ и в государственном секторе. Несколько фактов о ГК Юзтех: • 2000+ успешных проектов; • 50+ постоянных заказчиков; • 8 офисов по всей России; • больше половины топ-20 банков России — клиенты компании; • больше половины топ-10 российских FMCG-сетей — клиенты компании; • многие корпорации из Fortune 1000 — клиенты компании; • 20+ млн. пользователей ежедневно используют программные решения ГК Юзтех; • 60% сотрудников уровня Senior.
Группа «Иннотех» — это современная высокотехнологичная быстроразвивающаяся ИТ-компания, входит в Холдинг Т1. С 2020 года мы разрабатываем инновационные решения для цифровизации бизнеса. Группа «Иннотех» выстраивает партнерские отношения с ведущими компаниями финансового сектора, предлагая им комплексные решения для фронт- и бэк-офисов, современные финтех-продукты, системы работы с большими данными. Кроме того, группа «Иннотех» выполняет на заказ технологические проекты любой сложности, помогая своим клиентам на пути цифровой трансформации.
СберМаркет (ООО «Инстамарт Технолоджис») — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce-проектов в России и делает это с любовью.
Команда Тинькофф — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются более 38 миллионов клиентов. Тинькофф развивает IT-индустрию, поддерживает комьюнити и делится экспертизой.
Компания Last.Backend занимается созданием DevOps технологий и продуктов. Имеет собственную систему оркестровки контейнеров аналога kubernetes. Так же занимается DevOps акселерацией компаний, помогая в кратчайшие сроки получить качественную автоматизированную инфраструктуру под проект с дальнейшим 24/7 мониторингом.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
Cloud.ru облачный провайдер, предоставляющий облачные решения и экспертную поддержку для бизнес-задач. Атмосфера стартапа, создание инноваций, клиентоцентричный подход –– это все мы, люди Cloud.
Vi.Tech — это дочерняя компания ВсеИнструменты.ру, в которой делают IT-продукты для одного из крупнейших игроков на рынке e-commerce.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Garage Eight — международная продуктовая IT-компания. Создаем экосистему финансовых продуктов и сервисов на зарубежных рынках. К 2024 году у наших продуктов сотни тысяч активных пользователей в 183 странах.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
Ozon — лидирующая платформа e-commerce в России. В команде Ozon Tech 3 800 инженеров — и она продолжает расти. Десятки миллионов людей пользуются сервисами Ozon, их IT-инфраструктура управляет миллионами процессов каждый час. Микросервисы на Go и C#, в стеке технологий есть Vue.js, Swift и Kotlin, Kubernetes, Kafka, Hadoop и ClickHouse.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Tarantool — middleware для эффективного создания высоконагруженных сервисов. Сочетает в себе сервер приложений, гибридное хранилище данных, а также инструменты и средства масштабирования. Производительность систем на Tarantool может достигать 1 млн транзакций в секунду.
Samokat.tech — продуктово-технологическая команда, которая делает IТ для ретейла реального времени. От доставки продуктов и товаров для дома за 15 минут до развития нового слоя городской инфраструктуры для мгновенной доставки любых товаров — с помощью технологий.
VK — это более 200 технологичных проектов, свыше 11 000 сотрудников и более 20 лет опыта создания высоконагруженных интернет-сервисов. ВКонтакте, Одноклассники, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей по всей стране.
Postgres Professional — разработчик российской системы управления базами данных Postgres Pro. СУБД входит в Единый реестр российского программного обеспечения и выпускается в редакциях: Postgres Pro Enterprise, Postgres Pro Standard, Postgres Pro Shardman, их сертифицированные ФСТЭК версии. Специалисты компании оказывают поддержку полного цикла: аудит, помощь в миграции, техподдержку 24х7 и SLA, обучение, заказные разработки, сертификацию специалистов. По данным исследования ЦСР за 2022 год, компания возглавляет рейтинг российских разработчиков СУБД. Команда Postgres Professional также активно развивает свободно распространяемую СУБД PostgreSQL. Занимает 1 место в России и 2 — в мире по вкладу в открытый код PostgreSQL.
Postgres Professional — разработчик российской системы управления базами данных Postgres Pro. СУБД входит в Единый реестр российского программного обеспечения и выпускается в редакциях: Postgres Pro Enterprise, Postgres Pro Standard, Postgres Pro Shardman, их сертифицированные ФСТЭК версии. Специалисты компании оказывают поддержку полного цикла: аудит, помощь в миграции, техподдержку 24х7 и SLA, обучение, заказные разработки, сертификацию специалистов. По данным исследования ЦСР за 2022 год, компания возглавляет рейтинг российских разработчиков СУБД. Команда Postgres Professional также активно развивает свободно распространяемую СУБД PostgreSQL. Занимает 1 место в России и 2 — в мире по вкладу в открытый код PostgreSQL.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Гринатом – ИТ-компания в структуре Росатом с фокусом на разработке инновационных решений для современных бизнес-процессов в атомной отрасли и за ее пределами. Мы развиваем цифровую экосистему Росатома, создаем свое ПО и обеспечиваем атомную отрасль современными ИТ-решениями, услугами и сервисами.
IT-компания и основной цифровой партнер торговых сетей и бизнесов X5 Group. Команда из более 3500 специалистов разрабатывает решения, которые помогают 325 тысячам сотрудников группы работать с максимальным технологическим комфортом, а миллионам покупателей быстро и удобно покупать свежие продукты.
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Postgres Professional — разработчик российской системы управления базами данных Postgres Pro. СУБД входит в Единый реестр российского программного обеспечения и выпускается в редакциях: Postgres Pro Enterprise, Postgres Pro Standard, Postgres Pro Shardman, их сертифицированные ФСТЭК версии. Специалисты компании оказывают поддержку полного цикла: аудит, помощь в миграции, техподдержку 24х7 и SLA, обучение, заказные разработки, сертификацию специалистов. По данным исследования ЦСР за 2022 год, компания возглавляет рейтинг российских разработчиков СУБД. Команда Postgres Professional также активно развивает свободно распространяемую СУБД PostgreSQL. Занимает 1 место в России и 2 — в мире по вкладу в открытый код PostgreSQL.
Сберба́нк - российский финансовый конгломерат, крупнейший универсальный банк России и Восточной Европы.
Rambler's Top100