您现在的位置是:首页 >学无止境 >ZeroMQ:不一样的套接字。网站首页学无止境

ZeroMQ:不一样的套接字。

ALex_zry 2024-06-17 18:01:02
简介ZeroMQ:不一样的套接字。

ZMQ连接和传统的TCP连接是有区别的,主要有:

  • ● 使用多种协议,inproc(进程内)、ipc(进程间)、tcp、pgm(广播)、epgm1
  • ● 当客户端使用zmq_connect()时连接就已经建立了,并不要求该端点已有某个服务使用zmq_bind()进行了绑定2
  • ● 连接是异步的,并由一组消息队列做缓冲;3
  • ● 连接会表现出某种消息模式,这是由创建连接的套接字类型决定的;
  • ● 一个套接字可以有多个输入和输出连接;
  • ● ZMQ没有提供类似zmq_accept()的函数,因为当套接字绑定至端点时它就自动开始接受连接了;
  • ● 应用程序无法直接和这些连接打交道,因为它们是被封装在ZMQ底层的。4


  1. inproc协议是ZeroMQ消息传递库中的一种协议,它是一种本地进程间通信协议。使用inproc协议,可以在同一台计算机上的不同进程之间进行高效的通信,而无需通过网络进行通信。inproc协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。inproc协议是ZeroMQ中最快的协议之一,因为它不需要通过网络进行通信,而是直接在内存中传递消息。
    ipc协议是ZeroMQ消息传递库中的一种协议,它是一种进程间通信协议。使用ipc协议,可以在同一台计算机上的不同进程之间进行高效的通信,而无需通过网络进行通信。ipc协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。
    tcp协议是一种网络传输协议,它是Internet协议族中的一员。tcp协议提供了一种可靠的、面向连接的、基于字节流的传输服务,它可以保证数据的可靠传输,同时还提供了流量控制和拥塞控制等功能。tcp协议是Internet上应用最广泛的协议之一,它被用于各种类型的应用程序,例如Web浏览器、电子邮件客户端、文件传输协议(FTP)客户端等。
    pgm协议是ZeroMQ消息传递库中的一种协议,它是一种组播协议。使用pgm协议,可以在局域网中的多个计算机之间进行高效的通信,而无需向每个计算机单独发送消息。pgm协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。
    epgm协议是ZeroMQ消息传递库中的一种协议,它是一种增强的组播协议。与pgm协议相比,epgm协议提供了更高的可靠性和更低的延迟,同时还支持多播组的动态加入和退出。epgm协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。 ↩︎

  2. 这也是我在使用过程中一直疑惑的问题,我使用断言命令assert监测zmq_connect的返回结果时,在我没启动服务器的情况下并没有按照预期结束,让我一度怀疑在哪里出现了错误。 ↩︎

  3. 同步链接和异步链接是指在网络通信中,客户端和服务器之间建立连接的方式。
    同步链接是指客户端在发送请求后,必须等待服务器响应后才能继续执行后续操作。在同步链接中,客户端和服务器之间的通信是阻塞的,即客户端必须等待服务器响应后才能继续执行后续操作。同步链接通常用于需要精确控制请求和响应顺序的场景,例如在线游戏中的玩家移动操作。
    异步链接是指客户端在发送请求后,不必等待服务器响应即可继续执行后续操作。在异步链接中,客户端和服务器之间的通信是非阻塞的,即客户端可以在等待服务器响应的同时继续执行后续操作。异步链接通常用于需要处理大量请求的场景,例如Web服务器中的并发请求处理。
    总的来说,同步链接适用于需要精确控制请求和响应顺序的场景,而异步链接适用于需要处理大量请求的场景。
    消息队列的缓冲,这里指的是相比于直接对接的TCP两端,ZMQ在这两者间增加了消息队列,加强了网络通讯效率和可靠性。以应对网路拥塞、丢包的问题。更多内容可以参考:[[网络传输中应对混沌态的链路网路怎样保证通讯效率之消息队列]] ↩︎

  4. 这就是为什么在服务器使用订阅服务模式或者请求应答模式绑定对应端口后,使用NetAssist 以客户端访问可以发送数据,但是在服务端和客户端都没有收到污染。 ↩︎

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。