HighLoad++

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

Опыт переезда соцсети Livestreet с PHP/MySQL на NodeJS/Redis/Lua

Доклад принят в Программу конференции

Мы взяли типичное веб-приложение на базе PHP/MySQL (движок социальной сети Livestreet) и убрали из него все медленное и плохое:
- постоянный маршаллинг данных PHP - MySQL - Memcached;
- процессы инициализации фреймворка при каждом вызове;
- кэши и механизмы их инвалидации;
- нормализованную структуру данных и множество операций JOIN таблиц;
- обращения к ФС, в том числе со стороны БД;
- кривые, опостылевшие и плохо поддающиеся JIT-компиляции языки программирования.

Получилось такое решение:
- NodeJS, Redis и вся логика на Lua внутри Redis (как хранимые процедуры).
- NodeJS получает JSON из Redis и без преобразований отправляет его на клиента, где он попадает в MVC фреймворк типа Ember.JS.
- Скорость выдачи страниц выросла в 30-100 раз.
- Появилась возможность push-уведомлений клиента через pub/sub в Redis.
Наш опыт
- Мы сделали это для проекта на Livestreet с 3k топиков, 20k регистраций и 10k комментариев.
- Библиотека Lua-скриптов для работы со связанными объектами в Redis будет выложена в свободный доступ на GitHub до начала конференции.

Проблемы, возможные решения, тема для дальнейшего исследования
- Redis исполняет Lua-скрипты сторого последовательно, соответственно, не масштабируется на несколько процессоров.
- При репликации Redis реплицирует полностью все скрипты, и нативная репликация бессмысленна.
- Необходим механизм репликации на программном уровне. Неплохо подходит для приложений, где преобладают операции чтения.

Золотой спонсор

  • Вadoo

Золотой спонсор

  • Percona

Игровой партнёр

  • WarGaming

Генеральный интернет-партнёр

  • Mail.Ru Group

Бронзовые спонсоры

  • Microsoft

Бронзовые спонсоры

  • Nutanix

Серебряный спонсор

  • http://www.google.com/

Серебряный спонсор

  • Webzilla

Travel-спонсор

  • Интернет Хостинг Центр

Технический партнёр

  • Филанко

HR-партнёр

  • SuperJob

HeadHunter-партнёр

  • HeadHunter

Партнёр по персоналу

  • http://www.rabota.ru/

Фри-ланс партнёр

  • http://www.free-lance.ru/

Информационная поддержка

  • Макхост
  • TRINET
  • Интуит
  • Нетология
  • Elama
  • Rusonyx
  • SpaceWeb
  • PС Мagazine
  • http://www.hse.ru/
  • ServerNews
  • Бизнес-школа RMA
  • http://e-personal.ru/
  • Учебный центр Luxoft Training
  • Webnames.ru
  • ExpoMap.ru
  • Русская школа управления
  • Internest
  • ООО «Юмисофт»
  • Финам
  • HackDay
  • SoftKey
  • GISMETEO / ГИСМЕТЕО
  • Agilecamp
  • ESET CLUB
  • Агава
  • Digitale
  • Блогун
  • CMS Magazine
  • Bugtraq.ru
  • Xakep.ru
  • http://www.samag.ru/
  • SQLInfo.ru
  • http://webew.ru/
  • HSE INC
  • timeofnewz
  • Moscow Business School
  • REG.RU
  • PeterHost
  • RUcenter
  • Хостинг-Центр
По любым вопросам обращайтесь:
Программный комитет :
Олег Бунин , +7 (916) 635-95-84
Бухгалтерия и вопросы оплаты :
, +7(495) 646-07-68
Организационный комитет :
Олег Бунин , +7 (916) 635-95-84

Почтовый адрес:
119180, Москва, Бродников пер., д. 7 стр. 1, +7(495) 646-07-68, ООО «Онтико»

Rambler's Top100
Рейтинг@Mail.ru