- 浏览: 139074 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (137)
- java (138)
- c# winform (笨方法)根据不同的样式配置 设置窗体相关控件的背景 以改变窗体风格 (1)
- Android平台下实现一个进程管理器 (1)
- 装饰模式 (1)
- 【转】介绍线性代数 (1)
- fqueue初步分析 (1)
- 千万级sql优化 (1)
- 开源项目 (1)
- js弹出遮罩层【并弹出提示信息】 (1)
- 代码高亮、源码格式、iteye代码格式的种种方法 (1)
- Drupal学习笔记(四)warning: array_key_exists(): The first argument should be either a string or an integer (1)
- 2011年Java EE生产力报告 (1)
- java(j2se)学习笔记----类注释文档编写方法? (1)
- ubuntu 添加应用程序 到快速启动 (1)
- JPA注解配置实例 (1)
- C++著名内裤 (1)
- Android笔试或者面试的几个题目 (1)
- Ajax&&GWT (1)
- IHS静默安装(转) (1)
- WIN98下运行DOTNET程序的一些问题 (1)
- 开启新的项目——基于电子邮件的知识管理系统 (1)
- 这里的BLOG服务器也太不稳定了 (1)
- MapXtreme2004代码 读取TAB表中的元素 (1)
- 终于把我的大部分BLOG复制到这里来了 (1)
- 2011NOKIA笔试题目 (1)
- Ajax实现省市二级联动(源代码) (1)
- mxgraph之保存图片 (1)
- sso单点登录 (1)
- Android开发之SurfaceView (1)
- Android开发之ListView (1)
- SQL SERVER 2008 中分页方法集锦 (1)
- 2011-12-2 (1)
- 分页组件 (1)
- Myeclipse自动加入struts 2 Core Libraries导致antlr错误 (1)
- jbpm4在tomcat6中EL错误 (1)
- c++中有关数组和指针的若干问题 (1)
- rails 上传文件和删除文件 (1)
最新评论
-
mazongfei:
就是有点乱,不过还是不错的
sso单点登录 -
xiaokang1582830:
写得这么乱,地球人是无法看得懂的...
sso单点登录 -
shenyu:
大侠,下回分解在哪里啊?
mxgraph之保存图片 -
GZQ0821:
为啥不编译后贴出来呢!
SQL SERVER 2008 中分页方法集锦 -
evil9999:
http://belives2012.blog.163.com ...
千万级sql优化
fqueue初步分析
fqueue是国产的一个类似memcacheq,kestrel这样的支持memcached协议的轻量级开源MQ。它的项目主页:http://code.google.com/p/fqueue/downloads/list,介绍和特点都可以看主页,我就不废话了。 今天老大提到, co了源码看了下,写个初步分析报告。 首先是它的存储层,主要是一个FQueue这么一个抽象队列,内部实现是FSQueue,也就是基于文件的FIFO队列。这个队列是多个文件组成的。每个文件默认大小在150M,超过即切换一个新文件来写。读的时候如果读到尾部,则查找下一个文件进行读取。数据文件名以idb为后缀,并且从编号1开始递增,除了数据文件外,每个队列还有个db为后缀的索引文件,记录当前写和读的数据文件编号和偏移量。目录结构大概是这样: --fqueue --fqueuedata_1.idb --fqueuedata_2.idb --…… --icqueue.db 文件的存储比较有特色,采用MappedByteBuffer做文件读写,MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高,但是也有一定的问题,比如说内存占用,以及数据刷入设备的不确定性和关闭问题。在fqueue中,每隔10毫秒会强制force一次buffer,将修改过的数据刷入设备。对于关闭问题,则采用那个技巧,示例代码:/** * 关闭索引文件 */ public void close() { try { mappedByteBuffer.force(); AccessController.doPrivileged(new PrivilegedAction<Object>() { public Object run() { try { Method getCleanerMethod = mappedByteBuffer.getClass().getMethod("cleaner", new Class[0]); getCleanerMethod.setAccessible(true); sun.misc.Cleaner cleaner = (sun.misc.Cleaner) getCleanerMethod.invoke(mappedByteBuffer, new Object[0]); cleaner.clean(); } catch (Exception e) { log.error("close logindexy file error:", e); } return null; } }); fc.close(); dbRandFile.close(); mappedByteBuffer = null; fc = null; dbRandFile = null; } catch (IOException e) { log.error("close logindex file error:", e); } } 利用反射,并且使用了sun特有的类,不具有可移植性。MappedByteBuffer还有一个问题是map的代价比较高,可能在切换文件的时候fqueue会有一定程度的阻塞现象。 存储的性能,我在我的机器测试了下,似乎没有作者宣称的那么高,我的机器是5400转的普通SATA盘,写入1K数据的平均QPS在8000左右。我估计fqueue的性能跟磁盘有很大关系,如果使用15000转的SAS盘应该能有很大改观。 网络层直接使用了jmemcached的实现,jmemcached是一个java实现的memcached,通常用于单元测试之类。看情况fqueue也支持memcached的二进制协议了。网络框架使用了netty3,这些就不多说了。自己看都明白。额外提一下,作者做的单元测试使用了xmemcached,咔咔,广而告之。 总体来说fqueue是一个整体上很清爽和轻量级的MQ实现,适合一些特定的场景,至于性能,我们下周准备做个压测,到时候再谈吧。
posted on 2011-09-16 20:10 dennis 阅读(2973) 评论(7) 编辑 收藏 所属分类: java 、源码解读
发表评论
-
rails 上传文件和删除文件
2012-02-07 14:33 1133文件上传,页面代码: <%form_tag '/ ... -
c++中有关数组和指针的若干问题
2012-02-07 14:13 832<pre class="reply-t ... -
jbpm4在tomcat6中EL错误
2012-02-04 14:03 1098? jbpm4 在tomcat6 下面ssh2 这个错 ... -
Myeclipse自动加入struts 2 Core Libraries导致antlr错误
2012-02-04 13:29 1005解决方法: 选择windows---preferenc ... -
分页组件
2012-02-03 12:23 950撒地方阿斯顿的撒啊受到爱上 ... -
2011-12-2
2012-02-02 15:34 762ubuntu系统root默认密码,每次开机会随机产生默 ... -
SQL SERVER 2008 中分页方法集锦
2012-02-01 09:34 1424<span style="font-s ... -
Android开发之ListView
2012-01-31 13:53 1294<p><br></p&g ... -
Android开发之SurfaceView
2012-01-11 15:34 1269<h1>Android开发 ... -
sso单点登录
2012-01-11 12:44 3987SSO单点登录 目 ... -
mxgraph之保存图片
2011-12-28 18:38 24771、写在前端:任何情况下,保存图片不可能只通过前台代码 ... -
Ajax实现省市二级联动(源代码)
2011-12-28 16:23 5035<span style="font-f ... -
2011NOKIA笔试题目
2011-12-21 09:29 1091今天去NOKIA机试,纯粹打酱油,没什么准备,题目貌似 ... -
终于把我的大部分BLOG复制到这里来了
2011-12-16 16:22 1049本来我的BLOG都在博客中国的<img src= ... -
MapXtreme2004代码 读取TAB表中的元素
2011-12-15 12:14 966<?xml:namespace prefix = ... -
这里的BLOG服务器也太不稳定了
2011-12-14 20:53 707<p class="MsoPlainT ... -
开启新的项目——基于电子邮件的知识管理系统
2011-12-14 19:59 953</span></font>& ... -
WIN98下运行DOTNET程序的一些问题
2011-12-14 17:24 824</span></font>& ... -
IHS静默安装(转)
2011-12-13 11:59 1344<span style="col ... -
Ajax&&GWT
2011-12-13 10:14 687工作的久了,一直忙于公司相关的技术和业务上,对于如今流 ...
相关推荐
【大型应用系统架构设计与优化】中的高性能队列Fqueue是一种专门为解决系统性能瓶颈而设计的工具,尤其在处理大量并发写入操作时表现出色。Fqueue的核心特性包括分布式、高可用、支持多队列以及安全性,使得它成为...
1. **日志处理**:Fqueue可以作为日志收集系统的后端,将日志数据持久化,方便后续分析和检索。 2. **消息中间件**:在分布式系统中,Fqueue可以作为消息中间件,实现服务间的异步通信。 3. **批量任务处理**:...
【fqueue:自动从code.google.compfqueue导出】是一个基于Java开发的开源项目,它在Google Code上曾经被托管,现在可能已经被迁移到其他平台或者存档。这个项目主要关注的是提供一种高效、灵活的消息队列实现,适用于...
该项目为基于Java实现的分布式队列系统fqueue,源码包含273个文件,其中主要文件类型为Java源代码,共计49个文件。此外,还包括SVN版本控制文件、项目配置文件等辅助文件。该系统可用于构建高效、可靠的分布式应用...
#FQueue介绍#labelsIntroductionFQueue是一个高性能、基于磁盘持久存储的队列消息系统。兼容memcached协议,能用memcached的语言都可以良好的与它通信。FQueue为你提供一个不需要特别优化,高性能的一个消息系统。...
资源来自pypi官网。 资源全名:fqueue-0.0.2.tar.bz2
队列fqueue 是一个微插件,用于排队函数执行以处理异步流和单步执行函数。 支持在队列初始化后添加或删除函数。 支持存储可用于该队列内所有功能的数据支持并行和串行异步调用。 完全控制队列,如停止、启动(从任何...
【Java】阿里中间件性能大赛初赛-消息引擎,个人实现源代码,借助了rocketMq和fqueue的设计思想
【Java】阿里中间件性能大赛初赛-消息引擎,个人实现源代码,借助了rocketMq和fqueue的设计思想_pgj
bower install angular-fqueue 新产品管理 npm install angular-fqueue 依赖关系 FixedQueue 仅依赖于 Angular。 用法 将“fqueue”添加为您的应用程序的依赖项,并将 FixedQueue 注入您的控制器或服务。 ...
**BlockingFQueue:基于磁盘持久存储的阻塞队列** 在Java编程中,阻塞队列(Blocking Queue)是一种线程安全的数据结构,它在并发编程中扮演着重要角色,用于实现生产者消费者模型。通常,Java中的阻塞队列如`...
2. **FQueue**:FQueue可能是指FastQueue,这是一个高性能、分布式的消息队列服务,适用于大规模数据处理场景。它的设计目标是提供低延迟、高吞吐量的特性,尤其适合实时数据处理和大数据流应用。 3. **Netty**:...
接下来,我们定义了 TImageLoader 类,该类继承自 TObject 类,包含一个私有变量 fQueue,用于存储 TLoadQueue 对象;一个私有变量 fWorker,用于存储 TTimer 对象,用于处理队列中的图片;一个私有变量 fActiveItem...
- **AI集成**:结合人工智能技术,实现智能路由和智能分析等功能。 综上所述,开源消息队列技术在现代软件开发中扮演着重要的角色,不仅可以帮助开发者解决复杂的问题,还能提高系统的整体性能和稳定性。随着技术的...
rp=%2FKB%2Frecipes%2F5252993%2FQueue.zip&download=true",我们可以推测这可能是一个关于如何创建和使用索引队列的教程或代码示例。"IndexedQueue"可能是自定义队列类的名称,而"LogOn.aspx"链接可能指向一个在线...