Масштабируемое веб-приложение с большим количеством порций изображений - PullRequest
0 голосов
/ 28 мая 2009

Я начал работать над веб-приложением. Это приложение требует много обработки изображений. Я начал с PHP , так как это был самый простой и дешевый хостинг. Я использовал .NET Framework для некоторых из моих предыдущих приложений, и я очень доволен Python.

Но сейчас мне не совсем удобно использовать PHP, поэтому я решил использовать что-то более простое для меня.

Может кто-нибудь помочь мне понять, если .NET Framework или Python (в настоящее время мне хорошо подходит web.py) имеет преимущество над другими, учитывая большое количество манипуляций с изображениями и, скажем, около 200 запросов в секунду?

Также я был бы признателен, если бы кто-то мог предложить подходящий хост для любого из них.

EDIT:

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

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

Ответы [ 6 ]

1 голос
/ 28 мая 2009

Как упоминалось ранее, подойдет любое количество платформ разработки, это зависит от вашего подхода к кешированию контента.

Если вам удобно с Python, я бы порекомендовал Django . Существует большое сообщество разработчиков и множество крупных приложений и сайтов, работающих на платформе.

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

Вот несколько ссылок, которые могут помочь:

Существует целый ряд хостинговых компаний, которые предлагают как общие, так и выделенные планы хостинга. Я бы посетил http://djangohosting.org/, чтобы определить, какой хост может работать лучше для ваших нужд. Я немного использовал WebFaction и был чрезвычайно доволен их обслуживанием.

1 голос
/ 28 мая 2009

Пожалуйста, купите книгу Шлосснагла, Масштабируемые интернет-архитектуры .

Вы должны обслуживать изображения не из Python (или PHP или .Net), а из Apache и Squid. То же самое верно для файлов Javascript и CSS - они являются статическими носителями, и Python никогда не должен их трогать.

Вы должны обрабатывать только HTML-часть транзакции.

Кстати, это архитектура, которую вы получаете с такими вещами, как Django . Статические носители обрабатываются вне Python. Python обрабатывает проверку и обработку HTML.

Оказывается, вы будете тратить большую часть своего времени на суету со Squid и Apache, пытаясь заставить дела идти быстрее. Python (и фреймворк Django) достаточно быстр, если вы ограничите их обязанности.

0 голосов
/ 31 мая 2009

Я бы также рекомендовал посмотреть MogileFS . Это распределенная файловая система, которая работает на ОС Unix. Я знаю, что Digg использует его для хранения своих аватаров.

Это от тех же парней, которые создали memcached и живой журнал.

0 голосов
/ 28 мая 2009

Я не думаю, что переключение языков сильно поможет в вашей проблеме, просто выбранная вами архитектура работает только для небольших объемов данных. Я бы порекомендовал вам посетить http://highscalability.com, пришло время посмотреть, как большие парни масштабируют свои приложения.

0 голосов
/ 28 мая 2009

Из того, что вы написали, для вас подойдет либо .NET, либо Python. Лично я бы пошел на Python. Почему?

  • Это бесплатно.
  • Масштабируется.
  • С библиотекой изображений Python С изображениями можно делать практически все.
  • Эй, это код без Python, тот же результат.

Если честно, ваш выбор не важен - просто выберите тот, который вам удобен, и придерживайтесь его. Вы упомянули web.py - этот сайт сделан с помощью web.py: colr.org - и это сделано с 1304 строками кода, не считая внешних библиотек.

0 голосов
/ 28 мая 2009

Если вы хотите повысить производительность при обслуживании изображений, вы должны использовать в FaceBook подход «никогда не выходить на диск, если это абсолютно не необходимо», то есть использовать как можно больше кэширования между серверами изображений и конечным пользователем. Существует множество продуктов, которые могут помочь вам как в коммерческой, так и в бесплатной сфере, в том числе просто правильно настроить веб-серверы, - Google и посмотрите, что подходит для ваших расходов и платформы.

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