Каким способом являются нисходящие и восходящие услуги?

45

Для системы, состоящей из нескольких служб, вызывающих друг друга (например, Front End -> Backend -> Storage), я часто слышал, как люди используют терминологию, такую ​​как «нисходящие» или «восходящие» службы. Мне не ясно, в каком направлении они означают. Данные передаются в обоих направлениях. Запросы перетекают от большего количества обращений к пользователю к большему количеству бэкэнд-сервиса, но ответы идут в противоположном направлении, поэтому мне кажется, что в любом случае можно поспорить

user69715
источник
3
Интересно, что HTTP-спецификация RFC 7230 включает определения терминов «вверх по течению» и «вниз по течению» в разделе 2.3: tools.ietf.org/html/rfc7230#section-2.3
Джек,

Ответы:

56

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

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

Дерек Элкинс
источник
Я думаю, что это должны быть «нисходящие сервисы» вместо «сервисов нисходящих» .
Наваз
8

К сожалению, существуют разные мнения о значении вверх / вниз по течению. Говоря об архитектуре системы, я определяю ее следующим образом:

С учетом проблемной системы системы, которые инициируют обмен сообщениями / данными с рассматриваемой системой, являются вышестоящими системами, а системы, от которых зависит рассматриваемая система (т. Е. Те, от которых моя система инициирует обмен данными), являются нижестоящими системами.

Эта ссылка от ibm, описывающая взаимодействие с одним из их продуктов, подтверждает это представление: интеграция с вышестоящими и нисходящими системами https://www.ibm.com/support/knowledgecenter/en/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html

Вышеуказанная система - это любая система, которая отправляет данные в систему Collaboration Server. Нисходящая система - это система, которая получает данные от системы Collaboration Server.

Учитывая терминологию «вверх по течению» и «вниз по течению», это может помочь провести аналогию с рекой. Если вы отправляете сообщение (данные) в реку, оно течет из восходящего потока (инициатор) в нижний поток (получатель).

Кстати, я обнаружил, что архитекторы и разработчики промежуточного программного обеспечения используют это определение, а веб-разработчики - наоборот (возможно, из-за «загрузки»).

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

Как отмечает @Jack, RFC7230 tools.ietf.org/html/rfc7230#section-2.3 имеет следующее:

Термины «восходящий» и «нисходящий» используются для описания
направленных требований в отношении потока сообщений: все
сообщения передаются от восходящего к нисходящему

Мне было бы интересно посмотреть на голоса, которые являются наиболее распространенным использованием!

Рож
источник
1
Это просто сбивает с толку, потому что вы запутались в этом вопросе. Здесь нет расхождений, только разница в точке зрения.
Мартин Маат
@MartinMaat Я не согласен с вашим первым предложением и согласен с вашим вторым.
Рож
3

Лучший способ думать об этом - думать о реке.

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

Если кто-то уничтожит нижнюю часть реки, это не окажет никакого влияния на верхнюю часть реки. Если кто-то уничтожит часть реки вверх по течению, это повлияет на вниз по течению, то есть не получит воды.

Поэтому нисходящие сервисы зависят от восходящих сервисов. Если вышестоящие сервисы удалены, последующие сервисы не будут работать должным образом.

Gaz_Edge
источник
И для дополнительной ясности; в стандартных отношениях клиент-сервер CRUD оба конца находятся как в восходящем, так и в нисходящем направлении друг к другу. Клиент не может получить какие-либо данные или обновления, если сервер не работает, и сервер не имеет никаких инструкций для выполнения, если нет клиента.
Делиот
1
@ Делиот не согласен. Бэкэнд может иметь много клиентов, но не зависит ни от одного из них. Если вы удалили клиента, бэкэнд все равно будет работать. У клиента может быть много бэкэндов, которые он может использовать. Если один бэкэнд удален без ведома клиента, клиент не может работать должным образом. Клиент вниз по течению. Бэкэнд находится в верхнем течении.
Gaz_Edge
1

Это может быть скорее языковой и географической проблемой, чем технической.

  • Запрос информации идет вверх по течению. Это происходит из системы вниз по течению.

  • Ответ на запрос информации (запрошенная информация) отправляется в нисходящем направлении и отправляется восходящей системой.

Нет никакой разницы между классическим представлением IBM и сегодняшним веб-сообществом.

  • Поставщик услуг (сервер) будет расположен в восходящем направлении по сравнению с потребителем услуг и отправляет информацию в нисходящем направлении потребителю.

  • Потребитель услуг (клиент) будет расположен ниже по сравнению с поставщиком услуг и отправляет запросы поставщику.

Теоретически роли физических систем могут мгновенно измениться, как и направление потока между этими системами. В одноранговой сети это может иметь место.

Условия загрузки и скачивания являются клиент-ориентированными условиями. С точки зрения клиента, запрос загружается, а ответ загружается, что согласуется с метафорой потока.

Мартин Маат
источник