首页 > 解决方案 > ZeroMQ异步http请求和消息的区别?

问题描述

在 ZeroMQ 中发送数据时,使用异步 HTTP 请求与使用消息有何不同?

标签: asynchronouspython-requestszeromqconceptualgrequests

解决方案


http 请求只是在两台机器(客户端和服务器)之间使用通过 IP 使用的超文本传输​​协议。它可用于在任一方向移动数据。对于这些数据可以是什么没有特别的限制。异步请求只是请求者不费心等待发出请求的回复的请求。它会使用某种机制来与请求会合,只要碰巧出现。

通过 ZeroMQ 发送消息可能有点相似,特别是 REQ/REP 模式(请求、回复)。与 http 请求类似,请求者将发送某种消息,而回复者将以某种方式回复,并且严格按照这种模式。

ZeroMQ 使用自己的协议 zmtp 来移动消息。同样,没有什么真正限制消息中的数据。ZeroMQ 本质上是异步的——它实现了 Actor 编程模型(尽管我注意到某些语言中的一些实现方式已经侵蚀了 ZeroMQ 的简单性,即适合语言自己的异步方式,而不是使用 ZeroMQ 提供的轮询函数)。

然而,ZeroMQ 在 zmtp 之上构建了比 req/rep 更多的数据分发模式,例如 pub/sub、dealer/router,而 http 根本无法与之对应。进一步的区别是 ZeroMQ 可以使用 IP、进程间通信或内存中传输;这使得它非常适合应用程序内使用和机器间分布式应用程序。我想也可以通过 ipc 联系网络服务器,但我从未听说有人愿意这样做。Http 预计将用于特定端口(例如端口 80),而 ZMQ 可用于开发人员想要的任何端口(如果他们想要安静的生活,请遵守正常的端口分配规则)。


推荐阅读