ZeroMQ进阶阶段(一)

ZeroMQ的套接字的生命周期四个部分:

   创建和销毁套接字:zmq_socket(), zmq_close()

   配置和读取套接字选项:zmq_setsockopt(), zmq_getsockopt()

   为套接字建立连接:zmq_bind(), zmq_connect()

   发送和接收消息:zmq_send(), zmq_recv()

 

ZeroMQ的套接字永远是空指针类型,消息是一个结构体类型。

ZMQ是异步的,伸缩性很强。

 

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

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

 

 

TCP套接字和ZMQ套接字之间在传输数据方面的区别:

ZMQ套接字传输的是消息,而不是字节(TCP)或帧(UDP)。消息指的是一段指定长度的二进制数据块,我们下文会讲到消息,这种设计是为了性能优化而考虑的,所以可能会比较难以理解。

ZMQ套接字在后台进行I/O操作,也就是说无论是接收还是发送消息,它都会先传送到一个本地的缓冲队列,这个内存队列的大小是可以配置的。

ZMQ套接字可以和多个套接字进行连接(如果套接字类型允许的话)。TCP协议只能进行点对点的连接,而ZMQ则可以进行一对多(类似于无线广播)、多对多(类似于邮局)、多对一(类似于信箱),当然也包括一对一的情况。

ZMQ套接字可以发送消息给多个端点(扇出模型),或从多个端点中接收消息(扇入模型)

 

 

你可能感兴趣的:(ZeroMQ)