Подтвердить что ты не робот

Терминология восходящего/нисходящего потока используется в обратном направлении? (Например, nginx)

Я всегда думал о восходящем и нисходящем потоках вдоль линий реального потока, где поток информации подобен воде. Таким образом, восходящий поток - это источник воды/данных (например, HTTP-запрос), а нисходящий поток - туда, куда он идет (например, базовая система, которая обслуживает запрос).

Недавно я просматривал шлюзы API и заметил, что некоторые из них использовали обратное этому определению. В то время я пожал плечами. Затем я обнаружил, что nginx, на котором основаны некоторые API-шлюзы, также использует терминологию в обратном направлении к тому, что я ожидал. nginx вызывает серверы, на которые он отправляет запросы на "восходящие серверы", и, предположительно, входящие запросы будут поэтому "нисходящими клиентами".

Концептуально кажется, что nginx будет толкать запросы "в гору", если вы перейдете на "восходящий сервер", что абсолютно противоречит интуиции... Гравитация обращена вспять на земле обратных прокси и шлюзов API, по-видимому!

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

Получил ли я свое понимание аналогии потока в корне неправильно или эти программные компоненты возвращают концепции обратно?

4b9b3361

Ответ 1

В мире HTTP термин "восходящий сервер" был введен в спецификации HTTP/1.0, RFC 1945:

502 Bad Gateway

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

Формальное определение было добавлено позже, в RFC 2616:

вверх/вниз по течению

Вверх и вниз описывают поток сообщения: все потоки сообщений от восходящего потока к нисходящему потоку.

Согласно этому определению:

  • Если вы ищете запрос, то клиент находится вверх по течению, а сервер находится ниже по течению;
  • в отличие от этого, если вы смотрите на ответ, тогда клиент находится ниже по течению, а сервер находится вверх по течению.

В то же время в HTTP большинство потоков данных не для запросов, а для ответов. Итак, если вы рассмотрите поток ответов, то термин "восходящий сервер" звучит довольно разумно и логично. И этот термин снова используется в описании кода ответа 502 (он идентичен HTTP/1.0), а также некоторые другие места.

Такую же логику можно увидеть и в терминах "загрузка" и "загрузка" на естественном языке. Большая часть потока данных от серверов к клиентам, и поэтому "загрузка" означает загрузку чего-либо с сервера клиенту и "загрузку" - от клиента к серверу.