Разработка многопользовательских онлайн игр.
Архитектура Dozory.ru и Chernovik-online.ru
Лекция 3
О чем эта лекция?
Проект dozory.ru За два года 2.5 млн уникальных поситителей В среднем 10-12 тысяч поситетелей в день Пиковые нагрузки – 3000-3500 одновременно
играющих пользователей Проект chernovik-online.ru – открытая бета
Как они устроены изнутры? Программно и аппаратно
Что нужно от вас?
Просите расшифровать непонятные термины
Задавайте вопросы если хотите узнать больше по какой-то теме
Критикуйте! Вместе можем придумать как улучшить архитектуру
О нас в прошедшем времени
Несколько лет веб разработки Сайты, интернет магазины, CSM, .... Был опыт нагруженного проекта (целых два
сервера на проект, вместо одного на десять) Активно изучаем новые технологии и любим
их применять, особенно в новых проектах
Дозоры. Как придумалии как все начиналось
Всей компании хотелось поработать над “своим” проектом
Идея родилась в многочисленных обсуждениях, выбирали между банерной сетью и игрой
Пробуем прототипы Первые трудности в коммуникациях
Выбор архитектуры
Сервер на С Или CGI на perl
Выбираем CGI
Мы знали как работают web проекты Вообще не представляли специфику игр Количество perl разработчиков больше Прототипы были на том же perl
Как устроена первая версия?
mod_perl Не оптимизированный MySQL Есть зачатки кеширования
Как устроено само приложение?
Модель Представление Контроллер
Альфа тест. Запуск первой версии
3 месяца активной разработки Внутренний тест – 10 человек из офиса Запуск – падение через 3 минуты Поиск ошибок практически до утра После сна сразу несколько человек поняли в
чем проблема :)
1е правило проектированиявысокнагрузочных систем
Если что-либо может чисто теоретически произойти – оно обязательно произойдет!
Что же было не так?
Мы не сделали lock's на кеш
Игра и база даных
3я нормальная форма Как ускорить? Если можете не обращаться к БД – не
обращайтесь (Петр Зайцев)
Механизмы кеширование
Кеширование есть в самой БД Файлы Shared memory Memcached
Кеширование объектов
Один объект содрежит в кеше всех потомков Каждый объект в кеше отдельной записью
10 000 онлайн.Что делать?
Оптимизация MySQL, innodb Memcached Perscached и person_storer Memcached для локов критичных объектов
Как обеспечить устойчивость работы? 24/7
HA cluster (LVS) Апачи через ldirector Дублирование сайтов на двух машинах Дублирование базы данных Модули для бэкендов расшарены по nfs
(drdb для синхронизации) Пишем с бэкэндов по fuse-ssh
Новые технологии
Нас настиг Web 2.0 Ушли то фреймов XML+XSLT как замена представления
Финальная схема
16 физических серверов
Еще схема
Что изменилось после нас?
Более мощные машины на бэкенды Nginx перед тяжелыми апачами Перевели некоторые расчеты на отдельные
демоны Заменили XML+XSLT на json
Черновик
Выбор технологий Выбор архитектуры
Схема работы
Технически все должно быть хорошо
Так ли это – покажет время
25й кадр
http://inventos.ru/study [email protected], [email protected]
В отдел разработки игр мы ищем геймдизайнера!