asynchronous - ZeroMQ异步http请求和消息的区别?
问题描述
在 ZeroMQ 中发送数据时,使用异步 HTTP 请求与使用消息有何不同?
解决方案
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 可用于开发人员想要的任何端口(如果他们想要安静的生活,请遵守正常的端口分配规则)。
推荐阅读
- kubernetes - 字节数组作为 kubernetes 的秘密?
- python - 在字符串中的关键字之前删除 '\n'
- python - python抓取一个类href
- amazon-web-services - AWS Cloudfront 防止钱包被拒绝?
- react-native - 更新数组后,firestore 文档 ID 将未定义
- javascript - 如何显示来自 Rails AJAX JSON 响应的文本 - Javascript 正在返回 [object HTMLDocument]
- in-app-billing - 在哪里可以找到 Google Play 结算库的最新文档?
- python - 如何解决,步骤 #3 - “unit-test-on-operator-code”:来自守护进程的错误响应:apache/airflow 的清单:找不到主
- excel - Excel:计算日期之间的内容
- dictionary - Go 引擎盖下的地图