Кричите, если есть что-то лучшее, что мы должны рассмотреть:
Я ищу очень быстрый и простой способ получить несколько программ (например, 5) — каждая из которых работает на отдельных узлах в частном облаке OpenStack для общения друг с другом.
Вот первая идея, которая у меня есть. Но если вам есть что предложить. Прокричать.
Friendly Wrapper для уровня сокетов UDP:
Кодировщик / Декодер для структурных данных C ++:
Для сериализации подойдет практически все, что связано с правильными языковыми привязками. Буферы протокола Google не зависят от языка, доступно множество привязок. Единственное, чего следует избегать, так это сериализации, встроенной в ваш исходный код (например, сериализация Boost — это / was), потому что тогда вы не сможете легко перенести это на другой язык.
Для передачи сообщений ZeroMQ, NanoMsg являются хорошим выбором. Тем не менее, я думаю, что это действительно сводится к
Что касается ZeroMQ (и NanoMsg), так это то, что (AFAIK) нет реального способа узнать судьбу сообщения при возникновении ошибки. Например, в ZeroMQ, если вы отправляете сообщение, а получатель просто работает и подключен, сообщение передается по соединению. Конец отправки теперь думает, что работа выполнена, сообщение доставлено. Однако, если и до тех пор, пока принимающая сторона на самом деле не вызывает zmq_recv()
и полностью обрабатывает полученное сообщение, оно все равно может потеряться в случае сбоя процесса принимающей стороны, сбоя питания и т. д. Это происходит потому, что до тех пор, пока оно не будет использовано, сообщение сохраняется в ОЗУ в потоке выполнения ZeroMQ (внутри соответствующий Context()
домен контроля экземпляра).
Вы можете объяснить это, имея какое-то подтверждающее сообщение, отправляющееся в обратном направлении, время ожидания и т. Д. Но это начинает нервничать, и вам будет лучше с чем-то вроде RabbitMQ.
С величайшим уважением к работе Маргарет Хэмилтон в программе «Аполлон».
Прокричать.
Уважаемый доктор.,
Есть много особенностей, которые станут важными для профессионального решения, которые не были упомянуты в списке покупок выше.
Если пример Apollo AGC может помочь здесь, тем лучше.
Пакет в поисках:
если все, что звучит важно для ваших дальнейших усилий в Draper Lab, ZeroMQ будет плавно вписываться (если некоторые показатели латентности / производительности, возможно, потребуется повысить на стероидах, поскольку они более важны, чем зрелая смесь, описанная выше, может также понравиться рассмотреть другого ребенка Мартина Сустрика) моложе его ZeroMQ — то nanomsg инструменты ).
Во всяком случае, если у вас действительно есть (Соч.) «… много циклов и памяти …«, просто впустите меня, у меня есть много TFLOP для обработки, если вы позволите, в свободное время :o)
Учитывая недавние комментарии, позвольте мне добавить замечание об использовании опубликованной NACK-ориентированной надежной многоадресной передачи (NORM). norm://
транспортный класс, который может помочь вашему чистому PUB/SUB
— замыслы дизайна, для которых, кажется, это можно исправить желание «предпочитаю не терять сообщения«В противном случае это не обойдется стороной, согласно Zen-of-Zero, который оставляет все такие операции в коде приложения на стороне пользователя и распределенная система поведение.