- 浏览: 133546 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1085文件上传,页面代码: <%form_tag '/ ... -
c++中有关数组和指针的若干问题
2012-02-07 14:13 777<pre class="reply-t ... -
jbpm4在tomcat6中EL错误
2012-02-04 14:03 1040? jbpm4 在tomcat6 下面ssh2 这个错 ... -
Myeclipse自动加入struts 2 Core Libraries导致antlr错误
2012-02-04 13:29 950解决方法: 选择windows---preferenc ... -
分页组件
2012-02-03 12:23 893撒地方阿斯顿的撒啊受到爱上 ... -
2011-12-2
2012-02-02 15:34 722ubuntu系统root默认密码,每次开机会随机产生默 ... -
SQL SERVER 2008 中分页方法集锦
2012-02-01 09:34 1355<span style="font-s ... -
Android开发之ListView
2012-01-31 13:53 1231<p><br></p&g ... -
Android开发之SurfaceView
2012-01-11 15:34 1210<h1>Android开发 ... -
sso单点登录
2012-01-11 12:44 3872SSO单点登录 目 ... -
mxgraph之保存图片
2011-12-28 18:38 23351、写在前端:任何情况下,保存图片不可能只通过前台代码 ... -
Ajax实现省市二级联动(源代码)
2011-12-28 16:23 4982<span style="font-f ... -
2011NOKIA笔试题目
2011-12-21 09:29 1048今天去NOKIA机试,纯粹打酱油,没什么准备,题目貌似 ... -
终于把我的大部分BLOG复制到这里来了
2011-12-16 16:22 1010本来我的BLOG都在博客中国的<img src= ... -
MapXtreme2004代码 读取TAB表中的元素
2011-12-15 12:14 882<?xml:namespace prefix = ... -
这里的BLOG服务器也太不稳定了
2011-12-14 20:53 652<p class="MsoPlainT ... -
开启新的项目——基于电子邮件的知识管理系统
2011-12-14 19:59 912</span></font>& ... -
WIN98下运行DOTNET程序的一些问题
2011-12-14 17:24 780</span></font>& ... -
IHS静默安装(转)
2011-12-13 11:59 1273<span style="col ... -
Ajax&&GWT
2011-12-13 10:14 641工作的久了,一直忙于公司相关的技术和业务上,对于如今流 ...
相关推荐
【目录】 FQueue简介 Fqueue的存储设计 Fqueue的使用实践 Q&A
NULL 博文链接:https://ainn2006.iteye.com/blog/1543466
fqueue 自动从code.google.com/p/fqueue导出fqueue 自动从code.google.com/p/fqueue导出
#FQueue介绍#labelsIntroductionFQueue是一个高性能、基于磁盘持久存储的队列消息系统。兼容memcached协议,能用memcached的语言都可以良好的与它通信。FQueue为你提供一个不需要特别优化,高性能的一个消息系统。...
资源来自pypi官网。 资源全名:fqueue-0.0.2.tar.bz2
队列fqueue 是一个微插件,用于排队函数执行以处理异步流和单步执行函数。 支持在队列初始化后添加或删除函数。 支持存储可用于该队列内所有功能的数据支持并行和串行异步调用。 完全控制队列,如停止、启动(从任何...
bower install angular-fqueue 新产品管理 npm install angular-fqueue 依赖关系 FixedQueue 仅依赖于 Angular。 用法 将“fqueue”添加为您的应用程序的依赖项,并将 FixedQueue 注入您的控制器或服务。 ...
BlockingFQueue基于磁盘持久存储的阻塞队列
消息中间件常用的jar集合,淘宝优秀消息队列jar包集合,MQ,fqueue,netty,log4j,