Highload2009 Rybak Badoo Os

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Highload2009 Rybak Badoo Os - Presentation Transcript

    1. Open Source разработка в Badoo Довгаль Антон, Нигматулин Андрей, Рыбак Алексей Badoo.com
    2. В этой презентации
      • Open Source в Badoo
      • PHP-FPM: менеджер FastCGI процессов для PHP
      • PINBA: сервер статистики для PHP- приложений
      • Blitz: ещё один шаблонный движок для PHP
    3. Badoo
      • dating network
      • 47 млн пользователей на сентябрь 2009
      • 17 языков
      • LNMP stack: linux, nginx, MySQL, PHP , С /C++
      • Почти вся OS- разработка – на C “ вокруг ” PHP
      • Маленькая команда
      • Наши OS- проекты направлены на достижение удобства в эксплуатации , повышение управляемости, надёжности, производительности и снижение совокупной стоимости владения.
    4. PHP-FPM
      • Менеджер FastCGI -процессов для PHP
      • Архитектура сервера напоминает nginx ( master + N workers )
    5. PHP-FPM: эксплуатация
      • Плавно обновляться, не теряя соединения
      • Видеть все ошибки
      • Автоматически реагировать на подозрительное поведение воркеров (выход, тормоза, массовые падения)
    6. PHP-PFM: основные возможности
      • Плавный перезапуск / обновление кода
      • Мастер ловит stderr воркеров
      • Автоматический трейсинг и завершение работы медленных воркеров
      • Аварийный перезапуск при массовом падении воркеров
    7. PHP-PFM: доп. возможности
      • Error header снимает проклятие пустой белой страницы (200 OK на ошибку)
      • fastcgi_finish_request() – отдать output клиенту, но продолжить работу (сессии, статистика и т.д.)
      • Accelerated upload ( поддержка request_body_file - nginx 0.5.9+)
    8. PHP- FPM: развитие
      • 2004-2006: набор разрозненных патчей
      • 2007 : один патч поверх PHP (5.3.0-0.5.12, http://php-fpm.org )
      • 2009 : проект отнимает массу времени, руководство берёт Michael Shadle, http://launchpad.net/php-fpm
      • Groups: highload-php-(en|ru)@googlegroups.com
      • Вы будете смеяться, но мы тоже не знаем, когда FPM войдет в PHP
    9. PINBA
      • Сервер статистики для PHP- приложений
      • P HP I s N ot B ottleneck A nymore
      • Какой-то попугай на одном из диалектов языка австралийских аборигенов
      • http://pinba.org
    10. Эксплуатация веб-кластера
      • Число запросов (полное, на сервер …)
      • Время ответа (среднее, распределение, по скриптам, по серверам …)
      • Использование ресурсов ( rusage )
      • Непрерывный мониторинг в реальном времени
      • Качество приложений - что меняется при релизах ?
    11. PINBA: архитектура
      • Клиентский модуль для PHP
      • Для любого запроса собираем script_name, host, time, rusage …
      • При завершении отправляем UDP
      • И так со всех машин веб-кластера
      • Серверный тред внутри MySQL (v. 5.1.0+)
      • SQL- интерфейс ко всем данным
    12. PINBA: данные
      • request: script_name, host, domain, time, rusage, mempeak, output size, timers
      • timers: время + пары “ ключ (тэг) – значение ”
      • пример : (0.001 sec; {group => db::update, server => dbs42})
      • SQL: “ сырые ” данные или отчеты
      • Отчеты : отдельные таблицы , на лету
      • Базовые отчёты ( ~ 10) : по системе, по скриптам, по хост+скрипт…
      • Отчеты по произвольным тегам (ENGINE=PINBA COMMENT='report:foo,bar‘) => {script_name , foo_value, bar_value, count, time}
    13. авария пофиксили  Посмотрим внимательнее…
    14. WTF?
    15. Берём отчет по скриптам. Периоды ? ... Это базы грузит регулярно запускаемый скрипт! Имея «разрез» по тегам (что за операции, какие базы) – ещё быстрее найдем причину
    16. Blitz
      • Ещё один движок шаблонов
      • Написан на C , модуль для PHP
      • Исторически – замена php_templates
      • Быстрый (нам очень важен CPU usage на веб-машинах)
      • Принуждает к разделению труда
      • Верстальщик ничего не программирует
      • Неожиданно удобен для мультиязычных проектов
      • http://alexeyrybak.com/blitz/blitz_en.html
      • В продакшене Bad о o с 2006 года
    17.  
    18. Blitz: причина PHP is awesome!
    19. Blitz : дизайн (1 /2 )
      • View в MVC – это не шаблон!
      • View – это шаблон (только HTML + «разметка») и логика отображения ( PHP )
      • Исторически в Blitz шаблон и логика отображения были строго разделены
      • Никакого совместного владения
      • Никаких “ недопрограммистов ” -верстальщиков
      • Минус : маргинален и неудобен одиночкам
      • За время жизни проекта по многочисленным заявкам пришлось-таки добавлять логику в шаблоны
      • Нынче в Blitz есть условные операторы, инклюды, callbacks , et cetera , но в Badoo нет ничего подобного
    20. Blitz: дизайн (2 /2 )
      • Принцип напоминает XML/XSLT
      • Только всё значительно проще
      • Шаблон накладывается на данные
      • Переменная - скаляр
      • Список - массив
      • Вложенные блоки – структура с соответствующими именами ключей
      • Любая логика реализуема в этих прототипах
      • Мультиязычность : «чистый» шаблон – прегенерация шаблонов на всех языках , без динамических подстановок
      • Мультиязычность : можно получить всю структуру итераций, сохранить «снэпшот» и переводить страницы по «снэпшотам» (в контексте любой ситуации)
    21. Спасибо!
      • Время задавать вопросы
      • [email_address]
      • BADOO
    SlideShare Zeitgeist 2009

    + HighLoad2009HighLoad2009 Nominate

    custom

    332 views, 0 favs, 2 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 332
      • 185 on SlideShare
      • 147 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 19
    Most viewed embeds
    • 113 views on http://highload.ru
    • 34 views on http://www.highload.ru

    more

    All embeds
    • 113 views on http://highload.ru
    • 34 views on http://www.highload.ru

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?