Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
В клиент-серверной архитектуре каждый компьютер в сети выполняет функции сервера или клиента. Клиенты запускают программные приложения, такие как текстовые редакторы, веб-браузеры, игры и т.д. Эти клиентские приложения инициируют запросы к серверам для получения определенных ресурсов или выполнения каких-либо операций.
Серверы в первую очередь предоставляют ресурсы, такие как, файлы и вычислительную мощность. Также серверы выполняют задачи по обработке бизнес-логики, расчетам и вычислениям, в зависимости от типа приложения.
Но для того, чтобы полностью понять архитектуру клиент-сервер, давайте сначала разберемся, что представляют собой клиент и сервер:
Клиент: Клиентом может быть любой компьютер, который запрашивает что-либо у сервера. Например, посещая какой-либо сайт, мы отправляем запрос на получение веб-страницы этого сайта с помощью его уникального доменного имени. Таким образом, здесь мы выступаем в роли клиента.
Сервер: С другой стороны, сервер – это компьютер, который предназначен для обработки запросов клиента. Например, клиент запрашивает веб-страницу, а сервер предоставляет клиенту эту страницу в виде ответа.
Содержание:
- Что такое архитектура клиент-сервер?
- Как работает архитектура клиент-сервер?
- Типы клиент-серверной архитектуры
- Преимущества архитектуры клиент-сервер
- Недостатки архитектуры клиент-сервер
- Заключение
Что такое архитектура клиент-сервер?
Архитектура клиент-сервер разделяет задачи между клиентами (теми, кто запрашивает информацию) и серверами (теми, кто предоставляет информацию). Коммуникация между клиентом и сервером происходит по типу связи “запрос-ответ”.
Обмен сообщениями между клиентом и сервером осуществляется по протоколу TCP до тех пор, пока соединение не завершится. TCP-протокол определяет, как данные разбиваются на пакеты, которые передаются через сеть. Он регулирует отправку и получение пакетов, а также следит за тем, чтобы данные передавались последовательно и контролирует повторную отправку, если какие-либо пакеты были повреждены или потеряны.
IP (Internet Protocol) – это основной протокол, который управляет передачей данных через интернет и другие компьютерные сети. Он отвечает за упаковку, адресацию и доставку данных между устройствами в сети.
Он работает так, что каждая отправляемая или передаваемая порция данных, называемая пакетом, является независимой и отдельной частью информации. Эти пакеты перемещаются по сети независимо друг от друга, без какой-либо постоянной связи или зависимости между собой.
Каждый пакет содержит достаточно информации, чтобы определить, куда он должен быть доставлен. Это способствует эффективности передачи данных через сеть и позволяет более надежно передавать информацию даже в случае потерь или задержек отдельных пакетов.
Как работает архитектура клиент-сервер?
Мы уже изучили, что такое клиент, и что такое сервер. Теперь давайте разберемся, как именно работает клиент-серверная архитектура.
На рисунке выше показан сценарий, когда клиент хочет получить какую-либо информацию с сервера, например, открыть веб-страницу. Для начала, чтобы знать, какой сервер обрабатывает данную информацию, клиент обращается к DNS (системе доменных имен) с вопросом, какой IP-адрес соответствует этому серверу. DNS-сервер выдает клиенту IP-адрес сервера, где хранится нужная информация. Клиент отправляет запрос на этот IP-адрес сервера, а он в свою очередь принимает запрос, обрабатывает его и отправляет ответ клиенту.
Типы архитектуры клиент-сервер
Клиент-серверная архитектура подразделяется на различные типы в зависимости от бизнес-логики, реализованной для обработки запросов между клиентом и сервером.
Одноуровневая архитектура
В этом типе архитектуры все компоненты, включая представление, бизнес-логику и работу с данными, находятся внутри одной программы или на одном уровне. Это означает, что все операции и логика происходят в пределах одного программного пакета.
Это удобно, потому что все необходимое для работы приложения находится в одном месте. Такой подход может быть простым, но он может также сделать приложение менее гибким для масштабирования и обслуживания.
Двухуровневая архитектура
В клиент-серверной архитектуре данного типа логика приложения разделена на два основных слоя. База данных действует как отдельная часть системы. Сначала создаются и настраиваются базы данных. Затем основное приложение включает в себя всю логику, связанную с пользовательским интерфейсом, бизнес-процессами и взаимодействием с базой данных. Такая архитектура позволяет более удобно организовать и управлять приложением.
По сравнению с архитектурой 1-го уровня, где все в одном месте, архитектура 2-го уровня более быстрая, так как нет лишних звеньев между клиентом и сервером.
Трехуровневая архитектура
В отличие от архитектуры двухуровневой системы, в которой отсутствует промежуточное ПО, в трехуровневой системе между клиентом и сервером имеется промежуточное ПО. Когда клиент запрашивает информацию у сервера, запрос сначала поступает на промежуточное ПО. Затем запрос отправляется на сервер для обработки. Аналогичным образом сервер отправляет клиенту ответ.
В трехуровневой архитектуре существует три основных слоя: presentation, application и database. Клиентские устройства управляют presentation слоем, а промежуточное программное обеспечение и сервер – application и database слоями. Наличие третьего слоя, обеспечивающего управление данными, делает трехуровневую архитектуру более защищенной, обеспечивает целостность данных.
Преимущества архитектуры клиент-сервер
- Простота в управлении – Управлять файлами довольно просто, поскольку все они хранятся на одном сервере.
- Легкость доступа – Клиенты могут входить в систему независимо от своего местонахождения или выбранной платформы, что позволяет каждому сотруднику компании легко получить доступ к корпоративной информации.
- Масштабируемость серверов – Клиент-серверная сеть обладает высокой степенью масштабируемости. При необходимости можно добавить больше клиентов (компьютеров, устройств) и серверов в эту сеть. Это позволит увеличить мощность сервера и обработать больше запросов без остановки работы сети. Поскольку управление всей сетью осуществляется через центральный сервер, проблем с предоставлением доступа к ресурсам сети практически не возникает.
- Централизованное управление – Сети клиент-сервер обладают преимуществом централизованного контроля, поскольку вся информация хранится в одном месте. Поскольку администратор сети имеет полный контроль над управлением и администрированием, это особенно выгодно. В результате любые проблемы, возникающие с сетью, могут быть решены из одного центрального узла.
- Безопасность – Благодаря централизованной архитектуре клиент-серверные сети обеспечивают надежную защиту данных. В случае потери данных можно использовать единую резервную копию для восстановления всех файлов.
Недостатки клиент-серверной архитектуры
- Менее надежна – Из-за централизованной природы клиент-серверных сетей в случае сбоя или вмешательства в работу главного сервера вся сеть будет прервана. Таким образом, клиент-серверные сети менее надежны.
- Требуется регулярное обслуживание – Серверы будут постоянно работать в сети. Это означает, что им необходимо подходящее обслуживание. Если возникают какие-либо проблемы, они должны немедленно устраняться.
- Требует затрат – В сети клиент-сервер затраты на настройку и обслуживание сервера обычно очень велики.
- Перегруженность сети – Если к одному серверу обращается слишком много клиентов, это может привести к сбоям или замедлению соединения. Перегруженный сервер создает множество проблем в доступе к информации.
Заключение
Клиент-серверная архитектура позволяет обновлять общую базу данных несколькими пользователями с помощью графического пользовательского интерфейса (GUI). Все компании, большие и малые, используют мощь сетей для развития и цифровизации своего бизнеса, продвижения продукции на рынок и информирования о новостях и событиях в своих областях. Таким образом, эта статья поможет вам понять, как сетевые технологии определяют стратегии коммуникации для различных типов организаций.
Перевод статьи «Client Server Architecture – Detailed Explanation».