Является ли Google Application Engine хорошей платформой для чата с высокой посещаемостью? - PullRequest
5 голосов
/ 29 марта 2011

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

Сканирование по API канала (http://code.google.com/appengine/docs/python/channel/overview.html) вселяет надежду, что это можно сделать без опроса AJAX, и общее мнение таково, что GAE очень масштабируем.

У меня все еще есть несколько проблем:

1) Может ли он поддерживать десятки тысяч одновременных пользователей, которые взаимодействуют друг с другом в режиме реального времени без задержки? Есть ли ограничение использования процессора?

2) Я (вероятно) напишу это поверх фреймворка J2EE. Гарантирует ли GAE, что каждый новый запрос будет иметь доступ к глобальному хранилищу данных в памяти, которое будет доступно, пока приложение работает на сервере («ServletContext» на языке Java), и будет хранить, возможно, гигабайты данных? Есть ли крышка памяти?

3) Будет ли доступен полный стек J2SE и J2EE? Смогу ли я включить любую желаемую библиотеку?

4) Есть ли лучшие решения для такого рода проблем, чем GAE? Я думал об аренде нескольких выделенных серверов, но это пойдет на тысячи / месяц ...

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 29 марта 2011

Чтобы ответить на ваши вопросы по порядку:

  1. Да, он может поддерживать десятки тысяч одновременных пользователей. Я надеюсь, что вы не ожидаете, что все они будут взаимодействовать друг с другом одновременно, хотя выделение 10 000 обновлений для каждого пользовательского события не будет ужасно практичным. ЦП - это квотированная квота, поэтому нет предела, если вы платите за использование.
  2. Хранилище данных App Engine находится на диске, а не в памяти. Приложения имеют доступ к хранилищу данных (которое является постоянным) и memcache (который находится в памяти, но кэш). Оба являются глобальными для всего приложения, а не только для экземпляра. Как и в случае с квотами на ЦП, нет строгого ограничения - вы получаете то, за что платите.
  3. Существует белый список основных классов JRE, который исключает некоторые функции, которые были бы небезопасны для песочницы. Помимо этого, вы можете запускать все, что вы хотите.
  4. Я думаю, что App Engine вполне подойдет вашему приложению, за исключением потокового видео: в настоящее время для этого нет решения на базе App Engine, поэтому вам придется использовать для него внешний сервис. Основным преимуществом App Engine является то, что затраты масштабируются в зависимости от использования, поэтому вы платите только за то, что используете.
4 голосов
/ 29 марта 2011

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

  1. Конечно, есть ограничение на использование процессора. Я действительно сомневаюсь, что ваша заявка подходит для GAE вообще. Прочитайте эту страницу о квотах. Если вы выполняете обработку видео, вы, вероятно, обнаружите, что достигли своей ежедневной загрузки ЦП в течение нескольких минут. Вы, конечно, не будете поддерживать десятки тысяч пользователей. (Возможно, на платной версии вы можете работать дольше, но только на порядок больше - я все еще думаю, что это невозможно).
  2. Проверьте крышку на размер хранилища данных также. Вы получаете 1 ГБ бесплатно и должны платить больше. У вас нет доступа к глобальному пространству памяти (каждый запрос может обрабатываться другим сервером), но у вас есть доступ к глобальному хранилищу данных.
  3. Существуют ограничения на библиотеки, которые вы можете использовать. См. Белый список JRE . Если его нет в этом списке, он недоступен. Конечно, вы можете включить любые дополнительные библиотеки, если они написаны на чистом Java, но не если они используют собственный код.
  4. Да, я думаю, что есть лучшие решения.

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

0 голосов
/ 29 сентября 2011

Относительно API канала: обратите внимание на ограничение размера сообщения: «Сообщения ограничены 32 КБ». Возможно, можно было бы разделить видеопоток на маленькие кусочки, но я не думаю, что это будет практически осуществимо или выполнимо. Также для клиента, чтобы восстановить исходный поток. Тогда нет стандарта, например Можно использовать Flash Player.

...