3.3. Архитектура клиент-сервер
Архитектура клиент-сервер (CSA – Client-Server Architecture, англ.) – концепция организации сети, в которой основная часть ее ресурсов сосредоточена в серверах, обслуживающих своих клиентов.
Техническая революция, вызванная появлением ПК, сделала возможным во многих случаях иметь вычислительные и информационные ресурсы на рабочем столе пользователя и управлять ими по собственному желанию с помощью оконного графического интерфейса. Увеличение производительности ПК позволило перенести части системы (интерфейс с пользователем, прикладную логику) для выполнения на ПК, непосредственно на рабочем месте, а функции обработки данных оставить на центральном компьютере. Система стала распределенной – одна часть функций выполняется на центральном компьютере, другая – на персональном, который связан с центральным посредством коммуникационной сети. Таким образом, появилась клиент-серверная модель взаимодействия компьютеров и программ в сети и на этой основе стали развиваться средства разработки приложений для реализации информационных систем [8].
Как следует из названия, архитектура CSA определяет два типа взаимодействующих в сети компонентов: серверы и клиенты. Каждый из них является комплексом взаимосвязанных прикладных программ. Серверы7 предоставляют ресурсы, необходимые пользователям. Клиенты используют эти ресурсы и предоставляют удобные пользовательские интерфейсы.
Термины «клиент» и «сервер» обозначают роли, которые играют различные компоненты в распределенной среде вычислений. Компоненты «клиент» и «сервер» не обязательно должны работать на разных машинах, хотя чаще всего именно так и бывает – клиент-приложение находится на рабочей станции пользователя, а сервер – на специальной выделенной машине.
Клиент формирует запрос на сервер для выполнения соответствующих функций. Например, файл-сервер обеспечивает хранение данных общего пользования, организует доступ к ним и передает данные клиенту. Обработка данных распределяется в том или ином соотношении между сервером и клиентом. В последнее время долю обработки, приходящуюся на клиента, стали называть «толщиной» клиента.
В современной архитектуре «клиент-сервер» выделяется четыре группы объектов: клиенты, серверы, данные и сетевые службы. Клиенты располагаются в системах (например, компьютерах), находящихся на рабочих местах пользователей. Данные, в основном, хранятся в серверах. Сетевые службы являются совместно используемыми прикладными программами, которые взаимодействуют с клиентами, серверами и данными. Кроме этого, службы управляют процедурами распределенной обработки данных, информируют пользователей о происходящих в сети изменениях.
В зависимости от сложности выполняемых прикладных процессов и числа работающих клиентов различают двух- и трехуровневые архитектуры.
Н
Рис.3.3. Двухуровневая
архитектура «клиент – сервер»
При всей простоте построения такой архитектуры, она обладает серьёзными недостатками, наиболее существенные из которых – высокие требования к сетевым ресурсам и пропускной способности сети, а также сложность обновления программного обеспечения из-за логики взаимодействия, распределённой между клиентом и сервером БД. Кроме того, при большом количестве клиентов возрастают требования к аппаратному обеспечению сервера БД – самого дорогостоящего узла в любой информационной системе.
Следующим шагом развития клиент-серверной архитектуры стало внедрение среднего уровня, реализующего задачи управления механизмами доступа к БД (рис.3.4). В трехуровневой архитектуре (three-tier architecture, англ.) вместо единого сервера применяются серверы приложений и серверы БД. Их использование позволяет резко увеличивать производительность локальной сети.
П
Рис.3.4. Трехуровневая
архитектура
«клиент –
сервер»
Но узким местом здесь, как и в двухуровневой CSA, остаются повышенные требования к пропускной способности сети, что накладывает жесткие ограничения на использование таких систем в сетях с неустойчивой связью и малой пропускной способностью (сети мобильной связи, GPRS, а в ряде случаев и Internet).
Дальнейшее развитие CSA связано с многоуровневой архитектурой (N-tier architecture, англ.), которая использует средства разделения программ или распределенные объекты для разделения вычислительной нагрузки среди такого количества серверов приложений, которое необходимо при имеющемся уровне нагрузки. При многоуровневой модели системы количество возможных клиентских мест значительно больше, чем при использовании двух- и трехзвенной моделей.
