1 Клиент-серверная архитектура

На заре появления интернета распространение получила клиент-серверная архитектура, хотя существовали и другие. Смысл ее заключается в том, что все участники сети делятся на две логические части: клиент и сервер.

Задача сервера (server, от serve — служить) — обслуживать запросы клиентов. Сервер делает большую часть работы, хранит все нужные данные и следит за их целостностью. И хотя есть компьютеры, которые называют серверы, обычно под понятиями “клиент” и “сервер” подразумевается ПО.

Задача клиента — жить в свое удовольствие. Когда клиенту нужны какие-нибудь данные от сервера, он отправляет ему запрос. Через некоторое время он получает ответ от сервера и может делать с полученными данными что-то важное.

Инициатором запросов всегда выступает клиент. Режим общения всегда проходит в виде запрос-ответ. Это в каком-то смысле синоним понятия “клиент-сервер”.

А какие же бывают альтернативы? Ну, во-первых, одноранговые сети, где все участники равны (их еще называют peer-to-peer сетями). Если вы со своим другом переписывайтесь в чате или с помощью СМС, то это как раз пример одноранговой сети. В чем же отличие?

Вы можете написать сообщение и не получить на него ответа, а затем отправить новое, и так далее. Ваш друг может быть инициатором диалога. Любая из сторон может написать первой. Вся информация о диалоге храниться у обеих сторон, никто не обязан отвечать.

Преимущества клиент-серверной архитектуры:

Надежность. Клиенты могут находиться где угодно, даже на ненадежных платформах. Windows на вашем компьютере может “слететь”, iPhone могут украсть, а данные, которые хранятся в облаке, никуда не денутся.

Слабые и дешевые клиенты. Если вам нужно сделать монтаж видео на телефоне, то вы загружаете его на сервер и выполняете на серверных мощностях. Клиент может быть дешевым инструментом.

Сбалансированная нагрузка. Каждый клиент имеет индивидуальный график использования, который может быть очень скачкообразным. На сервер приходят запросы от тысяч клиентов, его нагрузка усредняется и поэтому лучше прогнозируема.

Клиент-серверная архитектура