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

这篇具有很好参考价值的文章主要介绍了nsq整体架构及各个部件作用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

        前言

        nsq的整体架构图

        部件:nsqd

        部件:nsqlookupd

        部件:nsq连接库

        部件:nsqadmin 


前言

上两篇博客

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

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

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

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

首先解释下三个重要概念

topic        :        主题也叫话题。常用于表示某个事件,不同topic的名字不可重复。例如玩家成功登录游戏后,我们一般都会抛出一个Login的事件,其他服收到该事件后会进行一些处理。此时可以认为topic的名字就是 "Login"

channel   :        监听。topic和某个处理进程之间的通道,一个topic下面至少要有一个,可以有多个channel。还是以玩家成功登录游戏为例,活动服需要监听这个topic时,需要定义一个唯一名字的channel;游戏服需要监听这个topic时,也需要定义一个唯一名字的channel;只有这样当玩家成功登陆游戏时才能既通知到活动服,又通知到游戏服

message  :       具体的消息。某个topic下面可以一直触发message。还是以上面的玩家登录为例,玩家A登录成功,会触发一个message,内部包含玩家A的信息。玩家B登陆成功,也会触发一个message,内部包含玩家B的信息。这样处理进程收到message后才能区分消息内是哪个玩家的登录成功信息

nsq的整体架构图

nsq整体架构及各个部件作用详解,nsq,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整体架构及各个部件作用详解,nsq,nsq架构,nsq组成部件,nsq整体架构图

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

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

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

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

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

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

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

好了,大家先对nsq的各个部件有个大致的认识,后面我们开始对这些部件详细讲解,我尽量做到每写一篇博客就更新这里

nsqd的架构及源码分析_YZF_Kevin的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-612819.html

到了这里,关于nsq整体架构及各个部件作用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 电脑有哪些部件组成

    电脑由硬件系统和软件系统两部分组成。 从外观来看,电脑是由机箱、板卡、插件等元器件组成的,这些就叫电脑的硬件,它们是电脑可以进行工作的物质基础。 电脑软件部分是指在硬件设备上运行的各种程序以及有关的数据资料,在外观上是不可见。 可以打个比方:硬件

    2024年02月09日
    浏览(20)
  • Linux Kernel内核整体架构(图文详解)

    本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。 注:本文和其它的“Linux内核分析”文章都基于如下约定: a) 内核版

    2024年02月11日
    浏览(33)
  • 05、Kafka ------ 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

    Kafka 主题虽然也叫 topic,但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 topic 都不同(AMQP 的 topic 只是 Exchange 的类型)。 Kafka 的主题只是盛装消息的逻辑容器(注意是逻辑容器),主题之下会分为若干个分区,分区才是盛装消息的物理容器。 ▲ 消息组织方式实际上是三级结构

    2024年02月03日
    浏览(29)
  • nsq中diskqueue详解 - 第一篇

     diskqueue是nsq消息持久化的核心,内容较多,故分为多篇 1. diskqueue第一篇 - 是什么,为什么需要它,整体架构图,对外接口 2. diskqueue第二篇 - 元数据文件,数据文件,启动入口,元数据文件的读写及保存 3. diskqueue第三篇 - 数据定义详解,运转核心ioloop()源码详解 4. diskqueue第

    2024年02月13日
    浏览(61)
  • 计算机组成原理(2)各个硬件的工作原理

    (1)存储体(M) 1、存储单元 :每个存储单元存放一串二进制代码。 2、存储字(word) :存储单元中二进制代码的组合。 3、存储字长 :存储单元中二进制代码的位数,一般是 8bit 的倍数。 4、存储元件 (存储元):即存储二进制的电子元件,每个存储元件可存 1bit。 MAR位数

    2024年02月13日
    浏览(38)
  • 电脑键盘各个按键作用讲解

    各按键作用解读 1、F键功能键盘区 Esc键:英文Escape 的缩写,中文意思是逃脱、出口等。该键为取消键,在电脑的应用中主要的作用为放弃当前操作或结束程序; F1~F12键:功能键,英文Function,中文为“功能”的意思。在不同的软件中,这12个功能键在不同的应用软件和程序中

    2024年02月13日
    浏览(26)
  • 【hive-design】hive架构详解:描述了hive架构,hive主要组件的作用、hsql在hive执行过程中的底层细节、hive各组件作用

    本文主要讨论了 描述了hive架构,hive主要组件的作用 详细描述了hsql在hive执行过程中的底层细节 描述了hive各组件作用 架构图: 如上图表达了hive的主要组件和以及与hadoop的交互: 主要的hive组件: UI :用户提交接口,用于用户提交查询和其他操作等。 Driver :接收查询的组件

    2024年02月04日
    浏览(26)
  • Pytest的setup/teardown各个方法的作用域

    一、模块级别 二、模块级别(方法) setup_function: #模块中每条用例执行前执行一次,不会作用于class中的test_case teardown_function: #模块中每条用例执行后执行一次,不会作用于class中的test_case 三、测试类级别 四、测试类级别(测试方法)

    2024年02月12日
    浏览(21)
  • 从源码分析 Redis 异步删除各个参数的具体作用

    以前对异步删除几个参数的作用比较模糊,包括网上的很多资料都是一笔带过,语焉不详。 所以这次从源码(基于 Redis 7.0.5)的角度来深入分析下这几个参数的具体作用: lazyfree-lazy-user-del lazyfree-lazy-user-flush lazyfree-lazy-server-del lazyfree-lazy-expire lazyfree-lazy-eviction slave-lazy-flush

    2024年02月05日
    浏览(25)
  • Spring项目配置文件中RabbitMQ监听器各个参数的作用

    spring.rabbitmq.listener.simple.concurrency :设置监听器容器的并发消费者数量,默认为1,即单线程消费。 spring.rabbitmq.listener.simple.max-concurrency :设置监听器容器的最大并发消费者数量。 spring.rabbitmq.listener.simple.prefetch :设置每个消费者从RabbitMQ服务器获取的消息数量,即每次从队列

    2024年02月16日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包