本文档指定了 ZeroMQ 流水线模式的语义,其中包括 PUSH 和 PULL 套接字类型。此规范旨在指导这些套接字类型的实现,以便用户可以依赖可靠的语义。

原文地址: 30/PIPELINE

目标

该规范旨在正式记录 PUSH 和 PULL 套接字类型的名称和预期行为,它们共同构成了 ZeroMQ 流水线模式。这些套接字的符合性实现应遵循此规范,从而确保应用程序可以依赖于可预测的行为。此规范不是特定于传输的,但并非所有行为都可以在所有传输上重现。

模式目标

该模式用于任务分发,通常在多阶段管道中,其中一个或几个节点将工作推送给许多工作线程,然后它们又将结果推送到一个或几个收集器。该模式大多是可靠的,因为它不会丢弃消息,除非节点意外断开连接。它是可扩展的,因为节点可以随时加入。

PUSH 套接字

PUSH 套接字与一组匿名 PULL 对等点通信。使用循环算法发送消息。

一般行为:

  • 可以连接到任意数量的 PULL 对等体,并且仅发送消息。

  • 不得以任何方式过滤或修改传出消息。

  • 应为每个连接的对等体维护一个传出消息队列。

  • 在启动与对等体的传出连接时,应创建此队列,并且无论是否建立连接,都应维护该队列。

  • 应在对等方连接到该队列时创建该队列。如果此对等体断开连接,则 PUSH 套接字将销毁其队列并丢弃其包含的任何消息。

  • 队列大小应该是可动态配置的。

对于传出消息:

  • 仅当对等放的传输队列未满时,才应将对等放视为可用。

  • 将会使用循环策略将传出消息路由到可用的对等方。

  • 在没有可用的对等节点时,应阻止发送或者返回适当的错误。

  • 在没有可用的对等节点时,不应当接受进一步的消息。

  • 不得丢弃无法排队的消息。

PULL 套接字

PULL 套接字与一组匿名 PUSH 对等方通信,使用公平排队算法接收消息。

一般行为:

  • 可以连接到任意数量的 PUSH 对等体,并且只接收消息。

  • 不得以任何方式过滤或修改传入的邮件。

  • 应为每个连接的对等体维护一个传入队列。

  • 在启动与对等体的传出连接时,应创建此队列,并且无论是否建立连接,都应维护该队列。

  • 应在对等方连接到该队列时创建该队列。如果此对等体断开连接,则 PULL 套接字将销毁其队列,并丢弃其包含的任何消息。

  • 传入队列的大小是可动态配置的。

对于传入消息:

  • 使用公平排队策略接受来自对等方的传入消息。

  • 应将这些内容交付给调用应用程序。

Last moify: 2024-02-01 04:31:02
Build time:2025-07-18 09:41:42
Powered By asphinx