ZeroMQ:不一样的套接字。

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

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在这两者间增加了消息队列,加强了网络通讯效率和可靠性。以应对网路拥塞、丢包的问题。更多内容可以参考:[[网络传输中应对混沌态的链路网路怎样保证通讯效率之消息队列]] ↩︎


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 以客户端访问可以发送数据,但是在服务端和客户端都没有收到污染。 ↩︎

目录
相关文章
|
2月前
|
网络协议 数据库连接
套接字双向通信
套接字双向通信
23 5
|
4月前
|
网络协议
【Netty 网络通信】Socket 通信原理
【1月更文挑战第9天】【Netty 网络通信】Socket 通信原理
|
7月前
|
存储
14.10 Socket 套接字选择通信
对于网络通信中的服务端来说,显然不可能是一对一的,我们所希望的是服务端启用一份则可以选择性的与特定一个客户端通信,而当不需要与客户端通信时,则只需要将该套接字挂到链表中存储并等待后续操作,套接字服务端通过多线程实现存储套接字和选择通信,可以提高服务端的并发性能,使其能够同时处理多个客户端的请求。在实际应用场景中,这种技术被广泛应用于网络编程、互联网应用等领域。在服务端启动时,创建套接字并进行绑定,然后开启一个线程(称为主线程)用于监听客户端的连接请求。主线程在接收到新的连接请求后,会将对应的套接字加入一个数据结构(例如链表、队列、哈希表等)中进行存储。同时,主线程会将存储套接字的数据结构传递给
25 1
14.10 Socket 套接字选择通信
|
2月前
|
网络协议 Java
网络编程套接字(1)
网络编程套接字(1)
|
4月前
|
网络协议 Java 程序员
网络编程套接字(Socket)
网络编程套接字(Socket)
37 0
|
6月前
|
消息中间件 网络架构
ZeroMQ:疯狂的套接字。
正是因为套接字可以使用不同的方式进行连接,才构成了ZMQ最基本的消息队列系统。我们还可以在此基础之上建立更为复杂的装置、路由机制等,下文会详述。总的来说,ZMQ为你提供了一套组件,供你在网络架构中拼装和使用。
23 0
|
10月前
|
存储 网络协议 Unix
网络编程套接字(一)
网络编程套接字
43 0
|
10月前
|
网络协议 Shell
网络编程套接字(二)
网络编程套接字
56 0
|
12月前
|
缓存 网络协议 Java
网络编程套接字Socket
网络编程套接字Socket
|
存储 缓存 网络协议
【Java网络编程】Socket套接字
哈喽,大家好~我是你们的老朋友:保护小周ღ,本期为大家带来的是网络编程的前提概念 Socket 套接字,操作系统提供Socket 用于封装底层的协议细节和通信逻辑,使应用程序可以通过简单直观的API与网络进行交互。所以客观的角度讲基于Socket 套接字开发,就是网络编程。概念篇~~ 更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘
126 0