雲計算設計模式(一)cache aside模式
按照需要將資料從資料儲存中載入到快取中。這將提高訪問資料的效能,也會幫助提高儲存在快取中的資料和資料儲存中資料的一致性。
上下文和問題
應用使用快取來提公升重複訪問儲存在資料儲存中資料的效能。然而,希望快取中的資料和資料儲存中的資料總是保持一致,是不現實的。因此,應用需要實現一種策略來保證快取中的資料盡可能新,同時也可以探測和處理快取資料過期的情況。
解決方案
很多的商業快取系統可以提供透讀(read-through),透寫(write-through)和後台寫(write-behind)的操作,在這些系統中,應用通過訪問快取抽取資料,系統將從資料儲存中載入資料並新增到快取中;任何對快取中資料的修改,都將自動寫回到資料儲存中。
如果快取不提供這些功能,那麼,維護資料的一致性,就是使用快取資料的應用程式的職責。
應用程式可以通過實現實現read-aside策略,來模仿read-through的功能,這個策略在需要的時候,載入資料到快取中,下面的圖示列舉了如何使用cache-aside模式在快取中儲存資料。
如果應用更新了資訊,可以遵循write-through策略,更新資料儲存中的資料,並將快取中相應的資料項失效。
當這個資料項下次被訪問的時候,使用cache-aside模式,將導致更新後的資料被從資料儲存中抽取出來,重新新增到快取中。
問題和思考
當你決定使用cache-aside模式時,需要考慮以下幾點:
1)快取資料的生命週期
很多快取實現了過期策略,當快取中的資料在乙個指定的時間內沒有被訪問,快取伺服器會將資料失效,並將其從換出中移除。為了保證cache-aside是有效的,就需要確保過期策略與應用程式使用的資料的訪問模式想匹配。不要讓快取的過期時間太短,因為這將導致應用不斷的從資料儲存載入資料,並新增到快取中。同樣的,不要讓過期時間太長,這樣資料容易過期。記住,快取對於相對靜態的資料,或者頻繁被讀取的資料來說,更為有效。
2)驅逐資料
與儲存原始資料的資料儲存相比,快取的大小一般都有限制,在必要的時候,需要清理資料。大部分的快取使用最少最近使用策略來選擇需要驅逐的資料。但這是可以定製的。配置快取的全域性屬性和其他屬性,加上每個快取資料的過期屬性,來保證快取是具有成本效益的,因為全域性的驅逐策略,對於每個資料項來說,並不總是合適的。舉個例子,如果乙個快取資料項從資料儲存載入資料是非常昂貴的,那麼,更有效的方式是,犧牲那些頻繁訪問,但是開銷更小的的專案,將這些資料一直留存在快取中。
3)啟動快取
很多解決方案會預先根據應用程式經常需要的資料,預先計算快取。並作為啟動過程的一部分。在這種場景下,當資料過期,或者被驅逐的時候,cache-aside模式仍然是有效的。
4)一致性
cache-aside模式並不能保證資料儲存和快取之間的一致性。資料儲存中的乙個資料項,可能在任何時候被外部程序改變,這個改變無法被反射到快取中,直到下一次資料被載入。在乙個存在跨資料來源的資料複製的系統中,如果同步頻繁發生,問題會變得很嚴重。
5)本地(記憶體)快取
乙個快取可以被儲存到應用程式的本地記憶體中。在這種環境中,如果應用頻繁訪問相同的資料的話,cache-aside模式也是有效的。然而,本地快取是私有的,因此不同的應用例項都會持有相同資料的乙份快取。這些快取可能會很快在各個應用程式例項之間變得不一致。因此,可能需要更頻繁的過期和重新整理儲存在私有快取中的資料。在這種場景下,需要研究是否需要使用共享快取或者分布式快取。
何時使用這個模式
當符合下面的條件時,可以使用:
1)快取不提供原生的read-through和wirte-through操作的支援
2)需要的資源是不可**的,這個模式使得應用能夠按需載入資料,不會假設應用將會需要哪些資料。
在下面的情況下,模式可能不適用:
1)快取的資料集是靜態的,如果將資料載入到可用的快取空間,在應用程式啟動的時候啟動快取資料,並且適用某種策略防止快取失效。
2)快取會話狀態資訊在web應用中,在這種環境中,你應該避免在c/s程式中額外的引入依賴關係。
雲計算設計模式(十) 守門員模式
通過使用充當客戶端和應用程式或服務之間的 驗證和進行消毒的請求,並將它們之間的請求和資料的專用主機例項保護的應用程式和服務。這可以提供乙個額外的安全層,並限制了系統的攻擊面。應用程式通過接受和處理請求揭露它們的功能提供給客戶。在雲託管方案,應用程式暴露終端客戶機連線,一般包括 來處理來自客戶端的請求...
事件朔源模式 雲計算架構常用設計模式
在分布式系統當中,處理資料的主要方法是儲存資料當前的狀態。例如,傳統的crud模式種,從儲存器讀取資料,進行修改,並更新資料庫種當前的資料狀態,而此過程的實現,通常需要鎖定資料的事務來進行實現。因此,這個過程主要存在著一些侷限性 此模式主要是使用增儲存去記錄領域中一系列操作執行的事件的完整記錄,而不...
雲計算設計模式(四) 消費者的競爭模式
允許多個併發使用者處理在同乙個通訊通道接收的訊息。這種模式使系統能夠同時處理多個郵件,以優化吞吐量,提高可擴充套件性和可用性,以及平衡工作負載。在雲中執行的應用程式,可以預計,以處理大量的請求。而不是過程的每個請求同步地,乙個常用的方法是通過乙個訊息傳送系統到該非同步地處理它們的另一服務 消費者服務...