WebSphere Commerce快取技術
引言
前面章節中,對網路流量的“瘦身”方面提出了建議來提升產品效能。本章節將主要介紹一下 WebSphere Commerce 產品中所提供的快取來改善產品效能。
快取技術在當前的互連網應用中已經變得越 來越重要了,尤其是對像 WebSphere Commerce 這樣的企業級電子商務應用。主要原因當然是能夠在一定的硬 件拓撲結構和配置條件下,對網站中訪問最頻繁的頁面及對象進行緩衝來充分提高伺服器的效能,使頁面訪問 起來非常快,提高使用者體驗。
但是緩衝技術就像一把雙刃劍,用的好,可以獲得預期的高效能;用不 好,不但提高不了效能,反而會導致效能下降,甚至引起嚴重的資料不一致的問題。
動態快取作 為一種提高效能的手段,需要和其他產品設計一樣,在整個產品或項目的生命週期中考慮的越早越好。如果只 是在後期效能測試階段發現效能不達標,期望動態快取來解決問題,往往難以如願。
快取概 述
動態快取的核心思想就是重用。在一個典型的 WebSphere Commerce 公司專屬應用程式的設計架構中,如圖 1 所示,從資料庫端,應用伺服器,網頁伺服器,到第三方服務商提供的網路快取(邊緣緩衝),以及瀏覽 器本身的緩衝,我們可以看到緩衝無處不在。可以看出緩衝的位置離客戶越近,緩衝的效果越好(速度越快) ,但是緩衝失效重新整理的代價越大。產品架構師需要從整體上去考慮和把握系統的緩衝策略。
本文不再 詳細介紹瀏覽器緩衝以及邊緣緩衝(常見的為 CDN 緩衝),主要介紹一下 WebSphere Commerce 產品中所提 供的快取以及最佳實務。
圖 1. 典型的 WebSphere Commerce 系統架構
在 WebSphere Commerce 應用中, 我們使用的是由 WebSphere Application Server 提供的 WebSphere 緩衝機制(DynaCache),可以把常用的 緩衝內容分為以下幾種類型:
Servlet/JSP 內容快取,緩衝由 servlet 或 JSP 產生的整個頁面或頁面片段(Fragment)。
命令(Command)快取,可以緩衝命令,EJB 及 WebService 的返回對象。
資料(Data)緩衝,快取資料庫查詢結果。動態緩衝的底層機制是通過 Distributed Map 實現的。
片段(fragment)緩衝
實際系統中的頁面一般都比較複雜,一個頁面中既有相對穩定的資訊,又有動態變化或是個人化的資訊。 如圖 2,頭部工具條,迷你購物車,比較工具以及頁面上的其他片段都是可以被重複使用的。這種情況下,我 們就會把一整個頁面分成若干個不同的片段來進行緩衝,“do-not-consume”屬性可以使某個片段獨立於整個 頁面,被單獨緩衝。從而達到緩衝對象和頁面最大程度的可重用,進而減少伺服器端的負載,來提高系統效能 。
圖 2. 頁面片段樣本