Быстрый, эффективный обмен сообщениями между процессами - PullRequest
0 голосов
/ 22 ноября 2010

Я работаю над системой, которая состоит из цепочки компонентов преобразования данных. Каждый из этих компонентов выполняет очень простую задачу над объектом, прежде чем передать его следующему компоненту в цепочке. Каждый из этих компонентов работает как служба Windows. Я разработал систему таким образом, чтобы улучшить обслуживание и расширить возможности в будущем.

В данный момент я передаю эти объекты между компонентами, используя очереди сообщений, но это быстро становится проблемой. Скорее всего, будут десятки сервисов, постоянно читающих и пишущих в очереди сообщений. Как я понимаю, все сообщения сериализуются и записываются на диск, что в моей системе, где пропускная способность будет очень высокой, кажется очень расточительным.

Существуют ли какие-либо другие установленные системы, которые я мог бы использовать для межпроцессного взаимодействия, которое позволяет избежать накладных расходов на постоянное чтение и запись на диск?

Спасибо.

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

Если вам не требуется гарантированный надежный или транзакционный обмен сообщениями, вы сможете значительно повысить производительность в System.Messaging, установив для Message.Recoverable свойства значение false.Кстати, по умолчанию это уже неверно, поэтому ваше предположение об использовании диска может быть неправильным, если исходное решение использует MSMQ.

Тип: System.Boolean

true, если доставкасообщение гарантировано (путем сохранения сообщения на диске во время пути);false, если доставка не гарантирована.По умолчанию установлено значение false.

Решение best зависит от требований вашей службы.Вы можете использовать это, или вам может потребоваться какая-то сервисная шина с чрезвычайно низкой задержкой (обычно это коммерческий продукт), или что-то среднее между тем, что вы создаете сами.

1 голос
/ 02 декабря 2010

ZeroMQ - реализация очереди сообщений только для памяти.

1 голос
/ 22 ноября 2010
...