Enviar búsqueda
Cargar
高性能队列Fqueue的设计和使用实践
•
Descargar como PPTX, PDF
•
22 recomendaciones
•
10,801 vistas
孙
孙立
Seguir
主要介绍Fqueue的设计实现和常见的队列使用场景,并讲解一个Fqueue的真实使用场景
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 25
Descargar ahora
Recomendados
新浪微博Feed服务架构
新浪微博Feed服务架构
XiaoJun Hong
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
XiaoJun Hong
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
XiaoJun Hong
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
Leechael
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
分布式Key Value Store漫谈
分布式Key Value Store漫谈
Tim Y
Recomendados
新浪微博Feed服务架构
新浪微博Feed服务架构
XiaoJun Hong
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
XiaoJun Hong
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
XiaoJun Hong
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
Leechael
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
分布式Key Value Store漫谈
分布式Key Value Store漫谈
Tim Y
新浪微博redis技术演化
新浪微博redis技术演化
XiaoJun Hong
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Tim Y
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
豆瓣数据架构实践
豆瓣数据架构实践
Xupeng Yun
redis 适用场景与实现
redis 适用场景与实现
iammutex
浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
阿里CDN技术揭秘
阿里CDN技术揭秘
Joshua Zhu
构建基于Lamp的网站架构
构建基于Lamp的网站架构
Cosey Lee
Memcached vs redis
Memcached vs redis
qianshi
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术团队
豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
Hbase架构简介、实践
Hbase架构简介、实践
Li Map
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
knuthocean
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
jackbillow
了解集群
了解集群
Feng Yu
Traffic server 管理员指南v1.0
Traffic server 管理员指南v1.0
qianshi
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
Jinrong Ye
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
美团点评技术团队
大规模网站架构
大规模网站架构
drewz lin
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
Feng Yu
优酷 Web网站架构案例分析
优酷 Web网站架构案例分析
George Ang
Key value store
Key value store
xuanhan863
Más contenido relacionado
La actualidad más candente
新浪微博redis技术演化
新浪微博redis技术演化
XiaoJun Hong
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Tim Y
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
豆瓣数据架构实践
豆瓣数据架构实践
Xupeng Yun
redis 适用场景与实现
redis 适用场景与实现
iammutex
浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
阿里CDN技术揭秘
阿里CDN技术揭秘
Joshua Zhu
构建基于Lamp的网站架构
构建基于Lamp的网站架构
Cosey Lee
Memcached vs redis
Memcached vs redis
qianshi
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术团队
豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
Hbase架构简介、实践
Hbase架构简介、实践
Li Map
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
knuthocean
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
jackbillow
了解集群
了解集群
Feng Yu
Traffic server 管理员指南v1.0
Traffic server 管理员指南v1.0
qianshi
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
Jinrong Ye
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
美团点评技术团队
大规模网站架构
大规模网站架构
drewz lin
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
Feng Yu
La actualidad más candente
(20)
新浪微博redis技术演化
新浪微博redis技术演化
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Hacking Nginx at Taobao
Hacking Nginx at Taobao
豆瓣数据架构实践
豆瓣数据架构实践
redis 适用场景与实现
redis 适用场景与实现
浅谈 My sql 性能调优
浅谈 My sql 性能调优
阿里CDN技术揭秘
阿里CDN技术揭秘
构建基于Lamp的网站架构
构建基于Lamp的网站架构
Memcached vs redis
Memcached vs redis
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
豆瓣网技术架构变迁
豆瓣网技术架构变迁
Hbase架构简介、实践
Hbase架构简介、实践
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
了解集群
了解集群
Traffic server 管理员指南v1.0
Traffic server 管理员指南v1.0
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
大规模网站架构
大规模网站架构
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
Similar a 高性能队列Fqueue的设计和使用实践
优酷 Web网站架构案例分析
优酷 Web网站架构案例分析
George Ang
Key value store
Key value store
xuanhan863
Youku arch qcon2009_beijing
Youku arch qcon2009_beijing
drewz lin
大型视频网站单点分析与可用性提升-Qcon2011
大型视频网站单点分析与可用性提升-Qcon2011
Yiwei Ma
Golang 高性能实战
Golang 高性能实战
rfyiamcool
Nosql三步曲
Nosql三步曲
84zhu
MySQL自动切换设计与实现
MySQL自动切换设计与实现
orczhou
主库自动切换 V2.0
主库自动切换 V2.0
jinqing zhu
Beyond rails server
Beyond rails server
Michael Chen
分布式系统缓存设计
分布式系统缓存设计
zhujiadun
阿里云技术实践
阿里云技术实践
drewz lin
Erlang游戏开发
Erlang游戏开发
litaocheng
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
涛 吴
分布式系统缓存设计
分布式系统缓存设计
aleafs
分布式索引系统调研
分布式索引系统调研
zijingyeshao
Lamp高性能设计
Lamp高性能设计
锐 张
Zabbix in PPTV
Zabbix in PPTV
ViSenze - Artificial Intelligence for the Visual Web
PHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits Level
Ho Kim
1, OCP - architecture intro
1, OCP - architecture intro
ted-xu
Similar a 高性能队列Fqueue的设计和使用实践
(20)
优酷 Web网站架构案例分析
优酷 Web网站架构案例分析
Key value store
Key value store
Youku arch qcon2009_beijing
Youku arch qcon2009_beijing
大型视频网站单点分析与可用性提升-Qcon2011
大型视频网站单点分析与可用性提升-Qcon2011
Golang 高性能实战
Golang 高性能实战
Nosql三步曲
Nosql三步曲
MySQL自动切换设计与实现
MySQL自动切换设计与实现
主库自动切换 V2.0
主库自动切换 V2.0
Beyond rails server
Beyond rails server
分布式系统缓存设计
分布式系统缓存设计
阿里云技术实践
阿里云技术实践
Erlang游戏开发
Erlang游戏开发
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
分布式系统缓存设计
分布式系统缓存设计
分布式索引系统调研
分布式索引系统调研
Lamp高性能设计
Lamp高性能设计
Zabbix in PPTV
Zabbix in PPTV
PHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits Level
1, OCP - architecture intro
1, OCP - architecture intro
高性能队列Fqueue的设计和使用实践
1.
高性能队列Fqueue的设计和使用实践
孙立@qunar.com weibo.com@sunli1223 2011.11
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
5.
Fqueue使用有多简单 • 下载->解压->启动 • 直接使用 无需繁杂的参数优化,你总是能获得高性能的Queue队列服务器
6.
Fqueue的存储设计
7.
Fqueue的整体设计结构 架构在Memcached协议之上
add FSQueue持久化 Producer 队列存储 Memcached get 接口 FSQueue持久化 Comsumer 队列存储 FSQueue持久化 队列存储 Fqueue协议实现 管理、监控
8.
Fqueue的存储结构设计 初始想法
单文件顺序 1 2 3 4 5 6 7 8 9 存储数据 3 18 存储出队和入队的位置 问题:出队数据不好删除
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
10.
选择读写实现方式-内存映射 JAVA的读写文件方式有很多,性能、特点都不一样,所以需要选择一个合适的。 测试方式:循环顺序写入10字节数据1000万次 写方式
结果耗时(ms) 备注 BufferedOutputStream 414 速度最快(与设置的cache大小 有关),数据cache在JVM内。 RandomAccessFile 29499 速度最慢,数据直接刷盘。 FileChannel 1868 速度比较快。OS级别cache MappedByteBuffer 1456 速度快。OS级别内存映射 BufferedOutputStream虽然最快,但是易丢失数据,权衡之下,我们选择 了MappedByteBuffer作为我们的文件操作实现
11.
Fqueue一些优化 1. FileNo文件全部消费后,交给后台线程异步删除
2. 在新创建一个FileNo时,会让后台线程预创建 下一编号的存储文件 3. 每10ms让OS强制刷盘 4. 每个Queue的读写都有自己的Queue级别writeLock 1、2在FileRunner.java中实现
12.
Fqueue的使用实践
13.
队列服务器的常见使用场景-缓解数据库写压力 • 直接写数据库
直接Insert into 数据库 app 应用的性能直接依赖于数 据库的响应时间和性能
14.
队列服务器的常见使用场景-缓解数据库写压力 • 用队列服务器应付高峰写入
queue 处理job 数据库 用户 批量insert queue 合并写。(批量插入可提升性能) 高速队列,降低了应用 写库的时间,能提高系 统的写入吞吐量,应付 高峰值
15.
队列服务器的常见使用场景-缓解数据库写压力 • 用队列服务器应付高峰写入
queue 处理job 数据库 用户 queue 数据库宕机,队列部分宕机 不影响应用的正常服务
16.
队列服务器的常见使用场景-缓解数据库写压力 • 用了队列服务器,如何实现实时性?
queue 处理job 数据库 用户 queue 复制 实时缓冲区 用户 数据库 merge
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() 发送进程
18.
队列服务器的常见使用场景-任务处理 • 自描述任务 //存储逻辑到队列 memcachedClient.add("job_pass", 0,
"#!/bin/shrnsome code"); memcachedClient.add("job_pass", 0, "<?php sone code?>"); //执行代码 String code = memcachedClient.get("job_pass"); String result=RunJob.runCode(code);
19.
队列服务器的常见使用场景-数据收集 • 日志收集
app 统计系统 queue 日志监控报警系统 app queue 系统性能分析系统 app 延迟比较高,速度不稳定, 可能跨机房 低延迟,速度稳定 日处理1亿日志的队列服务资源占用截图,高峰期不超过20%
20.
队列服务器的常见使用场景-解耦程序 • 视频网站的用户视频上传流程 视频上传
转换处理 Queue 文件分发 视频上传 文件分发 Queue 转换处理 存储转换 存储用户上传 视频上传 成功的数 文件分发 的信息,文件 转换处理 据 实体分开存储 视频传 db Queue 成功的后续处 存储分发 理 转换成功 成功的数 据 用队列异步解耦程序,可以更好的进行扩展,这与actor模型类似。
21.
Fqueue的使用
PHP使用 Java使用 (Xmemcached )
22.
Fqueue的使用-分布式与key的设计 Fqueue1
Fqueue2 Fqueue3 • Hash(key_pass)始终 只会hash到一台。(HA) • Hash(key_pass_固定字符串),固定hash到3三台, 可用于负载均衡。 • Hash(Key_pass_变化字符串),随机hash到三台, 可用于负载均衡。 client
23.
Fqueue实践-Qunar.com的火车票余票抓取
Memcached 火 Fqueue 处理程序 车 票 处理程序 系 余票抓取任务 统 Fqueue 处理程序 后台定时任务 清除堆积数据
24.
Fqueue实践-监控
25.
Q&A
谢谢 加入我们吧 各种技术人员,简历投递到 li.sun@qunar.com 微博联系:http://weibo.com/sunli1223
Descargar ahora