У меня есть необходимость создать собственный протокол связи в распределенной системе. Логика на отдельных узлах реализована в C ++.
В моем прошлом опыте, когда мне приходилось делать это на Java, я полагался на Netty. Есть ли подобная инфраструктура / библиотека в C ++, которая позволяет мне реализовывать свои собственные протоколы?
я смотрел на ZeroMQ
кратко. Тем не менее, в документах, которые я нашел, кажется, слишком подчеркивается использование предопределенных шаблонов, таких как REQ
/REP
, PUB
/SUB
и т.п. Есть ли более фундаментальный слой на ZeroMQ это не заставляет меня использовать эти шаблоны, но все же обеспечивает достаточную поддержку для реализации пользовательских протоколов связи?
Если есть другие библиотеки (слышал о Boost.Asio
), которые лучше подходят, то это тоже приветствуется.
ZeroMQ
или же nanomsg
фреймворки (как крутые инструменты без посредников) делают вас отличным уровнем ввода-вывода для обмена сообщениями, и вы можете забыть об их умных внутренностях.
Вы можете сделать любую прокотол-абстракцию самостоятельно.
Если у вас сложилось впечатление, что PUB / SUB находится в центре внимания ZeroMQ, похоже, вы упустили их величайшие способности.
У вас была возможность прочитать в какой-либо книге Питера Хиндженса о продвинутых принципах проектирования нулевой копии, нулевой энергии, нулевого разделения, нулевой задержки; o)?
Стоит потратить время. [Больше драгоценных камней включены.]
Очень ориентированные на PROTOCOL подходы к дизайну могут очень помочь в вашем own-protocol
-ФСА дизайн & проверки, тем больше, если вы стремитесь к профессиональным, многопоточным, гетерогенным, распределенным, масштабируемым, самовосстанавливающимся, быстрым формам общения с малыми задержками.
Возможно, вы захотите взглянуть на промежуточное программное обеспечение, такое как CORBA (доступно много разных брокеров, но я бы не рекомендовал его использовать), ICE от ZeroC, протокольные буферы от Google, SOAP или даже RPC. Существуют разные плюсы и минусы использования того или иного, но я бы порекомендовал использовать существующее промежуточное ПО, а не разрабатывать свое собственное. Вы можете начать здесь промежуточное программное обеспечение в Википедии а затем решите, какой из них лучше для ваших нужд.