C++ 在C+中构建自定义通信协议+;对于分布式系统

C++ 在C+中构建自定义通信协议+;对于分布式系统,c++,networking,boost,netty,zeromq,C++,Networking,Boost,Netty,Zeromq,我需要在分布式系统中构建自定义通信协议。单个节点的逻辑在C++中实现。p> 在我过去的经验中,当我不得不用Java做这件事时,我依靠Netty。是否有类似的框架/库在C++中允许我实现自己的自定义协议? 我简要地看了一下ZeroMQ。然而,在我发现的文档中,似乎过分强调使用pred定义的模式,如REQ/REP,PUB/SUB等。ZeroMQ上是否有一个更基础的层,它不强迫我使用这些模式,但仍然提供足够的支持来实现自定义通信协议 如果有其他库(听说过Boost.Asio)更适合使用,那么这也是受欢

我需要在分布式系统中构建自定义通信协议。单个节点的逻辑在C++中实现。p> 在我过去的经验中,当我不得不用Java做这件事时,我依靠Netty。是否有类似的框架/库在C++中允许我实现自己的自定义协议?

我简要地看了一下ZeroMQ。然而,在我发现的文档中,似乎过分强调使用pred定义的模式,如
REQ
/
REP
PUB
/
SUB
等。ZeroMQ上是否有一个更基础的层,它不强迫我使用这些模式,但仍然提供足够的支持来实现自定义通信协议


如果有其他库(听说过Boost.Asio)更适合使用,那么这也是受欢迎的。

您可能希望研究诸如CORBA(有许多不同的代理可用,但我不建议使用它)、ZeroC的ICE、Google的协议缓冲区、SOAP甚至RPC之类的中间件。使用一种或另一种中间件有不同的优缺点,但我建议使用现有的中间件,而不是开发自己的中间件。您可以从这里开始,然后决定哪一个更适合您的需要。

ZeroMQ
nanomsg
框架(作为酷的、无代理的工具)使您成为一个优秀的消息IO层,您可能会忘记它们的智能内在特性

你可以自己做任何procotol抽象

如果你有一个印象,那就是酒吧/酒吧是ZeroMQ的焦点,似乎你错过了他们最强大的力量

你有没有机会读过Pieters Hinjens关于零拷贝、零能耗、零共享、零延迟背后的先进设计原则的书;o) ?

值得花时间。[包括更多宝石。]


非常面向协议的设计方法可能对您的
自己的协议
-FSA设计和验证有很大帮助,如果您致力于专业级、多线程、异构、分布式、可扩展、自愈、快速、低延迟的正式通信模式,则会更有帮助。

ProtocolBuffer是一种数据协议,不是一个通信协议框架。我想你错过了我的问题。因为我最熟悉Netty,你能用Netty的特性来解释ZeroMQ吗?特别是,如果我想在ZrOMQ上实现一个类似于SPDY的自定义双向双工协议,那么这是可能的吗?@ Ajay:如果一个人可以为H/HIS协议定义一个完整的(分布式的)有限状态自动机,ZrOMQ/NANOMSG将不费力地无缝地承载IOS。正如所观察到的,大多数mis概念都是在FSA设计方面,而不是在通信/消息传递层。有一次我被问到“解释ZeroMQ的网络特征?”请原谅我敢向任何人保证用摩尔斯电码字母表中的术语解释法语发音中的美味佳肴。抽象思维的世界(设计原则非常抽象)根本就不是这样的。皮蒂,没错。你指的是彼得的哪本书?他写过几本关于ZeroMQ?Asio的书,这本书很棒,但它是在套接字层运行的,它没有实现更高级别的协议。如果你对此没意见,试试Asio。这不是一个适合你的解决方案,但是你提到的模式是ZMQ的基础层,你可以用这些工具构建你想要的通信模式。。。事实上,这是完成这类任务的一种非常有效的方法,但你必须理解它并接受它,如果你已经有了一个需要更基本方法的体系结构,那么它可能不适合你。nanomsg有用于编写协议的紧凑接口。我写了《酒吧/酒吧和巴士的融合》以满足我的需要。您可以阅读详细信息。