• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Highload2009 Rybak Badoo Os
 

Highload2009 Rybak Badoo Os

on

  • 3,910 views

 

Statistics

Views

Total Views
3,910
Views on SlideShare
2,258
Embed Views
1,652

Actions

Likes
1
Downloads
41
Comments
0

14 Embeds 1,652

http://profyclub.ru 725
http://www.highload.ru 444
http://www.profyclub.ru 189
http://highload.ru 166
http://2012.highload.co 56
http://archive.highload.ru 33
http://new.profyclub.ru 20
http://hghltd.yandex.net 6
http://www.slideshare.net 5
http://profyclub.ontico.ru 2
http://webcache.googleusercontent.com 2
http://2012.highload.ru 2
http://dev.profyclub.ru 1
file:// 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Highload2009 Rybak Badoo Os Highload2009 Rybak Badoo Os Presentation Transcript

    • Open Source разработка в Badoo Довгаль Антон, Нигматулин Андрей, Рыбак Алексей Badoo.com
    • В этой презентации
      • Open Source в Badoo
      • PHP-FPM: менеджер FastCGI процессов для PHP
      • PINBA: сервер статистики для PHP- приложений
      • Blitz: ещё один шаблонный движок для PHP
    • Badoo
      • dating network
      • 47 млн пользователей на сентябрь 2009
      • 17 языков
      • LNMP stack: linux, nginx, MySQL, PHP , С /C++
      • Почти вся OS- разработка – на C “ вокруг ” PHP
      • Маленькая команда
      • Наши OS- проекты направлены на достижение удобства в эксплуатации , повышение управляемости, надёжности, производительности и снижение совокупной стоимости владения.
    • PHP-FPM
      • Менеджер FastCGI -процессов для PHP
      • Архитектура сервера напоминает nginx ( master + N workers )
    • PHP-FPM: эксплуатация
      • Плавно обновляться, не теряя соединения
      • Видеть все ошибки
      • Автоматически реагировать на подозрительное поведение воркеров (выход, тормоза, массовые падения)
    • PHP-PFM: основные возможности
      • Плавный перезапуск / обновление кода
      • Мастер ловит stderr воркеров
      • Автоматический трейсинг и завершение работы медленных воркеров
      • Аварийный перезапуск при массовом падении воркеров
    • PHP-PFM: доп. возможности
      • Error header снимает проклятие пустой белой страницы (200 OK на ошибку)
      • fastcgi_finish_request() – отдать output клиенту, но продолжить работу (сессии, статистика и т.д.)
      • Accelerated upload ( поддержка request_body_file - nginx 0.5.9+)
    • 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
    • PINBA
      • Сервер статистики для PHP- приложений
      • P HP I s N ot B ottleneck A nymore
      • Какой-то попугай на одном из диалектов языка австралийских аборигенов
      • http://pinba.org
    • Эксплуатация веб-кластера
      • Число запросов (полное, на сервер …)
      • Время ответа (среднее, распределение, по скриптам, по серверам …)
      • Использование ресурсов ( rusage )
      • Непрерывный мониторинг в реальном времени
      • Качество приложений - что меняется при релизах ?
    • PINBA: архитектура
      • Клиентский модуль для PHP
      • Для любого запроса собираем script_name, host, time, rusage …
      • При завершении отправляем UDP
      • И так со всех машин веб-кластера
      • Серверный тред внутри MySQL (v. 5.1.0+)
      • SQL- интерфейс ко всем данным
    • 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}
    • авария пофиксили  Посмотрим внимательнее…
    • WTF?
    • Берём отчет по скриптам. Периоды ? ... Это базы грузит регулярно запускаемый скрипт! Имея «разрез» по тегам (что за операции, какие базы) – ещё быстрее найдем причину
    • Blitz
      • Ещё один движок шаблонов
      • Написан на C , модуль для PHP
      • Исторически – замена php_templates
      • Быстрый (нам очень важен CPU usage на веб-машинах)
      • Принуждает к разделению труда
      • Верстальщик ничего не программирует
      • Неожиданно удобен для мультиязычных проектов
      • http://alexeyrybak.com/blitz/blitz_en.html
      • В продакшене Bad о o с 2006 года
    •  
    • Blitz: причина PHP is awesome!
    • Blitz : дизайн (1 /2 )
      • View в MVC – это не шаблон!
      • View – это шаблон (только HTML + «разметка») и логика отображения ( PHP )
      • Исторически в Blitz шаблон и логика отображения были строго разделены
      • Никакого совместного владения
      • Никаких “ недопрограммистов ” -верстальщиков
      • Минус : маргинален и неудобен одиночкам
      • За время жизни проекта по многочисленным заявкам пришлось-таки добавлять логику в шаблоны
      • Нынче в Blitz есть условные операторы, инклюды, callbacks , et cetera , но в Badoo нет ничего подобного
    • Blitz: дизайн (2 /2 )
      • Принцип напоминает XML/XSLT
      • Только всё значительно проще
      • Шаблон накладывается на данные
      • Переменная - скаляр
      • Список - массив
      • Вложенные блоки – структура с соответствующими именами ключей
      • Любая логика реализуема в этих прототипах
      • Мультиязычность : «чистый» шаблон – прегенерация шаблонов на всех языках , без динамических подстановок
      • Мультиязычность : можно получить всю структуру итераций, сохранить «снэпшот» и переводить страницы по «снэпшотам» (в контексте любой ситуации)
    • Спасибо!
      • Время задавать вопросы
      • [email_address]
      • BADOO