2010-07-24 6 views
0

Предположим, вы создаете приложение для стиля facebook для приложения. Как вы будете обрабатывать фотографии профиля пользователя?Пользователь загрузил изображения в Google App Engine?

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

Есть ли эффективный способ сделать это? Или это просто то, что в настоящее время не работает с механизмом приложения?

+1

Использует процессорное время 20 мс за запрос большой вопрос? Это составляет $ 0,0006 - шесть десятых тысяч долларов за тысячу запросов. –

+0

@nick Скажите, что вы поместили миниатюру своего рисунка рядом с каждым обновлением статуса. Затем на домашней странице, где вы видите обновления своего друга, вы видите 20 разных эскизов. Это означает, что каждый просмотр страницы требует 20 обращений к хранилищу данных или memcache ... И время процессора 20 мс было лучшим сценарием, среднее значение было бы намного выше (http://code.google.com/status/appengine/detail/datastore/2010/07/27 # ае-траст-деталь-хранилищу-получить задержку). Кажется, что 20 просмотров хранилища данных за один раз на странице ... – Kyle

+0

Для просмотра первой страницы потребуется 20 обращений в оба конца, но вы должны отправлять кеширующие заголовки, чтобы браузеры пользователей кэшировали миниатюры. Если вы используете блок blobstore, также нет необходимости в обратном просмотре хранилища данных. Кроме того, вы должны быть как минимум обеспокоены воздействием на пользовательский опыт и латентностью, налагаемыми добавлением 20 дополнительных изображений на каждую страницу, чем о влиянии биллинга на сервер. –

ответ

1

У вас больше нет этой проблемы, так как get_serving_url() не использует ни одну из ваших квот процессора (только исходящая полоса пропускания и хранение). Плюс это дает вам масштабирование и обрезку бесплатно.

+0

Да, эта новая функция решает эту проблему – Kyle

0

И кеширование последних использованных изображений в memcache. Это почти вся платформа.

GAE - хороший инструмент для класса приложений, для которого он был построен. Создание клона Flickr выходит за рамки его проектных намерений.

2

Давайте сравним несколько различных вариантов:

Google App Engine:

  • $ 0,10 за CPU час
  • $ 0,12 за гигабайт исходящего пропускной

Google Storage for Developers:

  • $ 0,01 за 10000 GET запросы
  • $ 0,15 за гигабайт скачанный для Северной и Южной Америке и регионе EMEA

Amazon S3:

  • $ 0,01 за 10000 GET запрашивает
  • $ 0,15 за гигабайт до 10 ТБ/месяц передачи данных out

Скажите, что вы обслуживаете 10 миллионов изображений по 50 КБ каждый.

В App Engine с динамическим обработчиком, использующим 20 мс на запрос, это обойдется вам в $ 57,22 в исходящей полосе пропускания плюс $ 5,55 в процессорное время. В Google Storage или S3 вы заплатите $ 71,52 за исходящую пропускную способность плюс 10 долларов США за GET.

Таким образом, в основном, если ваш обработчик использует процессорное время менее 36 мс, он дешевле для App Engine, чем для служб, предназначенных для этой цели. Кто-нибудь, пожалуйста, проверьте мою математику. =)

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