Многоуровневый против Distibuted?
Многоуровневые и / или распределенные приложения, имеют ли они одинаковое значение?
Когда мы говорим о слоях в этих приложениях, это физические уровни (база данных, браузер, веб-сервер,...) или логические уровни (уровень доступа к данным, бизнес-уровень,...)?
3 ответа
Возможно, эти два предложения интуитивно передают различие между распределенным и многоуровневым:
- Распределенный: Вы дублируете обработку среди узлов
- Многоуровневый: вы разделяете обработку между уровнями
В одном случае одна и та же обработка реплицируется на несколько узлов. В другом случае каждый уровень имеет отдельную ответственность, и обработка, выполняемая на каждом уровне, отличается.
Оба понятия не являются исключительными: у вас могут быть нераспределенные многоуровневые приложения (если нет формы избыточности / репликации), распределенные приложения, которые не являются многоуровневыми, но также и многоуровневые приложения, которые распространяются (если они имеют некоторая форма избыточности).
Было бы намного больше, чтобы сказать о различии, но различие (для меня) по существу там.
У ewernli наиболее правильный ответ здесь. Единственный недостающий фрагмент из исходного вопроса касается физического и логического уровней.
С распределенной и / или многоуровневой точки зрения, являются ли слои физически разделенными или просто логически, это не имеет значения. Смысл, это не имеет значения. Вы можете создавать многоуровневые и даже распределенные приложения, которые полностью находятся на одном экземпляре компьютера.
Тем не менее, более распространено разделить уровни на разные машины, созданные специально для этого типа нагрузки. Например, веб-сервер и сервер базы данных. Или даже веб-сервер, несколько машин веб-служб и один или несколько серверов баз данных.
Все эти функции, распределенные, многоуровневые и / или сбалансированные по нагрузке с логическим и / или физическим уровнями, являются только особенностями дизайна приложения.
Кроме того, в современном мире виртуальных машин вполне возможно (и даже вероятно) настроить многоуровневое, распределенное и сбалансированное приложение в пределах одной реальной машины. Хотя я бы никогда не рекомендовал такой порядок действий, потому что балансировка нагрузки и распределенные сервисы обычно заключаются в увеличении доступности или пропускной способности.
Многоуровневый означает, что ваше приложение будет основано на нескольких машинах с различными задачами (база данных, веб-приложение,...). Распределенный означает, что ваше приложение будет работать на нескольких компьютерах одновременно, например, ваш сайт может быть размещен на 3 разных серверах.
Для многоуровневых приложений мы обычно говорим о физическом уровне. Но в каждом приложении вы можете / должны иметь разные логические слои.