Масштабируемость в сети - PullRequest
       46

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

11 голосов
/ 21 октября 2008

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

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

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

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

Ответы [ 12 ]

24 голосов
/ 21 октября 2008

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

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

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

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

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

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

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

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

4 голосов
/ 21 октября 2008

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

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

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

3 голосов
/ 28 марта 2013

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

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

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

3 голосов
/ 22 октября 2008

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

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

3 голосов
/ 21 октября 2008

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

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

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

2 голосов
/ 22 октября 2008

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

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

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

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

2 голосов
/ 22 октября 2008

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

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

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

1 голос
/ 18 сентября 2013

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

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

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

1 голос
/ 22 октября 2008

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

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

0 голосов
/ 16 августа 2010

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

...