nsq整体架构及各个部件作用详解

文章目录

        前言

        nsq的整体架构图

        部件:nsqd

        部件:nsqlookupd

        部件:nsq连接库

        部件:nsqadmin 


前言

上两篇博客

centos环境搭建nsq单点_YZF_Kevin的博客-CSDN博客

linux环境搭建nsq集群_YZF_Kevin的博客-CSDN博客

我们讲了nsq是什么,有什么用,它的内部组成部件,下载,单点搭建,集群搭建等等

这一篇博客,我们开始讲nsq的整体架构、运行时的总体流程图,各个部件的作用

nsq的整体架构图

 详细解释下

部件:nsqd

最上方的nsqd1nsqd2nsqd3nsqd4都是nsqd的单个节点,至少需要开一个,也可以根据实际需要开多个

nsqd是整个nsq系统的核心,且和我们的连接端,所有的nsqlookupd都直接通讯,nsqd实现了如下功能

topic的创建,清空,暂停,重新激活,销毁,同步

channel的创建,清空,暂停,重新激活,销毁,同步

message的产生,监听,中转,持久化(保存到文件,从文件加载),主动推送消息给各个客户端,消息计数

配置修改,运行状态(协程、内存)统计

部件:nsqlookupd

架构图中间的nsqlookupd1nsqlookupd2 是nsqlookupd的单个节点用于记录nsqd的注册,活跃维持,给连接客户端做nsqd的服务发现。

至少需要开一个,也可以根据实际需要开多个,以实现服务的高可用。使用连接端连接nsqlookup时可以直接给一个nsqlookupd地址的数组,连接端内部会轮询访问,这样即使某个nsqlookupd挂掉了或者网络问题断掉了,其他nsqlookupd进程依然可以提供服务。

部件:nsq连接库

架构图下面的是nsq连接库。它需要先跟某个nsqlookupd进行通讯(http),取到所有活跃nsqd的信息,再对所有的nsqd进行通讯(tcp和http)。连接端可以有多种身份

可以作为生产者,进行topic创建、销毁,产生消息推送给nsqd

可以作为消费者,监听指定topic或指定channel,处理nsqd推送过来的消息

还可以既是生产者产生消息,又是消费者处理消息,当然这种情况下,生产和消费的是不同类型消息

注意:nsq连接端的内部实现还是有点复杂的,至少几千行代码,如果实现得不好可能会连累nsqd出问题。但nsq作者并没有把它包含进nsq内部,可能是认为连接库应该交给第三方来实现吧,所以他用go语音实现了连接库go-nsq,放在了nsq的平台,作为go语音的官方推荐连接库,等于是打了个样版

还有其他语音的第三方连接端,nsq作者都放在nsq官方github的首页,大家可以找一下有没有自己需要的,地址 https://github.com/nsqio

常见的语音已有实现,例如:

python语音的是pynsq   github地址GitHub - nsqio/pynsq: The official Python client library for NSQ

java语音的是nsq-java    github地址https://github.com/nsqio/libnsq

c语音的是libnsq      github地址GitHub - nsqio/nsq-java: official Java client library for NSQ

部件:nsqadmin 

架构图右侧有一个nsqadmin进程,它实现了一个简单的web界面,方便用户查看,操作。

nsqadmin要和所有的nsqlookupd进行连接,收集统计信息。它只是个辅助UI,没必要多开

我们一个测试服的nsqadmin界面如下

 在NSQ页面,可以查看所有的topic

可以选择一个topic点击进去,能看到这个topic的统计信息,比如归属的nsqd进程,消息数量(内存中,磁盘中),拥有的channel数量,以及所有channel

也可以选择一个channel点击进去,能看到这个channel的统计信息,比如消息统计(内存中,磁盘中),IN-Flight表飞行中(处理中)的消息数;Deferred表延迟消息的数;Requeued表因处理失败再次入队的消息数

你可以对这些topic和channel进行操作,比如清空,暂停/重新激活,删除等等

Nodes页面,可以查看所有的nsqd进程信息

Counter页面,可以看到总消息数量

Lookup页面,可以查看所有的nsqlookupd进程信息

好了,大家先对nsq的各个部件有个大致的认识,后面我们开始对这些部件详细讲解

todo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

桥梁安全监测系统中数据采集上传用 什么?

背景 2023年7月6日凌晨时分,G5012恩广高速达万段230公里加80米处6号大桥部分桥面发生垮塌,导致造成2车受损后自燃,3人受轻伤。目前,四川省公安厅交通警察总队高速公路五支队十四大队民警已对现场进行双向管制。 作为世界第一桥梁…

Hadoop 之 Spark 配置与使用(五)

Hadoop 之 Spark 配置与使用 一.Spark 配置1.Spark 下载2.单机测试环境配置3.集群配置 二.Java 访问 Spark1.Pom 依赖2.测试代码1.计算 π 三.Spark 配置 Hadoop1.配置 Hadoop2.测试代码1.统计字符数 一.Spark 配置 环境说明环境版本AnolisAnolis OS release 8.6Jdkjava versi…

mac使用mvn下载node-sass 会Binary download failed, trying source

m1 上使用nvm 以下node的版本可以直接下载(Binary download,而不是 trying source)而不用切换mac cpu架构 zhiwenwenzhiwenwendeMBP cockpit % nvm install 14.15.5 Downloading and installing node v14.15.5... Downloading https://node…

Windows环境下git客户端中的git-bash和MinGW64

我们在 Windows10 操作系统下,安装了 git 客户端之后,可以通过 git-bash.exe 打开一个 shell: 执行一些 linux 系统里的命令: 注意到上图紫色的 MINGW64. Mingw-w64 是原始 mingw.org 项目的改进版,旨在支持 Window…

SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

一、数据聚合 聚合(aggregations): 实现对文档数据的统计、分析、运算。 (一)聚合的常见种类 桶(Bucket)聚合: 用来做文档分组。 TermAggregation: 按照文档字段值分组…

Flutter Windows通过嵌入Native窗口实现渲染视频

Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频(本章) 文章目录 Flutter视频渲染系列前言…

文心一言大模型测评

访问地址 文心一言服务请求地址:文心千帆大模型 (baidu.com) 新手可以先实名认证后再申请使用 测评 普通对话 这里先和他进行简单的问题讨论 编程相关 询问他有关代码的内容 确实可以生成代码,但不像chatgpt那样提供复制按钮 我们接下来让他生成…

LeetCode45.Jump-Game-II<跳跃游戏II>

题目: 思路: 从上次大神那里获得的灵感 这题问的是次数,那么我们需要确保 1,能否跳到终点 2,得到次数. 第一次条获得的是nums[0],那么第一个数就是我们第一次能跳跃的范围.每次在范围里获得最大值.并且次数加一.然后进入下一次范围;即可得到次数; 代码…

明晚直播:可重构计算芯片的AI创新应用分享!

大模型技术的不断升级及应用落地,正在推动人工智能技术发展进入新的阶段,而智能化快速增长和发展的市场对芯片提出了更高的要求:高算力、高性能、灵活性、安全性。可重构计算区别于传统CPU、GPU,以指令驱动的串行执行方式&#xf…

论文解读|Struck算法:基于结构化输出预测的自适应视觉目标跟踪框架

原创 | 文 BFT机器人 01 背景 本文的背景是关于自适应视觉目标跟踪的研究。在传统的跟踪方法中,通常采用基于检测的方式,即尝试学习一个分类器来区分目标对象和其周围的背景。然而,这种方法存在一些问题,例如需要手动选择特征和参…

深度神经网络基础——深度学习神经网络基础 Tensorflow在深度学习的应用

目录 一、二、Tesnsflow入门 & 环境配置 & 认识Tensorflow三、线程与队列与IO操作神经网络基础知识1.简单神经网络2.卷积神经网络卷积层新的激活函数-Relu池化层(Pooling)计算 案例:Mnist手写数字图片识别卷积网络案例 一、二、Tesnsflow入门 & 环境配置…

SQL AND OR 运算符

AND & OR 运算符用于基于一个以上的条件对记录进行过滤。 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。 下面是选自 "students" 表的数据&a…

java 支持jsonschema

入参校验产品化 schema_xsd可视化编辑器_个人渣记录仅为自己搜索用的博客-CSDN博客 jsonchema的生成 支持v4的jackson-jsonSchema GitHub - mbknor/mbknor-jackson-jsonSchema: Generate JSON Schema with Polymorphism using Jackson annotations jackson-module-jsonSchema …

阿里云NVIDIA A100 GPU云服务器性能详解及租用费用

阿里云GPU服务器租用费用表包括包年包月、一个小时收费以及学生GPU服务器租用费用,阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折,阿里云百科分享阿里云GPU服务器租用表、GPU一个小时多少…

各种知名游戏的技术分析

介绍一个GitHub,里面包括了市面上的各种游戏的技术分析,包括渲染管线、工作流、技术文章等等,在做某个类型的游戏的时候,可以针对某个游戏去进行技术参考,特别实用。 GitHub - OTFCG/Awesome-Game-Analysis: a compre…

C++那些事之template disambiguator

template disambiguator 1.背景 最近看到一段代码&#xff1a; auto chunk_left first_sort_key.template GetChunk<ArrayType>(left); 请问&#xff0c;这里的.template代表什么意义&#xff1f; 本节将从实际例子出发&#xff0c;探讨这个意义。 2.template disambigu…

数仓学习---16、可视化报表(Superset)

星光下的赶路人star的个人主页 真正的才智是刚毅的志向 文章目录 1、Superset入门1.1 Superset概述1.2 环境说明 2、Superset安装2.1 安装Python环境2.1.1 安装Miniconda2.1.2 创建Python3.7 环境 2.2 Superset部署2.2.1 安装依赖2.2.2 安装Superset2.2.3 启动Superset2.2.4 Su…

【ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets】

文章目录 Trace protocolpacket的种类Error packetsVERSION Packets同步 packet 上篇文章&#xff1a;ARM Coresight 系列文章 10.1 - ARM Coresight STM 介绍及使用 下篇文章&#xff1a;ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍 Trac…

【uni-app2.0】实现登录页记住密码功能

使用uni-app的uni.setStorageSync()和uni.getStorageSync()方法来存储和读取密码 在登录页中添加一个记住密码的u-checkbox选项&#xff0c;并在data里面添加一个rememberPwd的布尔值&#xff0c;在每次点击记住密码change的时候来记录用户的选择 <u-checkbox-group place…

基于java的坦克大战游戏的设计与实现--毕业论文--【毕业论文】

文章目录 本系列校训毕设的技术铺垫文章主体层次摘要&#xff1a;示例摘要的写法 引言&#xff1a;系统分析总体设计总体功能总体功能如图1所示坦克大战总体流程图 详细设计游戏测试结论参考文献参考文献 配套资源 本系列校训 互相伤害互相卷&#xff0c;玩命学习要你管&#…