大多数现代API都是使用JSON构建的,并带有通过HTTP的请求/响应消息传递。由于ZeroMQ是通过TCP进行的,是否可以在ZeroMQ上构建基于JSON的API?如果是这样,优势将是什么?用途是

  • 开发人员为与一个或多个Web服务器通信的客户端/设备编写应用程序,以及
  • Web服务器与Web服务器进行通信。
  • 最佳答案

    是的,基于json的API可以构建在ZeroMQ之上,而不是HTTP。它将需要REQ/REP套接字。但是,这似乎不是一个好选择。

    JSON + HTTP方法的主要优点是可移植性。几乎所有编程环境均支持即开即用的JSON + HTTP,而ZeroMQ并未得到如此广泛的支持(例如,浏览器JS不支持)。而且,ZeroMQ的安装并非如此轻松,因此服务消费者可能不会对此选择感到满意。

    另一方面,ZeroMQ的主要优点是性能:如果您需要每秒推送许多兆字节(或可能是千兆字节)的数据,那就太好了。 JSON编码/解码确实非常快,但是大小对于此类任务也很重要。任何二进制序列化框架似乎都是一个更好的选择,有很多:protobuf,thrift,BSON,kryo,avro等。

    因此,我将继续使用JSON + HTTP作为Web服务的API:现代的HTTP服务器工具可提供出色的性能和可伸缩性。 ZeroMQ由于具有并发功能和定义明确的使用模式,因此是在受控环境中进行通信的理想选择。

    关于ZeroMQ上基于JSON的API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14274930/

    10-13 09:30