More Related Content
Similar to 高性能队列Fqueue的设计和使用实践 (20)
高性能队列Fqueue的设计和使用实践
- 2. 提纲
• FQueue简介
• Fqueue的存储设计
• Fqueue的使用实践
• Q&A
- 3. Fqueue简介
Fqueue(Fast Queue)
提供跟Memcached一样的客户端分布式和高可用机制
单实例多队列功能
每个队列可设置安全认证密码
可动态增加队列或者更改密码
纯JAVA实现,可以内置到JAVA进程内使用
simple,真的simple
开源
http://code.google.com/p/fqueue/
- 4. Fqueue有多快
• 进程内
每次写入10字节,909万qps 86MB/s
每次写入1024字节,19万qps 185MB/s
• 跨服务器
多个client每次写入10字节,32万qps
- 9. Fqueue的存储结构设计
最终的结构
1 2 3 4 5 6 7 8 File1 1. 数据顺序写
2. 数据顺序读
3. IndexFile记录读写位置和文件编号
1 2 3 4 5 6 7 8 File2 4. Index File标记删除,不删除物理数据
FileNo全部消费后,再删除FileNo文件。
1 2 3 4 5 6 7 8 File3
Read Write Read Write
Index File
offset offset FileNo FileNo
- 17. 队列服务器的常见使用场景-任务处理
• 比如发送邮件
a@126.com maila Queue.get() 发送进程
b@126.com maila
Queue.get() 发送进程
b@gmail.com maila
c@126.com mailb Queue.get()
d@sina.com mailb
发送进程
e@sina.com mailb
a@126.com maila
……
b@126.com maila Queue.get() 发送进程
c@126.com mailb
d@sina.com mailb
e@sina.com mailb
Queue.get() 发送进程 分组发送
b@gmail.com maila Queue.get() 发送进程
- 19. 队列服务器的常见使用场景-数据收集
• 日志收集
app 统计系统
queue
日志监控报警系统
app
queue 系统性能分析系统
app
延迟比较高,速度不稳定,
可能跨机房
低延迟,速度稳定
日处理1亿日志的队列服务资源占用截图,高峰期不超过20%
- 20. 队列服务器的常见使用场景-解耦程序
• 视频网站的用户视频上传流程
视频上传
转换处理 Queue
文件分发
视频上传 文件分发
Queue 转换处理 存储转换
存储用户上传
视频上传 成功的数 文件分发
的信息,文件 转换处理 据
实体分开存储
视频传
db
Queue
成功的后续处 存储分发
理 转换成功 成功的数
据
用队列异步解耦程序,可以更好的进行扩展,这与actor模型类似。
- 22. Fqueue的使用-分布式与key的设计
Fqueue1 Fqueue2 Fqueue3 • Hash(key_pass)始终 只会hash到一台。(HA)
• Hash(key_pass_固定字符串),固定hash到3三台,
可用于负载均衡。
• Hash(Key_pass_变化字符串),随机hash到三台,
可用于负载均衡。
client
- 25. Q&A
谢谢
加入我们吧
各种技术人员,简历投递到 li.sun@qunar.com
微博联系:http://weibo.com/sunli1223