En informática , un mensaje activo es un objeto de mensajería capaz de realizar procesamiento por sí mismo. Esto contrasta con los sistemas de mensajería tradicionales basados en computadoras, en los que los mensajes son entidades pasivas sin capacidad de procesamiento. [ 1 ]
Por ejemplo, un mensaje activo puede enviar no solo el dato "5", sino también la función que determina qué hacer con ese 5 (como multiplicarlo por 2).
Los mensajes activos pueden utilizarse para optimizar las comunicaciones de red, como reducir la latencia eliminando la sobrecarga de software asociada al almacenamiento en búfer y proporcionando a las aplicaciones acceso directo a nivel de usuario al hardware de red. [ 2 ] [ 3 ]
Programación de memoria distribuida
Los mensajes activos son un elemento básico de comunicación que permite aprovechar al máximo el rendimiento y la flexibilidad de las interconexiones informáticas modernas. Suelen clasificarse como uno de los tres tipos principales de programación de memoria distribuida , junto con el procesamiento paralelo de datos y el paso de mensajes . Se considera que los mensajes activos son, en realidad, un mecanismo de bajo nivel que permite implementar de forma eficiente el procesamiento paralelo de datos o el paso de mensajes.
La idea básica es que cada mensaje tiene una cabecera que contiene la dirección o el índice de un manejador en el espacio de usuario que se ejecutará al recibir el mensaje, y el contenido del mensaje se pasa como argumento al manejador. Los primeros sistemas de mensajes activos transmitían la dirección real del código remoto a través de la red; sin embargo, este enfoque requería que el iniciador conociera la dirección de la función del manejador remoto al componer un mensaje, lo que puede ser bastante limitante incluso dentro del contexto de un modelo de programación SPMD (y generalmente depende de la uniformidad del espacio de direcciones , que está ausente en muchos sistemas modernos). Las interfaces de mensajes activos más recientes requieren que el cliente registre una tabla con el software en el momento de la inicialización que asigna un índice entero a la dirección local de una función de manejador; en estos sistemas, el remitente de un mensaje activo proporciona un índice en la tabla del manejador remoto, y al recibir el mensaje activo, la tabla se utiliza para asignar este índice a la dirección del manejador que se invoca para procesar el mensaje. [ 4 ]
Otras variantes de mensajes activos transportan el código en sí, no un puntero al código. El mensaje suele contener datos. Al llegar al receptor, se adquieren más datos y se realiza el cálculo del mensaje activo, utilizando tanto los datos del mensaje como los del nodo receptor. Esta forma de mensajería activa no se limita a SPMD , aunque el emisor y el receptor deben compartir ciertas nociones sobre qué datos pueden accederse en el nodo receptor.
Integración, uso para microservicios, orquestación, arquitectura ESB
En el proyecto SwarmESB, una implementación de nivel superior para mensajes activos también se denomina comunicación de enjambre . El modelo básico de mensajes activos se amplía con nuevos conceptos y se utiliza JavaScript para expresar el código de dichos mensajes.
Véase también
Referencias
- ↑ "La semántica operacional de un sistema de mensajería activo" , Portal ACM. Consultado el 20 de julio de 2009.
- ↑ Thorsten von Eicken, David E. Culler, Seth Copen Goldstein, Klaus Erik Schauser, " Mensajes activos: un mecanismo para la comunicación y computación integradas ", Actas del 19º simposio internacional anual sobre arquitectura de computadoras (ISCA'92), mayo de 1992, ACM.
- ↑ Alan M. Mainwaring y David E. Culler, "Active Message Applications Programming Interface and Communication Subsystem Organization" (Especificación AM-2), Departamento de EECS, Universidad de California, Berkeley, Informe técnico n.º UCB/CSD-96-918 , octubre de 1996.
- ↑ Dan Bonachea y Paul H. Hargrove. "Especificación GASNet, v1.8.1" . Informe técnico del Laboratorio Nacional Lawrence Berkeley LBNL-2001064 , agosto de 2017.
Fuentes y enlaces externos
- https://web.archive.org/web/20070610055547/http://www.tc.cornell.edu/Services/Education/Topics/Parallel/Distributed/%2B6.3%2BActive%2BMessages.htm
- https://github.com/salboaie/SwarmESB/
- GASNet : una capa de middleware de comunicaciones que incluye mensajes activos y acceso remoto a memoria (RMA), implementada sobre una amplia variedad de hardware de red.
- AMUDP - Mensajes activos (AM-2) sobre UDP (un componente estándar de la pila de protocolos TCP/IP )
- AMMPI - Mensajes activos (AM-2) sobre MPI
- Comunicación entre procesos
- Esbozos de ingeniería de software