Узнайте о различиях между прокси-сервером и обратным прокси-сервером.

В распределенных системах мы часто сталкиваемся с терминами «прокси» и «обратный прокси». Эти термины могут иногда сбивать с толку. В чем основное различие между ними? Каковы преимущества и варианты использования двух типов прокси-серверов?

Начнем с базового определения прокси и обратного прокси.

Прокси-сервер (также известный как прямой прокси-сервер) — это сервер, который делает «запросы» от имени клиента, тем самым анонимизируя клиента от сервера. С прокси-сервером сервер не знает клиента.

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

Давайте углубимся в это.

Проверьте Интервью Grokking the System Design, чтобы узнать о важных концепциях распределенных систем.

Прокси

Вот пример конфигурации прокси; клиент слева — это конечный пользователь, который хочет получить доступ к некоторому контенту с YouTube.com. Он отправляет запрос на свой прокси-сервер, обычно это интернет-провайдер. Он позаботится о подключении к серверу YouTube и получении желаемого ответа клиенту.

Прокси-сервер скрывает личность клиента от сервера, отправляя запросы от его имени.

Итак, в чем преимущества прокси-серверов?

  1. Кэширование

Всякий раз, когда прокси-сервер вводится, он приносит с собой преимущества кэширования. Прокси-сервер может кэшировать любые данные, изменение которых не ожидается. Теперь, когда другой клиент отправляет запрос на тот же контент, прокси-сервер может отправить обратно кэшированный ответ вместо повторного обращения к серверу. Кэширование имеет преимущества низкой задержки, уменьшения сетевого трафика и более высокой пропускной способности сети.

2. Анонимность

Конечный пункт назначения, которым в данном случае является сервер YouTube, не будет знать о клиенте, от которого исходит запрос.

3. Контроль трафика

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

4. Ведение журнала

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

Обратный прокси

В парадигме обратного прокси, как показано выше, обратный прокси-сервер скрывает конечный сервер, который обслуживал запрос от клиента.

В левой части диаграммы клиент делает запрос контента YouTube, он достигает обратного прокси-сервера YouTube, который получает ответ от одного из серверов YouTube и отправляет ответ обратно клиенту. Что мы получаем от этой установки?

  1. Кэширование:

Обратный прокси-сервер может кэшировать любые неизменяемые данные локально. Таким образом, когда другой клиент отправляет запрос на тот же контент, он может обслуживать его из своего локального кеша вместо того, чтобы связываться с серверами. Это обеспечило бы преимущества низкого сетевого трафика, малой задержки и снижения нагрузки на серверы.

2. Анонимность:

Прокси всегда приносит с собой преимущество анонимности. В этом случае клиент никогда не узнает о конечном целевом сервере YouTube. Эта анонимность защищает целевые серверы от потенциальных атак, таких как DDoS-атаки.

3. Балансировка нагрузки:

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

4. Эксперимент:

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

5. Маршрутизатор/вход:

Обратный прокси-сервер может действовать как вход или маршрутизатор в Kubernetes или архитектуре микросервисов. Он может сопоставляться с фактически запущенными службами, например, если клиент запрашивает списки воспроизведения, которые он направляет на сервер YouTube server1, на котором запущена служба для списков воспроизведения.

Заключение:

Прокси-сервер и обратный прокси-сервер могут показаться похожими, но они довольно разные с точки зрения вариантов использования и преимуществ. Оба они добавляют элемент анонимности, прокси скрывает личность клиента, тогда как обратный прокси скрывает личность сервера. Поэтому, если вы хотите защитить клиентов во внутренней сети, поместите их за прямым прокси. С другой стороны, если вы собираетесь защищать серверы, поместите их за обратным прокси. Пожалуйста, взгляните на Интервью по конструированию системы и Интервью по продвинутому проектированию системы, где вы найдете несколько хороших примеров основ проектирования системы.