fqueue 是国内开发人员用JAVA开发的一款开源消息队列系统。消息队列可用来处理高并发量的数据库读写操作,降低数据库负载。fqueue的通信层使用了netty框架,数据存储则采用文件队列的方式。
存储层主要的类有以下几个:
FQueue:主要的队列实现主类,所有的消息存储与读取都通过此类进行
FSQueue:FQueue的底层实现,主要是在文件队列系统层面的读写与管理控制
LogEntity:针对单个数据存储文件的操作类
LogIndex:索引文件控制类
整个存储队列关键的代码及功能如下:
1. 有专门的读和写操作句柄负责对当前存储文件的操作。
2.专门的索引管理
3. 使用内存映射文件来处理存储文件,默认最大为150M,
4.实际的数据存储开始位置从20byte开始,前8byte为“FQueuefs”标识,接着4byte为版本,接着4byte为下一个文件编号,再接着4byte 为当前存储位置。
基本的增删流程如下:
新增FQueue.offer() ---> FSQueue.add() ----->LogEntity.write() ----[writeFull]--->生成下一个文件ID,新建存储文件和索引rotateNextLogWriter() ---->LogEntity.write()
读取FQueue.poll() ----> FSQueue.readNextAndRemove() ----->LogEntity.readNextAndRemove() ------[当前文件已读到了尾部]---> 获取下一个文件,将当前文件加入删除队列FileRunner.addDeleteFile()---->再次读取LogEntity.readNextAndRemove() 并更新索引位置。
分享到:
相关推荐
Fqueue,一个高性能且基于磁盘持久化的队列消息系统,正是为了解决这类问题而诞生的。本文将深入探讨Fqueue的设计理念、核心特性以及实际应用。 一、Fqueue简介 Fqueue是一款开源的队列系统,其独特之处在于将数据...
【大型应用系统架构设计与优化】中的高性能队列Fqueue是一种专门为解决系统性能瓶颈而设计的工具,尤其在处理大量并发写入操作时表现出色。Fqueue的核心特性包括分布式、高可用、支持多队列以及安全性,使得它成为...
该项目为基于Java实现的分布式队列系统fqueue,源码包含273个文件,其中主要文件类型为Java源代码,共计49个文件。此外,还包括SVN版本控制文件、项目配置文件等辅助文件。该系统可用于构建高效、可靠的分布式应用...
fqueue作为一个轻量级的消息队列库,可能包含以下核心特性: 1. **线程安全**:由于Java语言的并发特性,fqueue很可能提供了线程安全的API,确保多个线程同时访问时的正确性。 2. **高性能**:fqueue可能通过优化...
2. **FQueue**:FQueue可能是指FastQueue,这是一个高性能、分布式的消息队列服务,适用于大规模数据处理场景。它的设计目标是提供低延迟、高吞吐量的特性,尤其适合实时数据处理和大数据流应用。 3. **Netty**:...
#FQueue介绍#labelsIntroductionFQueue是一个高性能、基于磁盘持久存储的队列消息系统。兼容memcached协议,能用memcached的语言都可以良好的与它通信。FQueue为你提供一个不需要特别优化,高性能的一个消息系统。...
2. **Fqueue**:一款基于Rust语言开发的轻量级消息队列。 3. **ActiveMQ**:Apache下的一个高度活跃的项目,支持多种消息协议,如STOMP、AMQP等。 4. **Apollo**:阿里巴巴的一款分布式配置中心,虽然不是专门的消息...
队列fqueue 是一个微插件,用于排队函数执行以处理异步流和单步执行函数。 支持在队列初始化后添加或删除函数。 支持存储可用于该队列内所有功能的数据支持并行和串行异步调用。 完全控制队列,如停止、启动(从任何...
角队列 用于 AngularJS 的固定大小数组(固定队列)的 Javascript 实现实现基于 Ben Nadel 的 安装 鲍尔 bower install angular-fqueue 新产品管理 npm install angular-fqueue 依赖关系 FixedQueue 仅依赖于 ...
rp=%2FKB%2Frecipes%2F5252993%2FQueue.zip&download=true",我们可以推测这可能是一个关于如何创建和使用索引队列的教程或代码示例。"IndexedQueue"可能是自定义队列类的名称,而"LogOn.aspx"链接可能指向一个在线...
接下来,我们定义了 TImageLoader 类,该类继承自 TObject 类,包含一个私有变量 fQueue,用于存储 TLoadQueue 对象;一个私有变量 fWorker,用于存储 TTimer 对象,用于处理队列中的图片;一个私有变量 fActiveItem...
`BlockingFQueue`适用于那些需要大量数据存储,并且对数据持久性有较高要求的场景,例如日志记录、消息队列、大数据处理等。在这些场景下,内存可能会不足以存储所有数据,而磁盘持久化的阻塞队列则提供了一种解决...