大多数现代API都是使用JSON构建的,通过HTTP进行请求/响应消息传递。由于ZeroMQ是通过TCP,可以在ZeroMQ上构建基于JSON的API吗?如果是这样,优势是什么?用途是
开发人员为与一个或多个网络服务器通信的客户端/设备编写应用程序,
网络服务器与网络服务器进行通信。
答案 0 :(得分:15)
是的,基于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是受控环境中通信的绝佳选择,因为它具有并发功能和明确的使用模式。