高性能队列Fqueue的设计和使用实践PPT课件下载推荐.pptx
《高性能队列Fqueue的设计和使用实践PPT课件下载推荐.pptx》由会员分享,可在线阅读,更多相关《高性能队列Fqueue的设计和使用实践PPT课件下载推荐.pptx(25页珍藏版)》请在冰豆网上搜索。
![高性能队列Fqueue的设计和使用实践PPT课件下载推荐.pptx](https://file1.bdocx.com/fileroot1/2022-10/9/7d3ee8f4-8996-47c4-9244-fb0ba24066f1/7d3ee8f4-8996-47c4-9244-fb0ba24066f11.gif)
/接口FSQueue持久化队列存储Comsumer管理、监控Fqueue协议实现FSQueue持久化队列存储FSQueue持久化队列存储架构在Memcached协议之上addgetFqueue的存储结构设计123456789318单文件顺序存储数据存储出队和入队的位置初始想法问题:
出队数据不好删除12Fqueue的存储结构设计ReadoffsetWriteoffset最终的结构3456781234567812345678File1File2File3ReadFileNoWriteFileNo1.数据顺序写2.数据顺序读3.IndexFile记录读写位置和文件编号4.IndexFile标记删除,不删除物理数据FileNo全部消费后,再删除FileNo文件。
IndexFile选择读写实现方式-内存映射写方式写方式结果耗果耗时(ms)备注注BufferedOutputStream414速度最快(与设置的cache大小有关),数据cache在JVM内。
RandomAccessFile29499速度最慢,数据直接刷盘。
FileChannel1868速度比较快。
OS级别cacheMappedByteBuffer1456速度快。
OS级别内存映射JAVA的读写文件方式有很多,性能、特点都不一样,所以需要选择一个合适的。
测试方式:
循环顺序写入10字节数据1000万次BufferedOutputStream虽然最快,但是易丢失数据,权衡之下,我们选择了MappedByteBuffer作为我们的文件操作实现Fqueue一些优化1.FileNo文件全部消费后,交给后台线程异步删除2.在新创建一个FileNo时,会让后台线程预创建下一编号的存储文件3.每10ms让OS强制刷盘4.每个Queue的读写都有自己的Queue级别writeLock1、2在FileRunner.java中实现Fqueue的使用实践队列服务器的常见使用场景-缓解数据库写压力app数据库直接Insertinto应用的性能直接依赖于数据库的响应时间和性能直接写数据库队列服务器的常见使用场景-缓解数据库写压力用户queuequeue数据库处理job高速队列,降低了应用写库的时间,能提高系统的写入吞吐量,应付高峰值批量insert合并写。
(批量插入可提升性能)用队列服务器应付高峰写入队列服务器的常见使用场景-缓解数据库写压力用队列服务器应付高峰写入用户queuequeue数据库处理job数据库宕机,队列部分宕机不影响应用的正常服务队列服务器的常见使用场景-缓解数据库写压力用了队列服务器,如何实现实时性?
用户queuequeue数据库处理job实时缓冲区用户数据库复制merge队列服务器的常见使用场景-任务处理比如发送邮件mailb发送进程发送进程发送进程Queue.get()Queue.get()Queue.get()mailb发送进程Queue.get()发送进程Queue.get()发送进程Queue.get()分组发送队列服务器的常见使用场景-任务处理自描述任务/存储逻辑到队列memcachedClient.add(job_pass,0,#!
/bin/shrnsomecode);
memcachedClient.add(job_pass,0,);
/执行代码Stringcode=memcachedClient.get(job_pass);
Stringresult=RunJob.runCode(code);
队列服务器的常见使用场景-数据收集日志收集appappappqueuequeue统计系统日志监控报警系统系统性能分析系统低延迟,速度稳定延迟比较高,速度不稳定,可能跨机房日处理1亿日志的队列服务资源占用截图,高峰期不超过20%队列服务器的常见使用场景-解耦程序视频网站的用户视频上传流程视频上传视频上传视频上传视频传Queue存储用户上传的信息,文件实体分开存储转换处理Queue存储转换成功的数据Queue存储分发成功的数据转换成功成功的后续处理用队列异步解耦程序,可以更好的进行扩展,这与actor模型类似。
转换处理转换处理文件分发文件分发文件分发dbFqueue的使用PHP使用Java使用(Xmemcached)Fqueue的使用-分布式与key的设计Hash(key_pass)始终只会hash到一台。
(HA)Hash(key_pass_固定字符串),固定hash到3三台,可用于负载均衡。
Hash(Key_pass_变化字符串),随机hash到三台,可用于负载均衡。
Fqueue1Fqueue2Fqueue3clientFqueue实践-Q的火车票余票抓取火车票系统Memcached余票抓取任务Fqueue处理程序处理程序处理程序后台定时任务清除堆积数据FqueueFqueue实践-监控谢谢加入我们吧Q&
A各种技术人员,简历投递到微博联系:
http:
/