Какую библиотеку я могу использовать для простой и легкой передачи сообщений?

Я начну проект, который требует связи между распределенными узлами (проект на C++). Мне нужна легкая библиотека передачи сообщений для передачи очень простых сообщений (в основном просто строк текста) между узлами. Библиотека должна иметь следующие характеристики:

  1. Не требует внешней настройки. Мне нужно иметь возможность запускать все в моем коде - я не хочу требовать, чтобы пользователь устанавливал какие-либо пакеты или редактировал какие-либо файлы конфигурации (кроме списка IP-адресов и портов для подключения).

  2. Базовый протокол, который использует библиотека, должен быть TCP (или, если это UDP, библиотека должна гарантировать возможное получение сообщения).

  3. Библиотека должна иметь возможность отправлять и получать произвольно большие строки (думаю, до 3 ГБ+).

Библиотека не должна поддерживать какие-либо механизмы безопасности, отказоустойчивость или шифрование — мне просто нужно, чтобы она была быстрой, простой и удобной в использовании. Я рассматривал MPI, но пришел к выводу, что для моего проекта потребуется слишком много настроек на компьютере пользователя.

Какую библиотеку вы бы порекомендовали для такого проекта? Я бы свернул свой собственный, но из-за нехватки времени я не думаю, что это будет осуществимо.


person Mike    schedule 10.04.2010    source источник


Ответы (3)


Взгляните на ØMQ, то есть ZeroMQ.

person Nikolai Fetissov    schedule 10.04.2010
comment
Я смотрю на 0mq, и кажется, что он противоречит требованию 1 в вопросе. Я что-то пропустил? - person Liang; 08.08.2017
comment
Вы пропустили семь лет с момента публикации этого вопроса :) - person Nikolai Fetissov; 09.08.2017
comment
@Liang Взгляните на аналогичную библиотеку nanomsg или nng. Не требует внешней настройки. - person sg7; 09.12.2017

Apache Qpid реализует серверные и клиентские библиотеки для Расширенный протокол очереди сообщений. Он имеет множество функций, из которых вы можете использовать следующие:

  1. Клиент может подключиться к брокеру анонимно, указав IP/порт брокера
  2. Транспортный протокол является TCP или SCTP
  3. Он поддерживает большие сообщения, использующие семантику в стиле pull или push.
  4. Это быстро
  5. Usage is simple and available in C++:
person clyfe    schedule 10.04.2010

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

Он отвечает всем вашим требованиям:

1)  There is no external setup required
2)  TCP underlying protocol is a primary one. 
3)  Message sizes supported by nanomsg are expressed as a 64-bit integer.
 (The default message size is 1024kB. This can be easily changed by API call to 
 support any size. The maximum size is limited only by available addressable memory!)

Другой хорошей библиотекой, которую стоит рассмотреть, является nng. Сейчас он находится в стадии бета-тестирования.

person sg7    schedule 20.11.2017