хостинг приложения Facebook с большим трафиком (игра) - PullRequest
4 голосов
/ 22 мая 2010

В настоящее время мы разрабатываем приложение для Facebook с большим трафиком. весь трафик будет проходить в течение одного месяца, когда ожидается от 500 000 до 1 000 000 пользователей. по истечении этого месяца игра заканчивается, и у нас есть победитель - поэтому приложение будет заархивировано.

В настоящее время мы планируем разработать приложение для ruby ​​on rails и искать варианты хостинга, которые могут справиться с трафиком. проблема не столько в пользователях, сколько в пиковых значениях: у нас будет около 500.000 запросов ежедневно в течение короткого периода времени (скажем, в течение 3 минут в худшем случае)

мы ожидаем от 500 000 до 1 000 000 пользователей приложения с пиками в 13:00 (часовой пояс GMT + 1), куда большинство (до 80% пользователей) будет отправлять большинство запросов. запросы с 11 июня до 11.июля - после этого приложение / игра закрывается / завершается.

В настоящее время мы разрабатываем агрессивный механизм кэширования - в настоящее время мы думаем о 2 или 3 небольших приложениях / веб-сервисах, которые будут справляться с нагрузкой.

нагрузка распределяется следующим образом: а) основное приложение, кэшированные данные (11 экранов, по 200 Кб каждый) б) голосование: каждый день до 13:00 (часовой пояс GMT + 1) - каждый пользователь голосует, отправив около 10 тыс. данных, высокие одновременные пиковые значения!

вопросы:

  • Есть ли какие-либо конкретные настройки приложения, которые рекомендуется?
  • есть ли какие-нибудь хостинговые партнеры, которые можно порекомендовать?

спасибо!

Ответы [ 2 ]

3 голосов
/ 22 мая 2010

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

Голосование звучит менее приятно, поскольку оно должно происходить одновременно. Кажется, что новая высокая температура для высоких одновременных нагрузок - это node.js, но у меня нет никакого опыта с этим.

Я действительно думаю, что голосование на самом деле не будет очень большим, поэтому вместо того, чтобы делать полный вызов стека рельсов, попробуйте написать метод небольшой стойки, который завершит голосование. Это избавляет вас от загрузки ActionController, ActionView и, если вы записываете свои голоса в БД в виде простого SQL, также ActiveRecord.

2 голосов
/ 22 мая 2010

Ознакомьтесь с некоторыми решениями для автоматического масштабирования облачных вычислений, такими как AutoScaling в EC2 http://aws.amazon.com/autoscaling/, в которых вы устанавливаете параметры, когда EC2 будет запускать новые экземпляры для вас.

Если вы действительно хотите быть осторожным, вы можете создать ботнет для имитации трафика на ваш сайт http://www.talcottsystems.com/articles/build-your-own-botnet-with-ec2-and-capistrano-to-load-test-your-server-cluster-before-launch/

...