Как работает архитектура клиент-сервер простыми словами?
Постоянно встречаю термин «клиент-серверная архитектура» в описании веба, баз данных, мессенджеров. Можете объяснить на пальцах, что это такое, кто такой клиент, кто сервер и как они общаются?
2 ответа
Клиент-серверная архитектура — это модель, где есть две роли:
- Сервер — программа (или машина), которая хранит данные/ресурсы и ждёт запросов, обслуживая их. Он всегда «на связи».
- Клиент — программа, которая инициирует запрос к серверу и получает ответ.
Клиент спрашивает — сервер отвечает. Клиенты между собой напрямую не общаются, всё идёт через сервер.
Самый понятный пример — открыть сайт:
- Браузер (клиент) отправляет HTTP-запрос: «дай страницу
/about». - Веб-сервер принимает запрос, находит/генерирует страницу.
- Сервер шлёт обратно HTTP-ответ с HTML.
- Браузер рисует страницу.
То же самое в мессенджере: ваше приложение (клиент) шлёт сообщение на сервер, сервер сохраняет его и доставляет другому клиенту.
Плюсы модели:
- централизованное управление данными и доступом;
- легко обновлять логику в одном месте (на сервере);
- клиент может быть «тонким» и простым.
Минусы:
- сервер — единая точка отказа (упал сервер — упали все);
- нагрузка растёт с числом клиентов, сервер надо масштабировать.
Почти весь привычный интернет (веб, почта, базы данных, API) построен по этой модели.
Аналогия из жизни: клиент-сервер — это ресторан. Вы (клиент) делаете заказ официанту, кухня (сервер) его готовит и отдаёт. Вы не идёте сами на кухню и не общаетесь напрямую с другими посетителями — всё через обслуживающую сторону. Один сервер (кухня) обслуживает много клиентов (столиков) одновременно.