18

Click here to load reader

Акулов Егор, Mail.ru Group

Embed Size (px)

Citation preview

Page 1: Акулов Егор, Mail.ru Group

Егор АкуловВедущий программист

ММО сервера, java

Игровые ММО сервера

От социальных игр к мобильным

Page 2: Акулов Егор, Mail.ru Group

Динамика трафика по проектам

До этого времени мы работали с соцсетями — Мой мир, Одноклассники, Вконтакте.

Теперь мы хотим разместиться в Apple Game Center и Google Play

Что нам пришлось для этого сделать?

Page 3: Акулов Егор, Mail.ru Group

Авторизация Game Center — сохраняем на сервере и в свойствах приложения

сгенерированный, по ключу игрока из Apple Game Center, сервером authentication

token

IOS регистрация

Page 4: Акулов Егор, Mail.ru Group

lАвторизуемся в Google

lОтсылаем полученные разрешения и данные игрока на сервер.

lПроверяем полученные данные на сервере.

lГенерируем идентификатор игрока и сохраняем его на сервере и в свойствах

приложения

Google регистрация

Page 5: Акулов Егор, Mail.ru Group

Google + IOS авторизация

Вся авторизация сводится к отправке на сервер полученного на этапе регистрации

authentication token.

Планы

Платформ много - игра одна.

Моя

игра

Page 6: Акулов Егор, Mail.ru Group

IOS биллинг

Список товаров для покупки в Apple Store поставляется с игрового сервера

Page 7: Акулов Егор, Mail.ru Group

IOS биллинг

Каждая покупка проверяется нашим сервером и предоставляется игроку

Page 8: Акулов Егор, Mail.ru Group

Google биллинг

Список товаров для покупки заводится в Google Play Developer Console

Результаты покупки проверяются сервером и выдаются на сервере.

Page 9: Акулов Егор, Mail.ru Group

Больше ничего делать не надо

Page 10: Акулов Егор, Mail.ru Group

Java-сервер — важные детали

1. Архитектура

2. Network layer

3. Обработка клиентских запросов

4. Масштабирование

5. Базы данных

Page 11: Акулов Егор, Mail.ru Group

Архитектура

Слабая связанность (программирование по контракту, взаимодействие посредством

интерфейсов)

• Проще вносить изменения в код

• Контракт реализовывать гораздо проще

• Проще тестировать

• Проще использовать

Сильное сцепление (каждый объект фокусируется на достаточно малом четко

определенном круге задач)

• Понятные код -> легче вносить изменения.

• Проще тестировать

Spring Framework IoC(Inversion of Control)

http://static.springsource.org/spring/docs/3.0.x/reference/beans.html

Page 12: Акулов Егор, Mail.ru Group

Network layer

Транспортный протокол — TCP

Прикладной протокол — предпочитаем свою реализацию с использованием

сокетов, и при этом поддерживаем туннелирование по HTTP.

Бинарный сжатый — Protocol Buffers, external serialization

o ниже нагрузка на сервер

o ниже нагрузка на сеть

o лучше защищен от подделок

http://www.eclipse.org/jetty/

http://code.google.com/p/protobuf/

http://code.google.com/p/kryonet/

Page 13: Акулов Егор, Mail.ru Group

Обработка запросов

Многопоточность - Java Thread Pools

• Увеличение производительности сервера

• Уменьшение времени отклика. Медленные задачи не блокируют выполнение других

задач

• Эффективный доступ к ресурсам – пока один поток читает данные из БД, другие

продолжают обрабатывать запросы пользователей

Deadlock Livelock (гонки)

Page 14: Акулов Егор, Mail.ru Group

Масштабирование

Вертикальное масштабирование.

Введение многопоточности

Профайлинг производительности

Профайлинг garbage collector

o Garbage Less подход. Мало «среднеживущих» объектов

o Tuning GC

Различные архитектурные решения

Page 15: Акулов Егор, Mail.ru Group

Масштабирование

Горизонтальное масштабирование

Кластеры распределения нагрузки

• кластер менеджер – определяет узел, который будет обрабатывать клиентский

запрос

• Узел – выполняет обработку запросов пользователей

Подготовка клиента – клиент должен уметь работать с кластер менеджером

RMI – простой способ взаимодействия между элементами кластера

Закладывается на этапе формирования архитектуры

Page 16: Акулов Егор, Mail.ru Group

Базы данных

Справочники

• сохраняем в файлы или реляционные БД.

• справочники в виде файлов можно поставлять вместе с клиентом

Данные пользователей — key-value способ хранения.

• Данные пользователей с точки зрения БД не структурированы.

• Единица данных имеет версии, для преобразования данных на лету.

• Отложенное сохранение данных

• Ленивая инициализация данных

1. Справочники

2. Данные пользователей

3. Служебные данные – логи, статистика и т.д.

Служебные данные - на выбор разработчика в зависимости от типа данных, их

дальнейшего использования, от доступных ресурсов

Page 17: Акулов Егор, Mail.ru Group

Другие моменты

Статистики - производительности программных компонентов сервера, виртуальной

машины, игровые статистики

Тестирование – unit-тестирование, интеграционные тесты, нагрузочные тесты (лучше

имитировать реальную нагрузку против microbenchmarks).

Автоматизация – построение билдов, тестирование, deployment.

Page 18: Акулов Егор, Mail.ru Group

Хотите попробовать

Наши вакансии

http://corp.mail.ru/career/principles/

Спасибо за внимание!