2010-08-22 4 views
2

Многоуровневые и/или ditstributed приложения, имеют ли они то же значение?Многоуровневое и дистанционное распределение?

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

+1

Да, это действительно зависит от того, как вы архитектор приложения. –

ответ

5

Может быть, эти два предложения делают передать интуитивно различие между распределены и многоуровневых:

  • Распределенная: Вы повторить обработку среди узлов
  • Многоуровневая: Вы разделить обработку между уровнями

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

Оба понятия не являются исключительными: у вас могут быть нераспределенные многоуровневые приложения (если нет формы избыточности/репликации), распределенные приложения, которые не являются многоуровневыми, но также многоуровневыми приложениями, которые распространяются (если они имеют некоторую форму избыточности).

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

+0

Так распределен, как балансировка нагрузки? – mohamida

+0

Не нравится, что сказал Eldos Eugos Eugene и что говорится в вики, что «программа разделена на несколько задач, и каждый из них запущен на разных машинах? – mohamida

+0

@mohamida Я не уверен, что получаю ваш комментарий. неясно? Кроме того, между двумя концепциями не будет жесткой линии. Но уровни чаще используются для обозначения корпоративных приложений, тогда как распределенные системы больше связаны с такими вещами, как поисковая система, распределенная база данных, отказоустойчивость. – ewernli

0

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

Для многоуровневых приложений мы говорим в основном о физическом уровне. Но в каждом приложении вы можете/должны иметь разные логические уровни.

+0

Но вы можете иметь все свое приложение на одной машине, а затем мы говорим о логическом слое, а не о физическом. И ваше определение распределенного приложения не такое же, как «дублирование», потому что вы сказали, что одно и то же приложение запущено на разных машинах? – mohamida

+0

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

+0

Я думаю, вы говорите здесь о «балансировке нагрузки», а не о распределенных приложениях. Я думаю, что распределенное состоит в том, что одно приложение разделено на множество небольших приложений, и эти приложения распространяются на разных компьютерах, и каждое небольшое приложение выполняет определенную работу. – mohamida

1

ewernli имеет в основном правильный ответ здесь. Единственный недостающий фрагмент из исходного вопроса касается физических и логических слоев.

С распределенной и/или многоуровневой точки зрения, являются ли слои физически раздельными или просто логически, так что это несущественно. Значит, это не имеет значения. Вы можете создавать многоуровневые и даже распределенные приложения, которые полностью находятся на одном экземпляре машины.

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

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

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

+0

И если многие задачи выполняются разными процессорами на одной машине, говорим ли мы здесь о распределенном приложении? – mohamida

+0

@mohamida: только если это фактически отдельные идентичные процессы. Если один процесс использует несколько потоков для обработки данных, то это просто многопоточное приложение. – NotMe

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