Разработка высоконагруженного сервера для казуальной онлайн игры

Но нашей задумке, эта статья должна открыть цикл, посвященный разработке и настройке высоконагруженных java-серверов для социальных онлайн игр. Все технологии, описанные нами ранее, вполне работоспособны и могут уверенно держать до 2-3К живого онлайна. Но когда речь начинает идти о 10К, 50К, 100К онлайна, недочеты предыдущих схем выливаются в полный обвал всего хозяйства.
Какие именно проблемы вылезают:

  • Первая проблема – невозможность, или сложность масштабирования. Довольно сложно сделать так, чтобы пользователи распределялись равномерно по N игровым серверам
  • Вторая проблема – блокирующие сокеты. На каждый такой сокет, как правило, создается один поток ввода и один поток вывода. Два потока на юзера. Это очень-очень много при больших онлайнах, просто недопустимо.
  • Когда мы начинаем пытаться решать эти проблемы – вылазят новые, и так далее – тонем в заплатках.

    Ценой набитых шишек, а так же благодаря советам более опытных коллег, мы нашли пути построения нагруженной системы. Как именно? – Об этом и пойдет речь. Мы не хотели бы донести этот опыт до геймдев-пипла. :)

    Примерные темы будущих постов:

  • Настройка сервера и окружения. Распределение ресурсов системы по серверам. Организация масштабируемости
  • Использование Redis в Java для временного хранения данных и для обмена информацией между серверами
  • Использование Netty в Java для работы с неблокирующими сокетами


  • В процессе написания, наверняка возникнут еще какие-то темы, стоящие отдельного поста. Следите за обновлениями!

    Эта запись была опубликована в рубрике Мысли о разработке и отмечена метками , , , , , . Добавить в закладки ссылку.

    Комментирование закрыто.