2009-09-18 4 views
2

Вы когда-нибудь сталкивались с чем-то, что было легко освоить, но остановилось, чтобы подумать о требованиях к серверу для вашего проекта? Это мое дело.

Я хочу конкурировать с игровым сайтом, у них есть многопользовательские флеш-игры, такие как покер, ромми, нарды и другие карточные игры, всего 8 игр. Для каждой игры у них есть комнаты и столы.

Я буду использовать Silverlight с разъемами. Мне уже удалось разработать сервер политик, приложение Socket Server, используя WinForms, приложение Client Socket в Silverlight. У меня есть VPS для тестов, так что нет никаких проблем в развитии, что я хочу, проблема Как рассчитать требования к серверу, ОЗУ, пропускная способность, скорость интернета на основе следующих требований:Вычислить требования к серверу на основе спецификаций программирования

  1. Сервер должен поддерживать 24,000 пользователей/день или 1000 пользователей/час
  2. Каждая игровая комната должна иметь это собственные таблицы, где пользователи могут играть
  3. пользователи не должны терять баллы и скорость игры должна быть быстрой в общем

Я просто удивляюсь, как до h и в следующей ситуации: если 1000 пользователей подключены через соединение Socket к комнате, полной таблиц, и один пользователь покидает таблицу, все 1000 пользователей должны быть обновлены, а пользовательский интерфейс должен отражать изменения. Предположим, что я обновляю клиентов, отправив небольшое сообщение по 100 байт каждому пользователю, это будет есть 100 байт * 1000 пользователей = 100 кб, и это просто для 1 пользовательского интерфейса, для 1 игры и для 1 комнаты, а не считая все мои другие игры и комнаты. Кроме того, 1000 итераций, отправляющих байты клиентам, должны быть очень трудоемкими.

Я разработчик, но не испытал в этих ситуациях. Пожалуйста посоветуй. Номера будут великолепны.

+0

Зачем вам нужно сообщение размером 100 байт для 1 пользователя? Можете ли вы либо 1) Назначить порты для всех сообщений, поэтому, если вы получите сообщение на порту 5552, вы узнаете его для выхода пользователя. Msg будет только id/ip.address уходящего пользователя. 2) Используйте методы сжатия или шифрования, чтобы сделать сообщение 10-25 байтов? –

+0

mr. Нажмите «вверх», это касается игр и таблиц, таких как онлайн-игры yahoo, где есть комнаты и столы, на которых вы можете разместить сайт. imgine вы видите все таблицы на одной странице. теперь, если кто-то покинет таблицу, вам необходимо обновить все клиенты, отправив байты с сервера всем клиентам. –

ответ

2

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

Мы развертываем наши приложения в облачной инфраструктуре Amazon EC2. Это позволяет нам легко (в течение нескольких минут) добавлять или удалять емкость по мере необходимости. Возможно, стоит подумать о вашей ситуации.

4

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

Сначала вы должны завершить работу приложений. Затем вы можете измерять свою производительность под нагрузкой. Затем вы можете решить, сколько потратить на какие уровни производительности.

+0

Полностью согласен ... и, честно говоря, такие вопросы, как правило, легче решить, чем проблема создания забавной игры, которую люди действительно хотят играть! – dicroce

1

Всегда следовать этим двум правилам

«Первое правило оптимизации программы: Не делайте этого. Второе правило оптимизации программ (только для экспертов!): Не делайте этого еще ». Майкл А. Джексон

0

Прежде всего, вы должны больше подумать о том, как и когда отправлять какую информацию клиентам. Не каждый клиент должен быть проинформирован о каждом изменении таблицы.

Чтобы получить информацию о клиенте, вам необходимо определить, когда/как оно будет передано. Также вы должны упаковать информацию в значимые пакеты. То, что происходит за столом, интересно только для этой таблицы.

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

0

Очень сложно угадать эти вещи на этом этапе.

С прагматичной точки зрения, вы, возможно, в конечном итоге захотите изучить: a) услугу типа облачного хостинга для повышения пропускной способности для вас, или b) очень опытную хостинговую компанию с полным спектром услуг, которая поможет вам рассчитать ваши потребностей на основе предыдущего опыта.

Отказ от ответственности: Я работаю в Rackspace Hosting, который обеспечивает оба вышеуказанных.

Смежные вопросы