本文主要介绍NSQ数据流模型结构,主要包含:
- 流程图
- 流程介绍
一、流程图
二、流程简介
NSQ中的数据流模型是由streams和consumers组成的tree。
topic(以下也称为话题)是一种独特的stream。
channel(以下也称为通道)是一个订阅了给定topic的consumers 逻辑分组。
从上图可以看到,一个nsqd可以包含多个Topic,每个Topic又可以包含多个Channel,一个Topic的所有Channel可以接收到该Topic的消息,从而实现消息多播。
单个 nsqd 实例被设计成可以同时处理多个数据流。流被称为“话题”和话题有 1 个或多个“通道”。每个通道都接收到一个话题中所有消息的拷贝。在实践中,一个通道映射到下行服务消费一个话题.
话题和通道都没有预先配置。话题由第一次发布消息到命名的话题或第一次通过订阅一个命名话题来创建。通道被第一次订阅到指定的通道创建。
话题 和通道的所有缓冲的数据相互独立,防止缓慢消费者造成对其他通道的积压(同样适用于话题级别)。
一个通道一般会有多个客户端连接。假设所有已连接的客户端处于准备接收消息的状态,每个消息将被传递到一个随机的客户端。