向消费者通知新事件的常用方式 消息传递系统(messaging system):Pro发送包含事件的消息,然后将消息推给Con。
像Pro和Con之间的 Unix 管道或 TCP 连接这样的直接信道,是实现消息传递系统的简单方法。但大多消息传递系统都在这一基本模型扩展。Unix管道和TCP将恰好一个发送者与恰好一个接收者连接,而一个消息传递系统允许多个Pro节点将消息发到同一主题,并允许多个Con节点接收主题的消息。在这发布 / 订阅模式中,不同系统采取各种方法,并没有针对所有目的的通用答案,区分前提:
是否接受消息丢失取决应用。如对周期传输的传感器读数和指标,偶尔丢失的数据点可能并不重要,因为更新的值会在短时间内发出。但若大量消息被丢弃,可能无法立刻意识到指标已经不正确。若你正在对事件计数,则它们能可靠送达更重要,因为每个丢失的消息都意味着使计数器错误扩大。
批处理系统的一个好特性是,它们提供强大可靠性保证:失败任务会自动重试,失败任务的部分输出会自动丢弃。这意味着输出与没发生故障一样,简化了编程模型。