Егор АкуловВедущий программистММО сервера, javaИгровые ММО сервераОт социальных игр к мобильным
Динамика трафика по проектамДо этого времени мы работали с соцсетями — Мой мир, Одноклассники, Вконтакте.Теперь мы хотим р...
Авторизация Game Center — сохраняем на сервере и в свойствах приложениясгенерированный, по ключу игрока из Apple Game Cent...
lАвторизуемся в GooglelОтсылаем полученные разрешения и данные игрока на сервер.lПроверяем полученные данные на сервере.lГ...
Google + IOS авторизацияВся авторизация сводится к отправке на сервер полученного на этапе регистрацииauthentication token...
IOS биллингСписок товаров для покупки в Apple Store поставляется с игрового сервера
IOS биллингКаждая покупка проверяется нашим сервером и предоставляется игроку
Google биллингСписок товаров для покупки заводится в Google Play Developer ConsoleРезультаты покупки проверяются сервером ...
Больше ничего делать не надо
Java-сервер — важные детали1. Архитектура2. Network layer3. Обработка клиентских запросов4. Масштабирование5. Базы данных
АрхитектураСлабая связанность (программирование по контракту, взаимодействие посредствоминтерфейсов)• Проще вносить измене...
Network layerТранспортный протокол — TCPПрикладной протокол — предпочитаем свою реализацию с использованиемсокетов, и при ...
Обработка запросовМногопоточность - Java Thread Pools• Увеличение производительности сервера• Уменьшение времени отклика. ...
МасштабированиеВертикальное масштабирование.Введение многопоточностиПрофайлинг производительностиПрофайлинг garbage collec...
МасштабированиеГоризонтальное масштабированиеКластеры распределения нагрузки• кластер менеджер – определяет узел, который ...
Базы данныхСправочники• сохраняем в файлы или реляционные БД.• справочники в виде файлов можно поставлять вместе с клиенто...
Другие моментыСтатистики - производительности программных компонентов сервера, виртуальноймашины, игровые статистикиТестир...
Хотите попробоватьНаши вакансииhttp://corp.mail.ru/career/principles/Спасибо за внимание!
Upcoming SlideShare
Loading in …5
×

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

834 views

Published on

«Игровой сервер. От социалок к мобильным играм»

BitByte: 20 апреля 2013, Санкт-Петербург
http://bitbyte.itmozg.ru/

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
834
On SlideShare
0
From Embeds
0
Number of Embeds
422
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Егор АкуловВедущий программистММО сервера, javaИгровые ММО сервераОт социальных игр к мобильным
  2. 2. Динамика трафика по проектамДо этого времени мы работали с соцсетями — Мой мир, Одноклассники, Вконтакте.Теперь мы хотим разместиться в Apple Game Center и Google PlayЧто нам пришлось для этого сделать?
  3. 3. Авторизация Game Center — сохраняем на сервере и в свойствах приложениясгенерированный, по ключу игрока из Apple Game Center, сервером authenticationtokenIOS регистрация
  4. 4. lАвторизуемся в GooglelОтсылаем полученные разрешения и данные игрока на сервер.lПроверяем полученные данные на сервере.lГенерируем идентификатор игрока и сохраняем его на сервере и в свойствахприложенияGoogle регистрация
  5. 5. Google + IOS авторизацияВся авторизация сводится к отправке на сервер полученного на этапе регистрацииauthentication token.ПланыПлатформ много - игра одна.Мояигра
  6. 6. IOS биллингСписок товаров для покупки в Apple Store поставляется с игрового сервера
  7. 7. IOS биллингКаждая покупка проверяется нашим сервером и предоставляется игроку
  8. 8. Google биллингСписок товаров для покупки заводится в Google Play Developer ConsoleРезультаты покупки проверяются сервером и выдаются на сервере.
  9. 9. Больше ничего делать не надо
  10. 10. Java-сервер — важные детали1. Архитектура2. Network layer3. Обработка клиентских запросов4. Масштабирование5. Базы данных
  11. 11. АрхитектураСлабая связанность (программирование по контракту, взаимодействие посредствоминтерфейсов)• Проще вносить изменения в код• Контракт реализовывать гораздо проще• Проще тестировать• Проще использоватьСильное сцепление (каждый объект фокусируется на достаточно малом четкоопределенном круге задач)• Понятные код -> легче вносить изменения.• Проще тестироватьSpring Framework IoC(Inversion of Control)http://static.springsource.org/spring/docs/3.0.x/reference/beans.html
  12. 12. Network layerТранспортный протокол — TCPПрикладной протокол — предпочитаем свою реализацию с использованиемсокетов, и при этом поддерживаем туннелирование по HTTP.Бинарный сжатый — Protocol Buffers, external serializationo ниже нагрузка на серверo ниже нагрузка на сетьo лучше защищен от подделокhttp://www.eclipse.org/jetty/http://code.google.com/p/protobuf/http://code.google.com/p/kryonet/
  13. 13. Обработка запросовМногопоточность - Java Thread Pools• Увеличение производительности сервера• Уменьшение времени отклика. Медленные задачи не блокируют выполнение другихзадач• Эффективный доступ к ресурсам – пока один поток читает данные из БД, другиепродолжают обрабатывать запросы пользователейDeadlock Livelock (гонки)
  14. 14. МасштабированиеВертикальное масштабирование.Введение многопоточностиПрофайлинг производительностиПрофайлинг garbage collectoro Garbage Less подход. Мало «среднеживущих» объектовo Tuning GCРазличные архитектурные решения
  15. 15. МасштабированиеГоризонтальное масштабированиеКластеры распределения нагрузки• кластер менеджер – определяет узел, который будет обрабатывать клиентскийзапрос• Узел – выполняет обработку запросов пользователейПодготовка клиента – клиент должен уметь работать с кластер менеджеромRMI – простой способ взаимодействия между элементами кластераЗакладывается на этапе формирования архитектуры
  16. 16. Базы данныхСправочники• сохраняем в файлы или реляционные БД.• справочники в виде файлов можно поставлять вместе с клиентомДанные пользователей — key-value способ хранения.• Данные пользователей с точки зрения БД не структурированы.• Единица данных имеет версии, для преобразования данных на лету.• Отложенное сохранение данных• Ленивая инициализация данных1. Справочники2. Данные пользователей3. Служебные данные – логи, статистика и т.д.Служебные данные - на выбор разработчика в зависимости от типа данных, ихдальнейшего использования, от доступных ресурсов
  17. 17. Другие моментыСтатистики - производительности программных компонентов сервера, виртуальноймашины, игровые статистикиТестирование – unit-тестирование, интеграционные тесты, нагрузочные тесты (лучшеимитировать реальную нагрузку против microbenchmarks).Автоматизация – построение билдов, тестирование, deployment.
  18. 18. Хотите попробоватьНаши вакансииhttp://corp.mail.ru/career/principles/Спасибо за внимание!

×