Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов

169,517 views

Published on

Конференция разработчиков игры. 2013 год.
Андрей Фролов. Mail.Ru Games. "Базы данных в онлайн играх. От Аллодов до Skyforge"
Created using YouTube Video

Published in: Education

КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов

  1. 1. Андрей Фролов, ведущий программист, Allods TeamБАЗЫ ДАННЫХ В ИГРАХ:ОТ АЛЛОДОВ ДО SKYFORGE
  2. 2. КОРАБЛИ БОРОЗДЯТ…2
  3. 3. ВНЕЗАПНО!3
  4. 4. ПАНИКА4
  5. 5. БЕЗЫСХОДНОСТЬ5
  6. 6. 6Базы данных – критическая частьигрового сервера.Небрежное отношение ведѐт ккатастрофе
  7. 7. ПРОЕКТИРОВАНИЕ – ДЕЛО НЕ ПРОСТОЕ• Надѐжность• Производительность• Масштабирование• Вопросы оперирования• Сложности в разработке7
  8. 8. ALLODS ONLINE8
  9. 9. ALLODS ONLINE• Шарды• 200 транзакций в секунду• 1 тред• MySQL9
  10. 10. SKYFORGE10
  11. 11. SKYFORGE• Нет шардов• 100.000+ CCU ( до 10^6 )• 1.000 CCU ~ 30-70 tps.• 100.000 CCU ~ 7.000 tps.• Поменьше рисков11
  12. 12. МНОГО ДАННЫХ• 10.000.000 пользователей• 350.000.000 предметов• 200+ ГБ12
  13. 13. МНОГО ПРОГРАММИСТОВ13
  14. 14. FREE 2 PLAYПредмет = Время = ДеньгиТранзакции14
  15. 15. НАШЕ РЕШЕНИЕ15
  16. 16. АРХИТЕКТУРА16Game MechanicsDB InterfaceDATABASEDB Service
  17. 17. SERVICE ORIENTED ARCHITECTURE• Всѐ есть сервис. БД один из них.• База спрятана за интерфейсом.• Группировка функций в «паки».• Один метод - одна транзакция.17
  18. 18. ВЫЗОВ МЕТОДА18
  19. 19. КЭШ И СИНХРОНИЗАЦИЯ19DB ServiceDatabaseOperation[]DB InterfaceSpell “Fireball” выучен
  20. 20. ПРЯМОЕ ПОДКЛЮЧЕНИЕJDBC20
  21. 21. OBJECT TO RELATIONAL MAPPINGHibernategetSession().save(dataSet)21
  22. 22. МАСШТАБИРОВАНИЕ22
  23. 23. ШАРДИНГ• Шардировать по аккаунтам• Ключ – ID пользователя23INNER IDDB ID
  24. 24. VIRTUAL SHARDS24ШардШардШардШардШардШардШардШардШардШардШардШард
  25. 25. РАСПРЕДЕЛЁННЫЕ ТРАНЗАКЦИИСвой велосипед на очередях• Универсально• Быстро• Много кода = много багов• Eventual consistency25
  26. 26. РАСПРЕДЕЛЁННЫЕ ТРАНЗАКЦИИNative• Мало кода - мало багов• Не все базы поддерживают• Требует дополнительной прослойки• Тормозят26
  27. 27. МОДЕЛЬ ДАННЫХ27
  28. 28. МОДЕЛЬ ДАННЫХСвой формат• Читается только кодом• Сложно конвертировать• Перезапись только целиком28
  29. 29. МОДЕЛЬ ДАННЫХРеляционная модель• SQL• Constraints• Недостаточная производительность29
  30. 30. МОДЕЛЬ ДАННЫХNoSQL• Human readable формат (JSON)• Поддержка типов на уровне базы• Перезапись целиком30
  31. 31. МОДЕЛЬ ДАННЫХГибрид31
  32. 32. ВЫБОР БД• Bottleneck – диск• Транзакции• MongoDB, MySQL, PostgreSQL32
  33. 33. ВЫБОР БДPostgreSQL лучше MySQL.• Native распределѐнные транзакции• Синхронная реплика• Кастомные типы данных• Намного меньше багов33
  34. 34. PERFORMANCEПочему базы тормозят?34
  35. 35. НОРМАЛЬНЫЕ ЦИФРЫRaid 10• 1 thread => 400 tps• 10 threads => 2.500 tps• Latency 2 - 30 ms35
  36. 36. BOTTLENECK36SSDHDDLock Lock FreeDelete MarkWorking Set < Memory
  37. 37. PERFORMANCE VS RELIABILITY• Модели поведения fsync()• Синхронная репликацияSSD,Синхронная реплика,Interconnect.Быстро и безопасно.37
  38. 38. ПЕРЕКРЁСТНАЯ РЕПЛИКАЦИЯ39DB1DB2 ReplicaShard 1DB2DB1 ReplicaShard 2
  39. 39. ЭВОЛЮЦИЯ АЛЛОДОВ В SKYFORGE40
  40. 40. ALLODS ONLINE• Шардинг• JDBC/ Hibernate.• 1 база на 1 шард.• Общие базы: Биллинг, Аккаунт.• Распределѐнные транзакции вручную.• Нет единого интерфейса.41
  41. 41. ALLODS ONLINE• MySQL, Гибридная схема• Raid.• fsync асинхронный c паузой в 1 сек.• 200 tps.1 тред.42
  42. 42. ОПЕРИРОВАНИЕ ALLODS ONLINE• Логи в читаемом виде. Возможен grep.• Админы знают, легко оперировать.• Проблемы при обновлении схемы.• Реплика отваливается.43
  43. 43. SKYFORGE44
  44. 44. SKYFORGE• 100.000 CCU• Hibernate• 15+ баз в реалме.• Native распределѐнные транзакции.• Единый интерфейс к БД.45
  45. 45. SKYFORGE• PostgreSQL• SSD• fsync синхронный• Cинхронная реплика• Virtual shards• 1 тред x 15+ раз46
  46. 46. СУХОЙ ОСТАТОК• SOA• Virtual Shards• Hibernate• SSD• PostgreSQL + гибридная модель• Backup47
  47. 47. ВОПРОСЫ48Андрей ФроловВедущий программистa.frolov@corp.mail.ru

×