Активное сообщение (в вычислительной технике ) — это объект обмена сообщениями, способный выполнять обработку самостоятельно. Это облегченный протокол обмена сообщениями, используемый для оптимизации сетевых коммуникаций с акцентом на сокращение задержек путем устранения программных издержек, связанных с буферизацией, и предоставления приложениям прямого доступа на уровне пользователя к сетевому оборудованию. [1] [2] Это контрастирует с традиционными компьютерными системами обмена сообщениями , в которых сообщения являются пассивными сущностями без вычислительной мощности. [3]
Активные сообщения — это примитивные коммуникации для использования полной производительности и гибкости современных компьютерных соединений. Их часто классифицируют как один из трех основных типов программирования распределенной памяти, два других — параллельная передача данных и передача сообщений . Существует мнение, что активные сообщения на самом деле являются механизмом более низкого уровня, который можно использовать для эффективной реализации параллельной передачи данных или сообщений.
Основная идея заключается в том, что каждое сообщение имеет заголовок, содержащий адрес или индекс обработчика пользовательского пространства, который должен быть выполнен по прибытии сообщения, при этом содержимое сообщения передавалось обработчику в качестве аргумента. Ранние системы активных сообщений передавали фактический адрес удаленного кода по сети, однако этот подход требовал, чтобы инициатор знал адрес функции удаленного обработчика при составлении сообщения, что может быть довольно ограничивающим даже в контексте модели программирования SPMD (и, как правило, полагается на единообразие адресного пространства, которое отсутствует во многих современных системах). Более новые интерфейсы активных сообщений требуют, чтобы клиент регистрировал таблицу с программным обеспечением во время инициализации, которое сопоставляет целочисленный индекс с локальным адресом функции обработчика; в этих системах отправитель активного сообщения предоставляет индекс в таблицу удаленного обработчика, и по прибытии активного сообщения таблица используется для сопоставления этого индекса с адресом обработчика, который вызывается для обработки сообщения. [4]
Другие вариации активных сообщений [ требуется ссылка ] несут сам фактический код, а не указатель на код. Сообщение обычно несет некоторые данные. По прибытии на принимающую сторону, извлекаются дополнительные данные, и выполняется вычисление в активном сообщении, используя данные в сообщении, а также данные в принимающем узле. Эта форма активного обмена сообщениями не ограничивается SPMD , хотя отправитель и получатель должны разделять некоторые представления о том, к каким данным можно получить доступ на принимающем узле.
Реализация более высокого уровня для активных сообщений также называется Swarm communication в проекте SwarmESB. Базовая модель активных сообщений расширена новыми концепциями, а Java Script используется для выражения кода активных сообщений.