Какие технологии существуют для кластеризации уровня приложения?

StackOverflow https://stackoverflow.com/questions/3045608

Вопрос

Скажем, у меня есть приложение, которое гарантирует, что подавляет один сервер даже после оптимизации. Есть ли технология, которая позволяет разделить веб-приложение по нескольким серверам при сохранении его состояния?

Возьмите, например, в онлайн-игр нескольких игроков. Обычно в World of War Craft есть несколько серверов с каждым имеющим собственное игровое состояние. То, что я ищу, это то, что позволило бы этому состоянию игрового времени совместно использовать среди нескольких серверов.

Редактировать: Платформа на самом деле не имеет значения, поскольку это для веб-приложения, поэтому бэкэн не имеет большого значения. Однако рельсы и Java являются возможностями.

Кроме того, вау был просто примером, я просто заинтересован в такой технологии; Большая игра была бы хорошим приложением для этого.

Это было полезно?

Решение

Не совсем ничего для низкой задержки, высокой пропускной способности в памяти, таких как онлайн-игры в режиме реального времени, по крайней мере, не как кусок произвольной промежуточной программы.

Проект Darkstar. Сделал замечательную попытку к этому на юзабилити и стороне сложности, но нашел (неудивительно), что не масштабируется.

В конечном итоге это сложная (хотя и ненатрубинащая) проблема, в которой нет решения, который находится рядом с универсальным применимым. В частности, вы, вероятно, у вас будет компромисс, между необходимостью действовать на несвежие игровые данные, с одной стороны, не требующей постоянно обмениваться общими данными с другой стороны. Отсутствие правильности против экспоненциального роста в сложности ... Выберите свой яд.

Стоит отметить, особенно если ваш домен приложений не является играми в реальном времени - что вы часто не против, если вы работаете со страдами, если это достаточно скоро правильно. В таких случаях простые системы кэширования, такие как Memcache, отлично. Точно так же, если вам нужно больше правильности, но не нужно беспокоиться о пропускной способности так много, что-то вроде хейбовки (упомянуто в другом ответе), может быть здорово, но для большинства онлайн-игр достаточно больших, чтобы потребовать балансировки нагрузки ». Тысячи операций / Sec "просто не достаточно хорош.

Некоторые технологии MMO предпринимают некоторую попытку распределить приложение, разбив его географически, что означает, что вообще не очень много общего государства, и это требует, чтобы эта схема имела смысл в игровой мире и фантастике.

Другой подход - это разделить его по службе, и внедрить большинство услуг с вашим любимым подходом на полку RPC. Это позволяет вам довольно легко масштабировать, если ваши услуги независимы, но любые зависимости между сервисами возвращаются вам обратно на квадратную.

Другие советы

Посмотри на Озел. Отказ Это открытый источник, высокомасштабируемая распределительная платформа данных для Java. Hazelcast предлагает распределенную карту, которая будет разделена среди членов кластеров. Вы можете легко хранить свои данные в нем. Это супер супер легко в использовании. Просто добавьте HazeLcast.jar в свой класс. Не нужно устанавливать любой сервер.

я использую Microsoft HPC., а не для игр, хотя. Довольно легко настроить и использовать.

Вы не упоминаете свою платформу. Для Java есть Терракота

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top