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 ...
随机推荐
- OpenAI Chat completion API 入门指南
Chat completion API 入门指南 ChatGPT 由 OpenAI 最先进的语言模型 gpt-3.5-turbo 提供支持. 使用 OpenAI API,您可以使用 GPT-3.5-t ...
- Xilinx URAM使用说明 UG573
UltraRAM Resources UltraRAM Summary UltraRAM 是单时钟.双端口.同步存储器,可用于 UltraScale+ 器件.由于 UltraRAM 与柱状(colum ...
- Office2021简体中文离线安装包下载地址合集,目前最全
Office2021中文版的离线安装包下载地址合集: 一.专业增强版(强烈推荐):http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c ...
- input标签file文件上传图片本地预览(转载)
<input type="file" name="img-up" id="img-up" value="" /&g ...
- mysql库操作msyql
查看所有数据库 show databases; 查看当前使用的数据库 select database(); 使用数据库 use 数据库名; 创建数据库 create database 数据库名 cha ...
- iOS 防止charles抓包
方案一:检查手机Wifi是否设置了代理 public func fetchHttpProxy() -> Bool { guard let proxy = CFNetwork ...
- 代码随想录训练营day 5|24.两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题02.07.链表相交 142.环形链表Ⅱ
24. 两两交换链表中的节点 题目链接:24. 两两交换链表中的节点 题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行 ...
- 有关谷歌下载PDF文件而不是直接打开预览的问题
找了很多帖子,都不行, 解决方法把链接处理成blob文件再调用下载. 但是仍然不行,最终原因找到: 缺少了这一部创建,需要把二进制数据重新用 Blob对象申明下 let data = new Blob ...
- css - content-visibility
css - content-visibility content-visibility:实现可见网页只加载可见区域内容 介绍 content-visibility是一个css属性,它控制一个元素是否呈 ...
- log4net两分钟三步急速搭建日志框架教程(注意System.Configuration.ConfigurationErrorsException: 配置系统未能初始化 ---> System.Configuration.ConfigurationErrorsException: )
最近接了个活,winform的帮人做几个页面,这里就以winform项目为例了,之前log4net都是项目中继承好了的,这次自己研究从0到1搭建了一个,发现其实也蛮简单的,主要分为以下三步和一个注意事 ...