版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、緩存技術(shù)淺談Robbin Fan緩存是什么,解決什么問題?vCache是高速緩沖存儲器 一種特殊的存儲器子系統(tǒng),其中復(fù)制了頻繁使用的數(shù)據(jù)以利于快速訪問v凡是位于速度相差較大的兩種硬件/軟件之間的,用于協(xié)調(diào)兩者數(shù)據(jù)傳輸速度差異的結(jié)構(gòu),均可稱之為 Cache基于Web應(yīng)用的系統(tǒng)架構(gòu)圖數(shù)據(jù)庫應(yīng)用服務(wù)器Web服務(wù)器存儲設(shè)備瀏覽器Web應(yīng)用架構(gòu)操作系統(tǒng)的文件系統(tǒng)Web應(yīng)用系統(tǒng)存在哪些速度差異?v讀取文件系統(tǒng) 讀取磁盤v讀取數(shù)據(jù)庫內(nèi)存 讀取文件系統(tǒng) v讀取應(yīng)用內(nèi)存 訪問數(shù)據(jù)庫服務(wù)器v讀取靜態(tài)文件 訪問應(yīng)用服務(wù)器v讀取瀏覽器緩存 訪問網(wǎng)站緩存技術(shù)分類v操作系統(tǒng)磁盤緩存 減少磁盤機械操作v數(shù)據(jù)庫緩存 減少文件
2、系統(tǒng)I/Ov應(yīng)用程序緩存 減少對數(shù)據(jù)庫的查詢 vWeb服務(wù)器緩存 減少應(yīng)用服務(wù)器請求v客戶端瀏覽器緩存 減少對網(wǎng)站的訪問操作系統(tǒng)緩存概述v文件系統(tǒng)提供的Disk Cache:操作系統(tǒng)會把經(jīng)常訪問到的文件內(nèi)容放入到內(nèi)存當(dāng)中,由文件系統(tǒng)來管理v當(dāng)應(yīng)用程序通過文件系統(tǒng)訪問磁盤文件的時候,操作系統(tǒng)從Disk Cache當(dāng)中讀取文件內(nèi)容,加速了文件讀取速度vDisk Cache由操作系統(tǒng)來自動管理,一般不用人工干預(yù),但應(yīng)當(dāng)保證物理內(nèi)存充足,以便于操作系統(tǒng)可以使用盡量多的內(nèi)存充當(dāng)Disk Cache,加速文件讀取速度v特殊的應(yīng)用程序?qū)ξ募到y(tǒng)Disk Cache有很高的要求,會繞開文件系統(tǒng)Disk Cac
3、he,直接訪問磁盤分區(qū),自己實現(xiàn)Disk Cache策略 Oracle的raw device(裸設(shè)備) 直接拋棄文件系統(tǒng) MySQL的InnoDB: innodb_flush_method = O_DIRECTWindows的Disk CacheLinux的Disk Cache數(shù)據(jù)庫緩存的重要性v為什么數(shù)據(jù)庫非常依賴緩存? 數(shù)據(jù)庫通常是企業(yè)應(yīng)用系統(tǒng)最核心的部分 數(shù)據(jù)庫保存的數(shù)據(jù)量通常非常龐大 數(shù)據(jù)庫查詢操作通常很頻繁,有時還很復(fù)雜 以上原因造成數(shù)據(jù)庫查詢會引起非常頻繁的磁盤I/O讀取操作,迫使CPU掛起等待,數(shù)據(jù)庫性能極度低下v數(shù)據(jù)庫有哪些緩存策略? Query Cache Data Buff
4、erQuery Cachev 以SQL作為key值緩存查詢結(jié)果集v 一旦查詢涉及的表記錄被修改,緩存就會被自動刪除v 設(shè)置合適的Query Cache會極大提高數(shù)據(jù)庫性能vQuery Cache并非越大越好,過大的Qquery Cache會浪費內(nèi)存。vMySQL: query_cache_size= 128MMySQL Query Cache監(jiān)控工具vshow status like Qcache%;vmysqlreport腳本vMySQL AdministratorQuery Cache狀態(tài)示例_ Query Cache _Memory usage 25.77M of 64.00M %Use
5、d: 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:1Data Buffervdata buffer是數(shù)據(jù)庫數(shù)據(jù)在內(nèi)存中的容器vdata buffer的命中率直接決定了數(shù)據(jù)庫的性能vdata buffer越大越好,多多益善vMySQL的InnoDB buffer:innodb_buffer_pool_size = 2GvMySQL建議buffer pool開大到服務(wù)器物理內(nèi)存60-80%MySQL buffer 監(jiān)控工具vshow
6、innodb statusGvshow status like innodb%;vmysqlreport腳本vinnotopInnoDB buffer狀態(tài)示例_ InnoDB Buffer Pool _Usage 1000.00 of 1000.00 %Used: 100.00Read hit 99.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 98
7、684 0.0/s Ahead Sql 9548 0.0/sWrites 86.79M 40.3/sFlushes 14.08M 6.5/sWait Free 0 0/s應(yīng)用程序緩存概述v對象緩存v查詢緩存v頁面緩存 動態(tài)頁面靜態(tài)化 Servlet緩存 頁面內(nèi)部緩存對象緩存v由O/R Mapping框架例如Hibernate提供,透明性訪問,細顆粒度緩存數(shù)據(jù)庫查詢結(jié)果,無需業(yè)務(wù)代碼顯式編程,是最省事的緩存策略v當(dāng)軟件結(jié)構(gòu)按照O/R Mapping框架的要求進行針對性設(shè)計,使用對象緩存將會極大降低Web系統(tǒng)對于數(shù)據(jù)庫的訪問請求v良好的設(shè)計數(shù)據(jù)庫結(jié)構(gòu)和利用對象緩存,能夠提供極高的性能,對象緩存適合
8、OLTP(聯(lián)機事務(wù)處理)應(yīng)用對象緩存分類v對映射數(shù)據(jù)庫表記錄的entity對象進行緩存v對1對n關(guān)系的集合進行緩存v對n對1關(guān)系的關(guān)聯(lián)對象進行緩存Hibernate對象緩存配置Entity Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class Forest . 配置配置entity對象緩存對象緩存配置關(guān)聯(lián)集合的緩存配置關(guān)聯(lián)集合的緩存OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) JoinColumn(name=CUST_ID) Cac
9、he(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public SortedSet getTickets() return tickets; 僅僅添加Annotation就可以了,無須編碼,即可自動享受對象緩存。Hibernate會攔截對象的CRUD操作,針對對象讀取操作進行緩存,針對對象修改操作自動清理緩存Hibernate二級緩存是提升web應(yīng)用性能的法寶vOLTP類型的web應(yīng)用,由于應(yīng)用服務(wù)器端可以進行群集水平擴展,最終的系統(tǒng)瓶頸總是逃不開數(shù)據(jù)庫訪問;v哪個框架能夠最大限度減少數(shù)據(jù)庫訪問,降低數(shù)據(jù)庫訪問壓力,哪個框架提供
10、的性能就更高;v針對數(shù)據(jù)庫的緩存策略:對象緩存:細顆粒度,針對表的記錄級別,透明化訪問,在不改變程序代碼的情況下可以極大提升web應(yīng)用的性能。對象緩存是ORM的制勝法寶。對象緩存的優(yōu)劣取決于框架實現(xiàn)的水平,Hibernate是目前已知對象緩存最強大的開源ORM查詢緩存:粗顆粒度,針對查詢結(jié)果集,應(yīng)用于數(shù)據(jù)實時化要求不高的場合查詢緩存v對數(shù)據(jù)庫查詢結(jié)果集進行緩存,類似數(shù)據(jù)庫的Query Cachev適用于一些耗時,但是時效性要求比較低的場景。查詢緩存和對象緩存適用的場景不一樣,是互為補充的v當(dāng)查詢結(jié)果集涉及的表記錄被修改以后,需要注意清理緩存Hibernate查詢緩存v在配置文件中打開Query
11、 Cachehibernate.cache.use_query_cache true v在查詢的時候顯式編碼使用CacheList blogs = sess.createQuery(from Blog blog where blog.blogger = :blogger) .setEntity(blogger,blogger) .setMaxResults(15) .setCacheable(true) .setCacheRegion(frontpages) .list(); Hibernate查詢緩存特征v并非緩存整個查詢結(jié)果集,而是緩存查詢結(jié)果集entity對象的id集合 blogId1,
12、 blogId2, blogId3, 在遍歷結(jié)果集的時候,再按照blogId去查詢blog對象,例如 select blog.* from blog where id=? 如果此時blog配置了對象緩存,則自動讀取對象緩存vHibernate查詢緩存會自動清理過期緩存 一旦結(jié)果集涉及的entity被修改,查詢緩存就被自動清理頁面緩存v頁面緩存的作用是什么? 針對頁面的緩存技術(shù)不但可以減輕數(shù)據(jù)庫服務(wù)器壓力,還可以減輕應(yīng)用服務(wù)器壓力 好的頁面緩存可以極大提高頁面渲染速度 頁面緩存的難點在于如何清理過期的緩存v頁面緩存技術(shù)有哪些? 動態(tài)頁面靜態(tài)化 Servlet緩存 頁面局部緩存動態(tài)頁面靜態(tài)化v利用
13、模板技術(shù)將訪問過一次的動態(tài)頁面生成靜態(tài)html,同時修改頁面鏈接,下一次請求直接訪問靜態(tài)鏈接頁面v動態(tài)頁面靜態(tài)化技術(shù)的廣泛應(yīng)用于互聯(lián)網(wǎng)CMS/新聞類Web應(yīng)用,但也有BBS應(yīng)用使用該技術(shù),例如Discuz!v無法進行權(quán)限驗證,無法顯示個性化信息v可以使用AJAX請求彌補動態(tài)頁面靜態(tài)化的某些缺點Servlet緩存v針對URL訪問返回的頁面結(jié)果進行緩存,適用于粗粒度的頁面緩存,例如新聞發(fā)布v可以進行權(quán)限的檢查vOScache提供了簡單的Servlet緩存(通過web.xml中的配置)v也可以自己編程實現(xiàn)Servlet緩存OSCache Servlet緩存示例 CacheFilter com.ope
14、nsymphony.oscache.web.filter.CacheFilter time 600 scope session CacheFilter /news/*頁面局部緩存v針對動態(tài)頁面的局部片斷內(nèi)容進行緩存,適用于一些個性化但不經(jīng)常更新的頁面(例如博客)vOSCache提供了簡單的頁面緩存v可以自行擴展JSP Tag實現(xiàn)頁面局部緩存OSCache的頁面局部緩存 . some jsp content . . some jsp content .cache:cache key= time=1800 refresh= . some jsp content .cache:cache key=
15、cron=0 2 * * * refresh= . some jsp content .應(yīng)用緩存的緩存服務(wù)器vEHCache 適合充當(dāng)對象緩存和Hibernate集成效果很好,Gavin King也是EHCache作者之一v OSCache 充當(dāng)Servlet和頁面緩存 在一個Web應(yīng)用當(dāng)中可以同時使用OSCache和EHCachev JBossCache 在Java群集環(huán)境下使用 支持緩存在節(jié)點之間的復(fù)制,在JBoss AS上被用來實現(xiàn)HTTP Session的內(nèi)存復(fù)制功能非Java實現(xiàn)的通用緩存產(chǎn)品vMemcached 在大規(guī)模互聯(lián)網(wǎng)應(yīng)用下使用 每秒支撐1.5萬2萬次請求v Tokyo T
16、yrant 兼容memcached協(xié)議,可以持久化存儲 支持故障切換,對緩存服務(wù)器有高可靠性要求可以使用 每秒支撐0.5萬0.8萬次請求Web服務(wù)器端緩存技術(shù)v基于代理服務(wù)器模式的Web服務(wù)器端緩存 squid/nginxvWeb服務(wù)器緩存技術(shù)被用來實現(xiàn)CDN(內(nèi)容分發(fā)網(wǎng)絡(luò) content delivery network)v 被國內(nèi)主流門戶網(wǎng)站大量采用v 不需要編程,但僅限于新聞發(fā)布類網(wǎng)站,頁面實時性要求不高基于AJAX技術(shù)的瀏覽器緩存v使用AJAX調(diào)用的時候,將數(shù)據(jù)庫在瀏覽器端緩存v只要不離開當(dāng)前頁面,不刷新當(dāng)前頁面,就可以直接讀取緩存數(shù)據(jù)v只適用于使用AJAX技術(shù)的頁面 1. 2. 3.
17、 !- 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內(nèi)容 11. else 12. page -; 13. if(page 27. 28. input value= 29. onclick=gopage(+,this)
18、type=button 30. page:1 31. data area 未使用AJAX緩存代碼# # !- # var cache_data = new Array();/定義全局變量用來保存緩存數(shù)據(jù) # 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) ) # /如果緩存存在,則直接調(diào)用緩存數(shù)據(jù),不用再去服務(wù)器進行數(shù)據(jù)請求 # alert(cache hit); # $(#data2).html(cache_datapage); # $(#page2).html(page); # return true; # # $(#page2).html(page);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離婚后按揭房產(chǎn)權(quán)屬變更及子女撫養(yǎng)協(xié)議3篇
- 二零二五年度政府推動下城鄉(xiāng)一體化房屋拆遷賠償協(xié)議3篇
- 二零二五年度車貸擔(dān)保居間服務(wù)合同示范文本3篇
- 2025年度大學(xué)特聘教授聘任合同(含學(xué)術(shù)團隊建設(shè)與領(lǐng)導(dǎo)力培養(yǎng))4篇
- 2025年度小麥種植基地土地流轉(zhuǎn)租賃合同
- 2025版婚介機構(gòu)勞務(wù)合作合同標(biāo)準范本3篇
- 2025年度35kv線路施工項目設(shè)計變更與索賠處理合同2篇
- 2025年度膨脹珍珠巖項目工程合同售后服務(wù)規(guī)范范本
- 2025股權(quán)持有與員工期權(quán)計劃協(xié)議3篇
- 二零二五年度大豆國際采購代理合同4篇
- 新教材人教版高中物理選擇性必修第二冊全冊各章節(jié)課時練習(xí)題及章末測驗含答案解析(安培力洛倫茲力電磁感應(yīng)交變電流等)
- 初級養(yǎng)老護理員培訓(xùn)全套
- 集中供熱管網(wǎng)系統(tǒng)一次網(wǎng)的調(diào)節(jié)方法
- GB/T 41095-2021機械振動選擇適當(dāng)?shù)臋C器振動標(biāo)準的方法
- MRP、MPS計劃文檔教材
- 甲狀腺疾病護理查房課件
- 安全安全帶檢查記錄表
- GB∕T 26520-2021 工業(yè)氯化鈣-行業(yè)標(biāo)準
- 2022年浙江省紹興市中考數(shù)學(xué)試題及參考答案
- Listen-to-this-3-英語高級聽力-(整理版)
- 生活垃圾焚燒處理建設(shè)項目評價導(dǎo)則(2022)
評論
0/150
提交評論