NSQ(7)-nsq存在的问题
nsq存在的缺陷
部署的难度
nsq提供了一种消费者端进行服务发现的模型,所以无需告诉消费者去哪寻找对于的主题(Topic)在哪个nsqd实例上。
然而,它并没有提供一种方案去解决
一个生产者应该把消息发布到哪个nsqd实例上的问题,虽然nsqd推荐一个生产者对于部署一个nsqd实例,来实现product:nsqd= 1:1 的部署方案,但是在具体生产环境下,随着服务数量的增长,这种部署方案很难去实施,所以需要一个协调器去平衡所有创建的主题(Topic),使之满足product:nsqd=n:m(n >= m),然后通知所有生产者,它们应该把消息发布到哪个nsqd实例上。消息丢失的问题
nsq 是基于内存的MQ,它把消息存在Golang 的channel中,仅仅会在消息达到该 messageChan 的最大存储数量时,才会进行持久化到磁盘的操作,或者在正常退出时进行消息的持久化,比如对 nsqd 进行重启操作时。
然而,如果遇到程序崩溃或者不可预期的机器异常关机时,消息就会丢失。
追踪消息状态困难
由于nsq的消息是保存在内存中的,在消费之后被清空,很难去找出一个消息是否已经到达了 nsqd,另外,消费的消息状态(inflight or timeout or finished)也是完全不知道的。
无法消费历史消息
在某些情况下,我们需要重新处理一些历史记录消息,以便在升级消息处理程序之后可以修复错误。在原始NSQ中,无法执行此操作,因为它在内存中处理消息,并且不将所有历史消息持久化到磁盘。要使用历史记录,我们需要在使用完消息后保留带有配置的时间窗口的消息
接收到的消息是无序的
在某些情况下,我们需要确保将所有消息按顺序从一个系统传输到另一个系统,以使两个系统最终保持一致,即使存在某些异常情况(网络故障或崩溃)。为此,信息的持久性是一个前提,除此之外,我们还需要确保生产者和消费者都在我们的控制之下。
参数资料:
https://tech.youzan.com/tag/nsq/
NSQ(7)-nsq存在的问题的更多相关文章
- NSQ源码剖析之nsqd
NSQ简介 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息.NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障.故障容错.高可用性以及能够保证消息的 ...
- Golang入门教程(十七)Linux/Windows下快速搭建和配置NSQ
前言 NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版.NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消 ...
- nsq多播分发和负载均衡实验
什么是nsq?请参考实时分布式消息平台nsq. 本地如何搭建nsq?请参考本地搭建nsq经验分享. 从NSQ的设计文档中得知,单个nsqd被设计为一次能够处理多个流数据,NSQ中的数据流模型是由str ...
- Go操作NSQ
NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. NSQ的优势有 ...
- Go之NSQ
文章引用自 NSQ NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. N ...
- 12.1 Go nsq
12.1 Go nsq 1.nsq是Go语言编写的,开源的内存分布式消息队列中间件 2.可以大规模的处理每天数以十亿级别的消息 3.分布式和去中心化拓扑结构,无单点故障 4.地址https://git ...
- Go之NSQ简介,原理和使用
NSQ简介 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息.它具有分布式和去中心化 ...
- GO学习-(27) Go语言操作NSQ
Go语言操作NSQ NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优 ...
- 深入NSQ 之旅[转载]
介绍 NSQ是一个实时的分布式消息平台.它的设计目标是为在多台计算机上运行的松散服务提供一个现代化的基础设施骨架.这篇文章介绍了 基于go语言的NSQ的内部架构,它能够为高吞吐量的网络服务器带来 性能 ...
- nsq
官网:http://nsq.io (1)描述 都是message broker,rabbitmq久经考验,nsq则是后起之秀.rabbitmq是erlang编写,nsq是golang. 安装:http ...
随机推荐
- 置顶TOP
HTML <a href="javascript:void(0)" class="go-top" @click="goTop"> ...
- STM32L431 移植 LiteOS 时 _ebss _Min_Heap_Size _Min_Stack_Size 未找到或未定义
将 LiteOS 移植完成之后,编译报如下错误: 环境 版本 Keil V5.37.0.0 Windows11 2022/12/22 ARM::CMSIS 5.9(2022-05-22) 开发板 ST ...
- Visual Studio Code C / C++ 语言环境配置的历程
前言 从大一开始学习c++用的dev-c++,后来看到老师用的是vs code,实在是馋它的颜值便去下了vs 2017.至于为什么下载vs 2017呢?是因为下载的时候我以为他们是一样的,便下了v ...
- CMT: Convolutional Neural Networks Meet Vision Transformers概述
0.前言 相关资料: arxiv github 论文解读(CSDN,CSDN) 论文基本信息: 作者单位:华为诺亚, 悉尼大学 发表时间:CVPR2022(2021.7.13) 1.针对的问题 当前将 ...
- java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES)问题
此报错大多数存在的问题为mysql密码错误,需要去JDBC文件中寻找url查看是否密码错误.
- OOP学习讲义
什么是OOP 场景:我进入一家IT公司,面试官问道我这个问题.OOP?WTF?"众所周知,Java是一门面向对象的开发语言,所以OOP不就是面向对象设计咩.Java把所有的元素都当成是一个对 ...
- PTA---求月天数
最近做了几次模拟考试,对于求月天数这个题目有了更深一点的理解. 这个题的题目基本就是让用户输入年份和月份,给出该月有多少天. 对于这个题,首先就要考虑年份的问题,因为闰年和非闰年在二月是有一点不同的, ...
- 运行springboot的时候访问本地图片地址的问题
@Configuration public class MyConfigrauration implements WebMvcConfigurer { /** * 当有请求经过[/myUpload/* ...
- webpack5的基本用法
webpack的基本使用 webpack 本身功能有限: 开发模式: 仅能编译JS中的ES Module 语法 生产模式: 能编译ES Module 语法, 还能压缩JS代码 添加实例文件 npm i ...
- TPS,RPS,QPS,RT的区别
以下是对性能中各项指标的解释: 1.TPS:Transaction Per Second,服务器每秒处理事务数,是衡量系统性能的一个非常重要的指标. 计算公式:TPS= 总请求数 / 总时间. ...