Яким способом користуються послуги низхідної та нижньої течії?


45

У системі, що складається з декількох служб, що дзвонять один одному (наприклад, Front End -> Backend -> Storage), я часто чув людей, які використовують термінологію, таку як послуги "низхідній лінії" або "вище за течією". Мені не ясно, в якому напрямку це означає. Дані потоки в обох напрямках. Запити переходять від більш орієнтованого на користувача більш сервісного сервера, але відповіді протікають у зворотному напрямку, тому мені здається, що в будь-якому випадку можна сперечатися


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

Вища система - це будь-яка система, яка надсилає дані до системи сервера співпраці. Система вниз за течією - це система, яка отримує дані від системи сервера співпраці.

Враховуючи термінологію "вище за течією" та "за течією", це може допомогти зробити аналогію з річкою. Якщо ви кинете повідомлення (дані) в річку, воно перетікає з верхнього потоку (ініціатора) вниз за течією (приймач).

Випадково я виявив, що архітектори та розробники середнього програмного забезпечення використовують це визначення, а веб-розробники навпаки (можливо, через "завантаження").

З часовими рамками події подія знаходиться вище за течією, коли вона відбувається перед точкою на часовій шкалі (тобто запускає іншу подію) і нижче за течією, коли вона відбувається після цього (тобто отримана подія). Що є вище за течією і що знаходиться за течією в послідовності подій, отже, залежить від того, де ви знаходитесь на часовій шкалі. Подія може бути як за течією, так і за течією, залежно від того, чи є початковою точкою до або після неї.

Як зазначає @Jack, RFC7230 tools.ietf.org/html/rfc7230#section-2.3 має таке:

Терміни "висхідний" та "низхідний" використовуються для опису
вимог щодо спрямованості стосовно потоку повідомлень: усі
повідомлення протікають від висхідного до нижнього потоку

Мені було б цікаво побачити на голосах, яке найпоширеніше використання!


1
Це просто заплутано, тому що ви плутаєте себе в цьому питанні. Тут немає розбіжностей, лише різниця в точці зору.
Мартін Маат

@MartinMaat Я не погоджуюся з вашим першим реченням і погоджуюся з вашим другим.
roj

3

Найкращий спосіб подумати над цим - подумати про річку.

Нижня частина річки не може отримати будь-яку воду, якщо вона не надходить, тобто нижня течія не залежить від верхньої течії її води.

Якби хтось знищив нижню частину річки, це не впливало б на течію. Якби хтось зруйнував верхню частину річки, це вплине на течію за течією, тобто не отримає води.

Тож сервіси вниз за течією залежать від сервісів вище за течією. Якщо сервіси вгору за течією видаляються, служби нижче за потоком не працюватимуть належним чином.


І для додаткової трохи ясності; у стандартних відносинах клієнт-сервер CRUD обидва кінці розташовуються як вище, так і за течією один до одного. Клієнт не може отримати жодних даних або оновлень, якщо сервер не працює, і сервер не має інструкцій виконувати, якщо клієнта немає.
Delioth

1
@ Деліот не погоджується. Захід може мати багато клієнтів, але це не залежить від жодного з них. Якщо ви видалили клієнта, бекенд все ще запрацює. У клієнта може бути багато резервних копій, які він може використовувати. Якщо один бекенд видалено без відома клієнта, клієнт не може працювати належним чином. Клієнт знаходиться за течією. Вихідний день є вище за течією.
Gaz_Edge

1

Це може бути скоріше мовною та географічною проблемою, ніж технічною.

  • Запит на інформацію йде вище за течією. Він походить від нижньої системи.

  • Відповідь на запит на інформацію (запитувана інформація) надходить за течією та надсилається системою вище за потоком.

Не існує різниці між класичним уявленням IBM і використанням сьогодні термінами веб-спільноти.

  • Постачальник послуг (сервер) буде розташований вище за течією порівняно зі споживачем послуги та надсилає інформацію споживачеві нижче.

  • Споживач послуги (клієнт) буде розташований нижче за течією порівняно з постачальником послуг і надсилатиме запити зверху до поточного постачальника.

Теоретично ролі фізичних систем можуть миттєво змінюватися, а також напрямок потоку між цими системами. У мережі однорангових це може бути так.

Умови завантаження та завантаження - це умови, орієнтовані на клієнта. З точки зору клієнта завантажується запит і завантажується відповідь, що відповідає метафорі потоку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.