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