缓存技术对比分析精选PPT.ppt

上传人:石*** 文档编号:42764585 上传时间:2022-09-16 格式:PPT 页数:38 大小:1.62MB
返回 下载 相关 举报
缓存技术对比分析精选PPT.ppt_第1页
第1页 / 共38页
缓存技术对比分析精选PPT.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《缓存技术对比分析精选PPT.ppt》由会员分享,可在线阅读,更多相关《缓存技术对比分析精选PPT.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、缓存技术对比分析第1页,此课件共38页哦缓存是什么,解决什么问题?vCache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问v凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache第2页,此课件共38页哦基于Web应用的系统架构图数据库应用服务器Web服务器存储设备浏览器Web应用架构操作系统的文件系统第3页,此课件共38页哦Web应用系统存在哪些速度差异?v读取文件系统 读取磁盘v读取数据库内存 读取文件系统 v读取应用内存 访问数据库服务器v读取静态文件 访问应用服务器v读取浏览器缓存 访问网站第4页,此课件

2、共38页哦缓存技术分类v操作系统磁盘缓存 减少磁盘机械操作v数据库缓存 减少文件系统I/Ov应用程序缓存 减少对数据库的查询 vWeb服务器缓存 减少应用服务器请求v客户端浏览器缓存 减少对网站的访问第5页,此课件共38页哦操作系统缓存概述v文件系统提供的Disk Cache:操作系统会把经常访问到的文件内容放入到内存当中,由文件系统来管理v当应用程序通过文件系统访问磁盘文件的时候,操作系统从Disk Cache当中读取文件内容,加速了文件读取速度vDisk Cache由操作系统来自动管理,一般不用人工干预,但应当保证物理内存充足,以便于操作系统可以使用尽量多的内存充当Disk Cache,加

3、速文件读取速度v特殊的应用程序对文件系统Disk Cache有很高的要求,会绕开文件系统Disk Cache,直接访问磁盘分区,自己实现Disk Cache策略 Oracle的raw device(裸设备)直接抛弃文件系统 MySQL的InnoDB:innodb_flush_method=O_DIRECT第6页,此课件共38页哦Windows的Disk Cache第7页,此课件共38页哦Linux的Disk Cache第8页,此课件共38页哦数据库缓存的重要性v为什么数据库非常依赖缓存?数据库通常是企业应用系统最核心的部分 数据库保存的数据量通常非常庞大 数据库查询操作通常很频繁,有时还很复杂

4、 以上原因造成数据库查询会引起非常频繁的磁盘I/O读取操作,迫使CPU挂起等待,数据库性能极度低下v数据库有哪些缓存策略?Query Cache Data Buffer第9页,此课件共38页哦Query Cachev 以SQL作为key值缓存查询结果集v 一旦查询涉及的表记录被修改,缓存就会被自动删除v 设置合适的Query Cache会极大提高数据库性能vQuery Cache并非越大越好,过大的Qquery Cache会浪费内存。vMySQL:query_cache_size=128M第10页,此课件共38页哦MySQL Query Cache监控工具vshow status like Q

5、cache%;vmysqlreport脚本vMySQL Administrator第11页,此课件共38页哦Query Cache状态示例_ Query Cache _Memory usage 25.77M of 64.00M%Used:40.26Block Fragmnt 24.73%Hits 6.98M 3.2/sInserts 100.87M 46.9/sInsrt:Prune 34.15:1 45.5/sHit:Insert 0.07:1第12页,此课件共38页哦Data Buffervdata buffer是数据库数据在内存中的容器vdata buffer的命中率直接决定了数据库的性

6、能vdata buffer越大越好,多多益善vMySQL的InnoDB buffer:innodb_buffer_pool_size=2GvMySQL建议buffer pool开大到服务器物理内存60-80%第13页,此课件共38页哦MySQL buffer 监控工具vshow innodb statusGvshow status like innodb%;vmysqlreport脚本vinnotop第14页,此课件共38页哦InnoDB buffer状态示例_ InnoDB Buffer Pool _Usage 1000.00 of 1000.00%Used:100.00Read hit 9

7、9.99%Pages Free 0%Total:0.00 Data 59.69k 93.26%Drty:0.02 Misc 4311 6.74 Latched 0 0.00Reads 60.30G 28.0k/s From file 7.01M 3.3/s 0.01 Ahead Rnd 98684 0.0/s Ahead Sql 9548 0.0/sWrites 86.79M 40.3/sFlushes 14.08M 6.5/sWait Free 0 0/s第15页,此课件共38页哦应用程序缓存概述v对象缓存v查询缓存v页面缓存 动态页面静态化 Servlet缓存 页面内部缓存第16页,此课件

8、共38页哦对象缓存v由O/R Mapping框架例如Hibernate提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程,是最省事的缓存策略v当软件结构按照O/R Mapping框架的要求进行针对性设计,使用对象缓存将会极大降低Web系统对于数据库的访问请求v良好的设计数据库结构和利用对象缓存,能够提供极高的性能,对象缓存适合OLTP(联机事务处理)应用第17页,此课件共38页哦对象缓存分类v对映射数据库表记录的entity对象进行缓存v对1对n关系的集合进行缓存v对n对1关系的关联对象进行缓存第18页,此课件共38页哦Hibernate对象缓存配置Entity Cache(u

9、sage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)public class Forest .配置配置entity对象缓存对象缓存配置关联集合的缓存配置关联集合的缓存OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)JoinColumn(name=CUST_ID)Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)public SortedSet getTickets()return tickets;仅仅添加Annota

10、tion就可以了,无须编码,即可自动享受对象缓存。Hibernate会拦截对象的CRUD操作,针对对象读取操作进行缓存,针对对象修改操作自动清理缓存第19页,此课件共38页哦Hibernate二级缓存是提升web应用性能的法宝vOLTP类型的web应用,由于应用服务器端可以进行群集水平扩展,最终的系统瓶颈总是逃不开数据库访问;v哪个框架能够最大限度减少数据库访问,降低数据库访问压力,哪个框架提供的性能就更高;v针对数据库的缓存策略:对象缓存:细颗粒度,针对表的记录级别,透明化访问,在不改变程序代码的情况下可以极大提升web应用的性能。对象缓存是ORM的制胜法宝。对象缓存的优劣取决于框架实现的水

11、平,Hibernate是目前已知对象缓存最强大的开源ORM查询缓存:粗颗粒度,针对查询结果集,应用于数据实时化要求不高的场合第20页,此课件共38页哦查询缓存v对数据库查询结果集进行缓存,类似数据库的Query Cachev适用于一些耗时,但是时效性要求比较低的场景。查询缓存和对象缓存适用的场景不一样,是互为补充的v当查询结果集涉及的表记录被修改以后,需要注意清理缓存第21页,此课件共38页哦Hibernate查询缓存v在配置文件中打开Query Cachehibernate.cache.use_query_cache true v在查询的时候显式编码使用CacheList blogs=ses

12、s.createQuery(from Blog blog where blog.blogger=:blogger).setEntity(blogger,blogger).setMaxResults(15).setCacheable(true).setCacheRegion(frontpages).list();第22页,此课件共38页哦Hibernate查询缓存特征v并非缓存整个查询结果集,而是缓存查询结果集entity对象的id集合 blogId1,blogId2,blogId3,在遍历结果集的时候,再按照blogId去查询blog对象,例如 select blog.*from blog w

13、here id=?如果此时blog配置了对象缓存,则自动读取对象缓存vHibernate查询缓存会自动清理过期缓存 一旦结果集涉及的entity被修改,查询缓存就被自动清理第23页,此课件共38页哦页面缓存v页面缓存的作用是什么?针对页面的缓存技术不但可以减轻数据库服务器压力,还可以减轻应用服务器压力 好的页面缓存可以极大提高页面渲染速度 页面缓存的难点在于如何清理过期的缓存v页面缓存技术有哪些?动态页面静态化 Servlet缓存 页面局部缓存第24页,此课件共38页哦动态页面静态化v利用模板技术将访问过一次的动态页面生成静态html,同时修改页面链接,下一次请求直接访问静态链接页面v动态页面

14、静态化技术的广泛应用于互联网CMS/新闻类Web应用,但也有BBS应用使用该技术,例如Discuz!v无法进行权限验证,无法显示个性化信息v可以使用AJAX请求弥补动态页面静态化的某些缺点第25页,此课件共38页哦Servlet缓存v针对URL访问返回的页面结果进行缓存,适用于粗粒度的页面缓存,例如新闻发布v可以进行权限的检查vOScache提供了简单的Servlet缓存(通过web.xml中的配置)v也可以自己编程实现Servlet缓存第26页,此课件共38页哦OSCache Servlet缓存示例 CacheFilter com.opensymphony.oscache.web.filte

15、r.CacheFilter time 600 scope session CacheFilter /news/*第27页,此课件共38页哦页面局部缓存v针对动态页面的局部片断内容进行缓存,适用于一些个性化但不经常更新的页面(例如博客)vOSCache提供了简单的页面缓存v可以自行扩展JSP Tag实现页面局部缓存第28页,此课件共38页哦OSCache的页面局部缓存 .some jsp content.some jsp content.cache:cache key=time=1800 refresh=.some jsp content.cache:cache key=cron=0 2*ref

16、resh=.some jsp content.第29页,此课件共38页哦应用缓存的缓存服务器vEHCache 适合充当对象缓存和Hibernate集成效果很好,Gavin King也是EHCache作者之一v OSCache 充当Servlet和页面缓存 在一个Web应用当中可以同时使用OSCache和EHCachev JBossCache 在Java群集环境下使用 支持缓存在节点之间的复制,在JBoss AS上被用来实现HTTP Session的内存复制功能第30页,此课件共38页哦非Java实现的通用缓存产品vMemcached 在大规模互联网应用下使用 每秒支撑1.5万2万次请求v To

17、kyo Tyrant 兼容memcached协议,可以持久化存储 支持故障切换,对缓存服务器有高可靠性要求可以使用 每秒支撑0.5万0.8万次请求第31页,此课件共38页哦Web服务器端缓存技术v基于代理服务器模式的Web服务器端缓存 squid/nginxvWeb服务器缓存技术被用来实现CDN(内容分发网络 content delivery network)v 被国内主流门户网站大量采用v 不需要编程,但仅限于新闻发布类网站,页面实时性要求不高第32页,此课件共38页哦基于AJAX技术的浏览器缓存v使用AJAX调用的时候,将数据库在浏览器端缓存v只要不离开当前页面,不刷新当前页面,就可以直接

18、读取缓存数据v只适用于使用AJAX技术的页面第33页,此课件共38页哦 1.2.3.!-4.function gopage(option,obj)5.var page=$(#page).html()*1;6.obj.disabled=true;7.if(option=+)8.page+;9.var url=data.php?page=+page+&r=+Math.random();10./获取ajax url,后面的random是为了防止浏览器缓存xml内容 11.else 12.page-;13.if(page 27.28.input value=29.onclick=gopage(+,th

19、is)type=button 30.page:1 31.data area 未使用AJAX缓存代码第34页,此课件共38页哦#!-#var cache_data=new Array();/定义全局变量用来保存缓存数据#function gopageCache(option,obj)#var page=$(#page2).html()*1;#if(option=+)#page+;#var url=data.php?page=+page+&r=+Math.random();#else#page-;#if(page 1)#/如果缓存存在,则直接调用缓存数据,不用再去服务器进行数据请求#alert(c

20、ache hit);#$(#data2).html(cache_datapage);#$(#page2).html(page);#return true;#$(#page2).html(page);#obj.disabled=true;#$(#data2).html(loading(cache enabled).);#$(#data2).load(url,#limit:25,#function(responseText)obj.disabled=false;#cache_datapage=responseText;/将当前的数据存入到内存(缓存变量)中#);#/-#input value=#o

21、nclick=gopageCache(+,this)type=button#page:1#data area 使用AJAX缓存代码第35页,此课件共38页哦基于HTTP协议的资源缓存Etag 12523074“Last-Modified Thu,29 May 2008 09:43:46 GMT/blog/blogIf-Modified-Since Thu,29 May 2008 09:43:46 GMTIf-None-Match 12523074 304 Not Modified第36页,此课件共38页哦基于资源的缓存示例 CacheFilterStaticContent com.opensymphony.oscache.web.filter.CacheFilter expires time CacheFilterStaticContent *.jsp第37页,此课件共38页哦谢 谢!第38页,此课件共38页哦

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁