当前位置: 首页 > 软件库 > Web应用开发 > Vue 组件 >

NSQProxy

NSQ 消息调度系统
授权协议 MIT
开发语言 Google Go JavaScript
所属分类 Web应用开发、 Vue 组件
软件类型 开源软件
地区 国产
投 递 者 贺俊楚
操作系统 Linux
开源组织
适用人群 未知
 软件概览

NSQProxy

NSQProxy是Golang开发的NSQ和Worker之间的中间件,根据数据库配置,负责消息转发。NSQProxy启动后,接受NSQD队列内容,然后通过HTTP/FastCGI/CBNSQ等协议转发给Worker机执行。在唱吧内部使用2年,高效稳定的处理着每日数十亿条消息。

解决的问题

  • 各Topic执行机器可配
  • 各Topic消费速度可配
  • 各Worker机协议可配
    • HTTP:将消息发送给配好的URL。
    • FastCGI:将消息发送给配置的服务端,如PHP-FPM。
    • CBNSQ:自定义的基于TCP的文本协议。
  • 可视化界面管理
  • 队列积压超出阈值报警
  • 散乱在各处的消费者集中化管理
  • 通过网络分发,无需安装.so等扩展库,因此无需修改线上环境

有图有真相

使用

请先部署好NSQLookupd、NSQd、MySQL

启动NSQLookupd nsqlookupd -broadcast-address="0.0.0.0" -http-address="0.0.0.0:4161" -tcp-address="0.0.0.0:4160"

启动NSQD nsqd -broadcast-address="0.0.0.0" -lookupd-tcp-address="0.0.0.0:4160" -tcp-address="0.0.0.0:4150" -http-address="0.0.0.0:4151"

启动MySQL

安装

二进制安装

  • 下载最新版本的压缩包 https://github.com/changba/nsqproxy/releases
  • 解压
  • 启动(注意替换为自己的MySQL信息) ./nsqproxy -dbHost=127.0.0.1 -dbPort=3306 -dbUsername=root -dbPassword=rootpsd -dbName=nsqproxy -logLevel=debug -nsqlookupdHTTP=127.0.0.1:4161
  • 命令行 curl http://0.0.0.0:19421/status 输出ok
  • 浏览器打开 http://0.0.0.0:19421/admin

源码安装

  • 要求Go1.13及以上
  • 下载本项目 go get github.com/changba/nsqproxy
  • cd nsqproxy
  • export GO111MODULE=on
  • 编译 make build
  • 启动(注意替换为自己的MySQL信息) ./bin/nsqproxy -dbHost=127.0.0.1 -dbPort=3306 -dbUsername=root -dbPassword=rootpsd -dbName=nsqproxy -logLevel=debug -nsqlookupdHTTP=127.0.0.1:4161
  • 命令行 curl http://0.0.0.0:19421/status 输出ok
  • 浏览器打开 http://0.0.0.0:19421/admin

快速开始

二次开发

前端

使用VUE开发,所有源码均在/web/vue-admin目录中,开发完成后需要编译,编译后的文件存放在/web/public/目录中。使用开源项目statik将静态文件/web/public/变成一个go文件internal/statik/statik.go,这样前端的静态文件也会被我们编译到同一个二进制文件中了。

  • 启动go服务 make run
  • 安装VUE make vue-install(如果国内被墙可以使用淘宝的源进行安装:make vue-install-taobao)
  • 开启VUE开发环境 make vue-dev
  • 浏览器打开 http://0.0.0.0:9528/admin
  • 开发前端相关功能
  • 编译VUE make vue-build
  • 前段文件转换为一个go文件 make statik
  • 编译go服务 make build
  • 浏览器打开 http://0.0.0.0:19421/admin

接口文档

TODO LIST

  • 协议增加protobuf
  • 后台增加用户权限管理
  • 报警HOOK
  • 日志按天分割

License

© Changba.com, 2020~time.Now

Released under the MIT License

 相关资料
  • 问题内容: 我正在研究一个小型Java游戏,其中可能发生各种事件。至少有几十个基本事件,各种事件处理程序可能会对这些事件感兴趣。代码中还有几个地方可能会触发这些事件。我不是要让事件侦听器知道他们需要向哪个类注册,而是想创建某种集中式的消息调度系统,某些类会将事件提交到该系统中,而感兴趣的类可以加入以侦听某些种类的事件。事件。 但是我有一些疑问。首先,这似乎是一个显而易见的普遍问题。是否有简单的VM

  • YodaOS 中通过 YodaOS Message 完成对系统中的某个模块的定制化,本章节即是列出 YodaOS 中标准的消息接口,方便有需要的开发者对模块进行定制。 YodaOS Message 使用 yodaos-project/flora 作为 IPC 方式,它支持的数据结构包括: int float long double string binary 本章节描述中出现的number格式为i

  • Running Events With a Delay # sched_basic.py import sched import time scheduler = sched.scheduler(time.time, time.sleep) def print_event(name, start): now = time.time() elapsed = int(now -

  • Cocos Creator 3D 内有许多独立运行的的进程,这些进程间是相互隔离的。 所以在编辑器内需要与其他功能进行交互的时候,需要通过 "消息" 进行交互。 编辑器里的 "消息系统" 是 IPC(进程间通信)的功能扩展封装。这个系统承担起了整个编辑器内通讯交互的重担。 消息类型 消息交互分成了两种情况: 主动发送某条消息到某个功能(扩展) 某个功能(扩展)完成了一个操作后向所有人发送通知,告知

  • 主要内容:以下是纠正/补充内容:先来先服务(FCFS)调度算法根据其到达时间简单地调度作业。 就绪队列中第一个工作将首先获得CPU。 工作到达时间越少,工作得到的CPU就越快。 如果第一个进程的突发时间是所有作业中最长的,则FCFS调度可能会导致饥饿问题。 FCFS的优势 简单 容易 先到先得 FCFS的缺点 调度方法是非抢先式的,该进程将运行到完成。 由于算法的非抢先性,可能会出现饥饿问题。 尽管实现起来很容易,但由于平均等待

  • 主要内容:进程控制块中保存了什么?,为什么需要调度?在像MS DOS这样的单编程系统中,当进程等待任何I/O操作完成时,CPU仍然是空闲的。 这是一个开销,因为它浪费时间并导致饥饿问题。 但是,在多程序系统中,CPU在进程的等待时间内不会保持空闲状态,而是开始执行其他进程。 操作系统必须定义CPU将被给予哪个进程。 在多程序系统中,操作系统调度CPU上的进程以获得最大的利用率,此过程称为CPU调度。 操作系统使用各种调度算法来调度过程。 这是短期调

  • 本文向大家介绍android项目实现带进度条的系统通知栏消息,包括了android项目实现带进度条的系统通知栏消息的使用技巧和注意事项,需要的朋友参考一下 我们在做Android开发的时候经常会遇到后台线程执行的比如说下载文件的时候,这个时候我们希望让客户能看到后台有操作进行,这时候我们就可以使用进度条,那么既然在后台运行,为的就是尽量不占用当前操作空间,用户可能还要进行其他操作,最好的方法就是在

  • 操作系统使用各种算法来有效地调度处理器上的进程。 调度算法的目的 最大CPU利用率 公平分配CPU 最大吞吐量 最短周转时间 最短的等待时间 最短响应时间 有以下算法可用于计划作业。 1. 先来先服务 这是最简单的算法。 最短到达时间的过程将首先获得CPU。 到达时间越少,进程得到CPU的速度越快。 这是非抢先式的调度。 2. 轮循 在循环调度算法中,操作系统定义了一个时间片(片)。 所有的进程将