Вопрос

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

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

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

Редактировать. Если бы вы могли сравнить это, было бы неплохо:)

Это было полезно?

Решение 4

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

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

http://www.techempower.com/blog/2013 / 03/28 / рамочные-тесты /

Другие советы

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ: для ясности, мой ответ сосредоточен на масштабируемости , то есть на способности справляться с растущими нагрузками без изменения дизайна. Это свойство отличается от скорости выполнения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://www.fransekman.com/scalability -или-производительность-что-делать-вы-средний /

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top