Масштабируемость в Интернете

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

Один вызывает jsp, другой для ruby ​​other для php и т.д. Могу ли я попросить вас рассказать нам о том, что может увеличить потенциал масштабируемости?

Tks, надеюсь, что я не дублирую все, что искал, но не нашел никаких предыдущих вопросов, подобных этому.

Изменить: если бы вы могли указать на сравнение, это было бы хорошо:)

Ответ 1

(пять лет спустя...)

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

http://www.techempower.com/blog/2013/03/28/framework-benchmarks/

Ответ 2

Ruby и PHP не являются фреймворками webapp. Это языки программирования, которые популярны для веб-разработки.

Вообще говоря, масштабируемость Webapp не является свойством языка программирования, и данная платформа webapp не может не препятствовать масштабируемости. Хорошая масштабируемость является скорее свойством разработки приложений.

Существует слишком много webapp-фреймворков для точечного сравнения, которое не связано с энциклопедией.

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

Другим способом является упрощение обслуживания увеличения нагрузки путем "просто" добавления дополнительного оборудования. Практически любая инфраструктура webapp, поддерживаемая базами данных, может масштабироваться таким образом: просто добавьте дополнительные серверы приложений между балансировщиком нагрузки и общей базой данных базы данных. Если вы ставите проблему таким образом, ваша главная задача заключается в разработке приложения для минимизации 1. конфликта базы данных. 2. Загрузка базы данных.

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

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

EDIT. Чтобы быть ясным, мой ответ сосредоточен на масштабируемости, то есть на способности обрабатывать растущие нагрузки без изменения дизайна. Это отличается от скорости выполнения.

Ответ 3

Алгоритмы будут считать больше для масштабируемости, чем используемый язык.

Тем не менее, будут различия в скорости выполнения между языками. Я считаю, что Java (сервлеты и JSP файлы, скомпилированные для сервлетов, т.е. Собственный код) будут на некоторое время быстрее, чем Ruby и PHP). Существует также тонна веб-фреймворков для Java, которая будет поощрять вас делать все возможное для масштабируемости.

Также создайте приложение так, чтобы оно могло успешно работать за балансировщиком нагрузки, а масштабируемость становится намного проще:) Однако это не моя область знаний.

Ответ 4

Вы также можете взглянуть на Что быстрее? PHP против ASP против JSP против CGI и т.д."

Я думаю, что Java/Java EE - это единственная "инфраструктура", разработанная с нуля для разработки распределенных/кластерных приложений и поощряющая передовую практику для ее достижения по спецификациям (EJB, JTA...).

Но, как обычно, это зависит. Такие вопросы часто имеют тенденцию к пламенным войнам:)

Ответ 5

Масштабируемость веб-инфраструктуры - это немного сложный вопрос (кто-то скажет конкурс p155ing). Если вы не получаете мега-баксов (удачи с этим в наши дни) и может обеспечить миллионы посетителей в день, все эти рамки могут справиться с этим (как и ASP.NET).

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

Ответ 6

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

Все зависит от реализации.

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

Ответ 7

A: Cll ISAPI (или пользовательский модуль apache):)

Даже тогда накладные расходы веб-сервера, анализирующие HTTP-запросы и обслуживающие html-страницы, делают время выполнения ваших приложений практически бесполезным. Если вы запустите приложение в качестве приложения CGI, ожидайте еще меньше производительности.

Для масштабируемости в Интернете вы действительно говорите о добавлении большего количества серверов и балансировке нагрузки, снимая нагрузку с сервера, помещая базу данных (если она сильно используется) на отдельный сервер.

Исходная производительность этих языков почти не вызывает беспокойства. Используйте тот, который вы хотите использовать, с которым вы будете наиболее продуктивны. Побеспокоитесь о других проблемах, с которыми вы столкнетесь - network io, безопасность, правильность.

Ответ 8

Несколько хороших моментов уже есть. Моим главным моментом было бы следующее: человек, который знает python внутри и снаружи, вероятно, сможет сделать более масштабируемый код с помощью python, чем с помощью Java. И есть много массово больших сайтов, которые используют все технологии, которые вы упомянули, поэтому я не думаю, что в этом есть какое-то большое преимущество.

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

Ответ 9

Мне довелось встретить этот вопрос и заметил, что некоторые говорят о скорости, другие масштабируемости. Я написал сообщение в блоге, объясняющее разницу:

http://www.fransekman.com/scalability-or-performance-what-do-you-mean/

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

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