java緩衝技術

來源:互聯網
上載者:User

標籤:

摘自:http://symphony.b3log.org/article/1376986299174

一、什麼是緩衝
1、Cache是高速緩衝儲存空間 一種特殊的儲存空間子系統,其中複製了頻繁使用的資料以利於快速存取
2、凡是位於速度相差較大的兩種硬體/軟體之間的,用於協調兩者資料轉送速度差異的結構,均可稱之為 Cache

二、緩衝的分類
1、基於web應用的系統架構圖

2、在系統架構的不同層級之間,為了加快訪問速度,都可以存在緩衝

  • 作業系統磁碟緩衝->減少磁碟機械操作
  • 資料庫緩衝->減少檔案系統I/O
  • 應用程式緩衝->減少對資料庫的查詢 
  • Web伺服器緩衝->減少應用伺服器請求
  • 用戶端瀏覽器緩衝->減少對網站的訪問

三、作業系統緩衝
1、檔案系統提供的Disk Cache:作業系統會把經常訪問到的檔案內容放入到記憶體當中,由檔案系統來管理
2、當應用程式通過檔案系統訪問磁碟檔案的時候,作業系統從Disk Cache當中讀取檔案內容,加速了檔案讀取速度
3、Disk Cache由作業系統來自動管理,一般不用人工幹預,但應當保證實體記憶體充足,以便於作業系統可以使用盡量多的記憶體充當Disk Cache,加速檔案讀取速度
4、特殊的應用程式對檔案系統Disk Cache有很高的要求,會繞開檔案系統Disk Cache,直接存取磁碟分割,自己實現Disk 
5、Cache策略

  • Oracle的raw device(裸裝置) – 直接拋棄檔案系統
  • MySQL的InnoDB: innodb_flush_method = O_DIRECT


四、資料庫緩衝
1、重要性

  • 資料庫通常是公司專屬應用程式系統最核心的部分
  • 資料庫儲存的資料量通常非常龐大
  • 資料庫查詢操作通常很頻繁,有時還很複雜
  • 以上原因造成資料庫查詢會引起非常頻繁的磁碟I/O讀取操作,迫使CPU掛起等待,資料庫效能極度低下

2、緩衝策略
     a、Query Cache

    • 以SQL作為key值緩衝查詢結果集
    • 一旦查詢涉及的表記錄被修改,緩衝就會被自動刪除
    • 設定合適的Query Cache會極大提高資料庫效能
    • Query Cache並非越大越好,過大的Qquery Cache會浪費記憶體。
    • MySQL: query_cache_size= 128M

     b、Data Buffer

    • data buffer是資料庫資料在記憶體中的容器
    • data buffer的命中率直接決定了資料庫的效能
    • data buffer越大越好,多多益善
    • MySQL的InnoDB buffer:innodb_buffer_pool_size = 2G
    • MySQL建議buffer pool開大到伺服器實體記憶體60-80%

五、應用程式緩衝
1、對象緩衝

  • 由O/R Mapping架構例如Hibernate提供,透明性訪問,細顆粒度快取資料庫查詢結果,無需業務代碼顯式編程,是最省事的緩衝策略
  • 當軟體結構按照O/R Mapping架構的要求進行針對性設計,使用對象緩衝將會極大降低Web系統對於資料庫的訪問請求
  • 良好的設計資料庫結構和利用對象緩衝,能夠提供極高的效能,對象緩衝適合OLTP(聯機交易處理)應用

2、查詢快取

  • 對資料庫查詢結果集進行緩衝,類似資料庫的Query Cache
  • 適用於一些耗時,但是時效性要求比較低的情境。查詢快取和對象緩衝適用的情境不一樣,是互為補充的
  • 當查詢結果集涉及的表記錄被修改以後,需要注意清理緩衝

3、頁面緩衝
     a、作用

    • 針對頁面的緩衝技術不但可以減輕資料庫伺服器壓力,還可以減輕應用伺服器壓力
    • 好的頁面緩衝可以極大提高頁面渲染速度
    • 頁面緩衝的痛點在於如何清理到期的緩衝

    b、分類
         I、動態網頁面靜態化

    • 利用模板技術將訪問過一次的動態網頁面產生靜態html,同時修改頁面連結,下一次請求直接存取靜態連結頁面
    • 動態網頁面靜態化技術的廣泛應用於互連網CMS/新聞類Web應用,但也有BBS應用使用該技術,例如Discuz!
    • 無法進行許可權驗證,無法顯示個人化資訊
    • 可以使用AJAX請求彌補動態網頁面靜態化的某些缺點

        II、Servlet緩衝

    • 針對URL訪問返回的頁面結果進行緩衝,適用於粗粒度的頁面緩衝,例如新聞發布
    • 可以進行許可權的檢查
    • OScache提供了簡單的Servlet緩衝(通過web.xml中的配置)
    • 也可以自己編程實現Servlet緩衝

        III、頁面內部緩衝

    • 針對動態網頁面的局部片斷內容進行緩衝,適用於一些個人化但不經常更新的頁面(例如部落格)
    • OSCache提供了簡單的頁面緩衝
    • 可以自行擴充JSP Tag實現頁面局部緩衝


六、web伺服器端緩衝

  • 基於Proxy 伺服器模式的Web伺服器端緩衝,如squid/nginx
  • Web伺服器緩衝技術被用來實現CDN(內容分髮網絡 content delivery network)
  • 被國內主流門戶網站大量採用
  • 不需要編程,但僅限於新聞發布類網站,頁面即時性要求不高

七、基於ajax的瀏覽器緩衝

  • 使用AJAX調用的時候,將資料庫在瀏覽器端緩衝
  • 只要不離開當前頁面,不重新整理當前頁面,就可以直接讀取快取資料
  • 只適用於使用AJAX技術的頁面

 

java緩衝技術

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.