В чем разница между двухуровневой и трехуровневой архитектурой?

Я использую JDBC в своем приложении с бизнес-логикой (клиент). Этот JDBC подключается к базе данных, которая находится на другом компьютере (сервере). В этом случае мой JDBC напрямую подключается к базе данных, сохраняет и извлекает данные. Это ДВУХУРОВНЕВАЯ архитектура, верно?

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

В приведенном выше примере в трехуровневой архитектуре браузер добавил только дополнительные элементы и сохранил мою бизнес-логику на сервере. Я не чувствую никакой разницы в производительности, кроме этих. Если я ошибаюсь, поправьте меня и объясните мне точную архитектуру 2-уровневой и 3-уровневой с другими примерами. Заранее спасибо дорогие друзья.


person Rajkumar    schedule 10.10.2012    source источник


Ответы (1)


То, что вы говорите, правильно.

  1. Ваш первый пример двухуровневый.
  2. Второй пример трехуровневый.

Трехуровневая архитектура может обеспечить значительный прирост производительности, если связь между браузером и сервером медленнее, чем связь между сервером и СУБД. Это связано с тем, что обычно бизнес-логика должна сделать несколько обращений к СУБД и/или предоставить пользователю лишь небольшую часть информации, возвращаемой СУБД. Наличие бизнес-логики в клиенте при медленном подключении к СУБД будет представлять собой серьезное снижение производительности.

В типичном веб-сценарии соединение между клиентом и сервером, как правило, в несколько раз медленнее, чем соединение между сервером и СУБД, и вы получаете выигрыш в производительности.

person pmoleri    schedule 11.10.2012
comment
Просто добавить немного момент. Обычно двухуровневые системы работают быстрее в небольших масштабах из-за меньших накладных расходов. Однако главное преимущество многоуровневой архитектуры — масштабируемость. - person Adrian Shum; 11.10.2012
comment
Кроме того, в многоуровневой архитектуре нам не нужно иметь копию бизнес-логики на каждой клиентской машине, как в двухуровневой архитектуре. Просто разместите бизнес-логику один раз на сервере. Правильно? - person Rajkumar; 11.10.2012
comment
@AdrianShum согласен, но только если у вас есть быстрая ссылка на СУБД, если у вас есть только один клиент (небольшой), но вы подключаетесь к СУБД через коммутируемый модем, трехуровневый, вероятно, будет намного быстрее. - person pmoleri; 11.10.2012
comment
@Rajkumar, действительно, это еще одно преимущество, но я думаю, что вопрос был о производительности. - person pmoleri; 11.10.2012
comment
@pmoleri Когда бизнес-логика и БД находятся только на одном компьютере, поиск и хранение данных будут быстрыми. Если оба они размещены на разных машинах, то скорость извлечения данных из БД и их хранения в БД будет зависеть от скорости соединения между сервером приложений (компьютер, на котором есть бизнес-логика) и сервером БД. Я прав? - person Rajkumar; 11.10.2012
comment
Лучшая конфигурация зависит от требований к скорости обработки и скорости. Если и BL, и СУБД находятся на одном сервере, они совместно используют ресурсы, и производительность может быть хуже, чем при подключении разных серверов с помощью быстрой связи, например, Gigabit. - person pmoleri; 11.10.2012
comment
Ага. Это правда. Но если оба находятся на разных машинах, а скорость соединения очень низкая, это также ухудшит производительность. Разве нет? Если оба находятся на одном компьютере, подключение к БД будет быстрее, чем подключение к БД, которая находится на другом компьютере, даже если они оба используют один и тот же ресурс? - person Rajkumar; 12.10.2012
comment
Да, наверное, это правильно. Хотя я могу думать о сценариях, где это не обязательно так, например, не очень медленное соединение между веб-сервером и СУБД (50 Мбит / с Wi-Fi) и серверы с несколькими ядрами процессора для ожидаемой нагрузки (одновременные клиенты), в такой В случае использования двух или более серверов это, вероятно, лучше. - person pmoleri; 12.10.2012
comment
да. Только что я узнал, что даже если мы разделим «приложение и данные» отдельно и сохраним их на одном компьютере, это будет просто многоуровневое, а не многоуровневое. Просто мы организуем код логически по слоям, но он станет многоуровневым, только если мы сделаем физическое развертывание слоев. - person Rajkumar; 02.11.2012