Para un sistema que consiste en múltiples servicios que se llaman entre sí (por ejemplo, Front End -> Backend -> Storage), a menudo escuché a personas que usan terminología como servicios "downstream" o "upstream". No tengo claro qué dirección significan. Los datos fluyen en ambas direcciones. Las solicitudes fluyen de un servicio más orientado al usuario a un servicio de backend, pero las respuestas fluyen en la dirección opuesta, por lo que me parece que se puede argumentar de cualquier manera
architecture
terminology
usuario69715
fuente
fuente
Respuestas:
Los servicios descendentes son los que consumen el servicio ascendente. En particular, dependen del servicio ascendente. Entonces, el front-end está aguas abajo del back-end porque depende del back-end. El back-end puede existir significativamente sin el front-end, pero el front-end no tiene sentido sin el back-end.
La dependencia no tiene que ser tan fuerte como lo hice en el párrafo anterior. En términos más generales, los servicios ascendentes no necesitan saber ni preocuparse por la existencia de servicios descendentes. Los servicios descendentes se preocupan por la existencia de servicios ascendentes, incluso si solo los consumen opcionalmente.
fuente
Desafortunadamente, existen diferencias de opinión sobre el significado de upstream / downstream. Cuando hablo de la arquitectura del sistema, la defino de la siguiente manera:
Dado un sistema de interés, los sistemas que inician el intercambio de mensajes / datos al sistema de interés son sistemas ascendentes, y los sistemas de los que depende el sistema de interés (es decir, aquellos de los cuales mi sistema inicia el intercambio de datos) son sistemas descendentes.
Este enlace de ibm que describe las interacciones con uno de sus productos corrobora esta visión: Integración con sistemas ascendentes y descendentes https://www.ibm.com/support/knowledgecenter/en/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html
Dada la terminología 'aguas arriba' y 'aguas abajo', puede ayudar hacer una analogía con un río. Si suelta un mensaje (datos) en el río, fluye aguas arriba (iniciador) a aguas abajo (receptor).
Como anécdota, descubrí que los arquitectos y los desarrolladores de middleware usan esta definición y los desarrolladores web lo contrario (tal vez debido a la "carga").
Con las líneas de tiempo del evento, un evento está en sentido ascendente cuando ocurre antes de un punto en la línea de tiempo (es decir, desencadena otro evento) y en sentido descendente cuando ocurre después (es decir, recibe el evento). Lo que está en sentido ascendente y descendente en una secuencia de eventos, por lo tanto, depende de dónde se encuentre en la línea de tiempo. Un evento puede ser tanto aguas abajo como aguas arriba, dependiendo de si su punto de partida es antes o después.
Como @Jack señala RFC7230 tools.ietf.org/html/rfc7230#section-2.3 tiene esto:
Me gustaría ver en los votos, ¡cuál es el uso más común!
fuente
La mejor manera de pensar en esto es pensar en un río.
La parte aguas abajo del río no puede obtener agua a menos que provenga de aguas arriba, es decir, aguas abajo depende de aguas arriba para su agua.
Si alguien destruye la parte río abajo del río, esto no tendría impacto río arriba. Si alguien destruyera la parte aguas arriba del río, esto impactaría aguas abajo, es decir, no recibiría agua.
Por lo tanto, los servicios aguas abajo dependen de los servicios aguas arriba. Si se eliminan los servicios ascendentes, los servicios descendentes no funcionarán correctamente.
fuente
Esto puede ser más un problema lingüístico y geográfico que técnico.
La solicitud de información va en sentido ascendente. Proviene de un sistema aguas abajo.
La respuesta a la solicitud de información (la información solicitada) va en sentido descendente y es enviada por un sistema en sentido ascendente.
No hay diferencia entre la vista clásica de IBM y el uso actual de los términos por parte de la comunidad web.
Un proveedor de servicios (servidor) se ubicará aguas arriba en comparación con un consumidor de servicios y enviará información aguas abajo al consumidor.
Un consumidor de servicio (cliente) se ubicará en sentido descendente en comparación con el proveedor de servicio y enviará solicitudes en sentido ascendente al proveedor.
Teóricamente, los roles de los sistemas físicos podrían cambiar instantáneamente y también lo haría la dirección de la corriente entre esos sistemas. En una red de igual a igual, este puede ser el caso.
Los términos de carga y descarga son términos centrados en el cliente. Desde la perspectiva del cliente, se carga una solicitud y se descarga una respuesta, que es coherente con la metáfora de la secuencia.
fuente