Теоретическое обоснование множественных программных магистралей сообщений |
Идея множественных магистралей сообщений была предложена Иваном, мною подхвачена и некоторыми личностями :) опровергнута. Для того чтобы в будущем (если эта идея, как я надеюсь, будет принята общественностью) не возникало разночтений, попытаюсь это дело слегка задокументировать в своей интерпретации.
В современных ОС межпроцессовое взаимодействие осуществляется на основе многих методов, одним из которых является метод передачи сообщений между процессами с помощью диспетчера сообщений.
Обмен является асинхронным - т. е. приложение SENDER передаёт сообщение MSG процессу DEST путём его передачи диспетчеру сообщений MSGMG. MSGMGR, в свою очередь, помещает сообщение в конец очереди сообщений MQ. Очередь организована по принципу FIFO.
Периодически MSGMGR проверяет MQ на наличие сообщений, и при наличии таковых, доставляет их адресатам. У адресата это сообщение попадает в фильтр сообщений MF. MQ используется одна для всех сообщений и управляется на уровне ядра.
Итак, сформулируем задачи системы передачи сообщений и проведём анализ единой магистрали (SSB - Single Software Bus) и множественных магистралей (MSB - Multiply Software Bus).
Пункту 1 единая магистраль удовлетворяет. Она позволяет осуществлять межпроцессовое сообщение. Но возникает "но": передачу больших объёмов данных реализовать не позволяет. Почему? Да потому что пункт 3 требует единого аппарата (протокола) передачи и данных!
Рассмотрим практический пример:
Выход: применение буферизации сообщений в более медленных "обработчиках", по это вызывает дополнительный расход памяти.
Альтернативный подход: реализация MQ как магистрали управляющих сообщений, и осуществление передачи потоковых данных каким-либо другим образом. Но это противоречит принципу 3 - единый способ передачи информации.
SSB не позволяет обмениваться сообщениями между разными пользователями и между приложениями в распределённых системах. Почему? Да потому что SSB - понятие локальное. На каждой системе по своей очереди, а обмен с помощью мостов между этими системами - это уже MSB.
Выше уже были изложены соображения по поводу необходимости введения альтернативных методов передачи потоковых данных, а это противоречит самому принципу: единый способ передачи и представления информации
Выводы:
Реализация межпроцессного взаимодействия как в SSB, так и в МSB удовлетворяет перечисленным выше принципам, причём МSB предоставляет разработчику гораздо больше средств:
При МSB возникает новое понятие - единое адресное пространство. Все магистрали имеют уникальный составной идентификатор, и с точки зрения приложения нет абсолютно никакой разницы между локальной магистралью и удалённой (сетевой). Это позволяет передавать данные и локально, и удалённо, применяя единые методы.
Как уже упоминалось ранее, МSB позволяет применить единые методы взаимодействия как при пакетных данных, так и при потоковых данных. Это гарантирует и единое представление информации.
Выводы: