成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

軟件架構中的跨層緩存

譯文
開發 架構
本文將介紹緩存是什么,緩存解決的問題,以及如何跨系統架構層應用緩存來解決現代軟件系統面臨的一些挑戰。

?譯者 | 李睿

審校 | 孫淑娟

本文面向軟件開發人員、技術經理、軟件架構師、測試工程師以及其他有興趣了解如何在軟件系統中使用緩存的人員。 

1.緩存是什么?  

(1)為什么需要緩存 

如今,現代軟件系統變得越來越分散和復雜,帶來了許多挑戰和問題,尤其是與系統性能相關的問題。系統運行緩慢可能會導致企業失去信譽和盈利能力。 

下圖顯示了現代分布式架構的一個非常簡單的視圖。需要注意的是,實際架構會更加復雜,因為許多微服務(內部和外部)作為流程的一部分執行。在系統設計中還會有其他組件,例如消息傳遞系統、LDAP、規則引擎等。 

圖片

軟件系統的層級如上圖所示,不同組件之間存在大量的交互,需要跳轉來完成單個請求。由于組件的處理時間和等待下游組件響應的等待時間的累積,將會增加每個接觸點的延遲。

需要注意的是,處理時間可能是由于應用程序本身或下游系統所花費的時間,也可能是由于網絡(例如DNS查找、建立連接、網絡傳輸時間等)的延遲。 

緩存通過將數據副本保存在應用程序的客戶端/組件附近來幫助提高系統性能來發揮重要作用。 

(2)緩存的工作原理

如上圖所示,軟件系統中可以有不同的層和交互。緩存可以應用于任何一層,但緩存操作的基本原理保持不變。緩存數據將用于避免代昂貴的網絡跳變、來自底層數據庫的調用或存儲速度較慢的存儲系統。下圖顯示了緩存在特定場景中的工作方式。這可以通過以下步驟順序來解釋。需要注意,在各種場景中緩存的實現可能會有所不同,但在較高層次上,基本方法保持不變。 

圖片

  • 系統/組件接收發送回請求數據的請求。 
  • 它將檢查請求的數據是否在緩存中。 
  • 如果數據在緩存中,將返回相同的緩存數據。 
  • 否則,系統將從源(例如數據庫、外部系統或API調用)獲取數據,并將使用這數據填充緩存。 
  • 最后,此數據將返回給調用者。

(3)使用緩存的優點 

  • 更好的應用程序性能:使用緩存的主要優點是它提高了應用程序的性能。由于所請求的數據通常在更靠近應用程序的地方可用,因此在快速內存訪問中,它可以被返回并重新用于進一步處理。這有助于提高應用程序的性能。 
  • 避免不必要的磁盤訪問/網絡跳變:由于請求的數據通常在靠近應用程序的地方可用,在快速的內存訪問中,這可以幫助避免不必要的跳變到較慢的組件,例如數據庫、磁盤或調用其他組件/系統通過網絡。這也有助于提高應用程序性能。 
  • 更好的數據庫擴展性:由于現在對數據庫的查詢減少了,其容量被釋放來處理其他請求。這可以減少數據庫負載/成本,并提高可擴展性。其他后端系統/組件也是如此。 

(4)使用緩存時的重要注意事項 

在為給定場景設計緩存框架時,必須做出一些重要的決定。以下是緩存設計的一些關鍵方面的總結: 

  • 應該緩存多少數據? 
  • 在緩存中插入新數據時,哪些數據必須刪除或保留? 
  • 緩存中的數據是否仍然相關,或者是否過時?
  • 如何使緩存中的數據保持最新? 
  • 如何保持更低的緩存未命中率?

緩存的類型/風格和各種緩存策略方法將在以下部分中討論。以下了解這些影響緩存的行為,并解決上面提出的一些問題。 

(5)多種風格的緩存 

本文將討論通常用于管理底層數據存儲更新場景的各種策略。如上所述,緩存未命中率應保持在較低水平。 

緩存未命中是指在緩存中找不到請求的數據的情況,而緩存命中是指在緩存中找到請求的數據且無需從源中檢索的情況。

為了保持更低的緩存未命中率,緩存數據應保持最新狀態。根據應用程序模式的不同,可以使用以下技術之一來確保緩存中的數據盡可能是最新的。 

  • 直寫緩存:在這種技術中,數據首先在緩存中更新,然后是源系統。這將確保緩存始終具有最近更新的數據。但是,這會導致源系統上發生的寫入操作延遲。如果應用程序是寫密集型的,則不建議使用這一方法。 
  • 回寫緩存:為了克服直寫緩存的問題,可以使用回寫緩存技術。同樣在這種情況下,緩存也是首先更新的。但是,緩存中的更新數據會異步同步回源系統。如果應用程序需要更高級別的源系統一致性,這并不是讓人推薦的技術。 
  • 繞寫緩存:在這種技術中,數據直接在源系統中更新。緩存將定期刷新,以更新數據存儲中的數據。這有可能會獲取過時數據或提高緩存未命中率。

2.緩存刷新策略示例 

以下總結了一些用于刷新緩存內容的最流行的技術,可能有多種原因需要刷新緩存。由于緩存大小通常比源小得多,因此并非所有數據都可以緩存。隨著緩存大小隨時間增長,它可能會變滿。采用更需要或更常用的數據替換緩存中的舊數據將降低緩存未命中率。以下是刷新緩存項目的常用技術列表。 

(1)最近使用(MRU):在這種技術中,最近使用的緩存項目首先被丟棄,并被新項目替換。 

(2)最近最少使用(LRU):在這種技術中,最近最少使用的項目首先被丟棄,并被新項目替換。 

(3)先進先出(FIFO):在這種技術中,要插入緩存的第一個項目首先被丟棄,并被新項目替換。 

(4)后進先出(LIFO):在這種技術中,要插入緩存中的最后一個項目首先被丟棄,并被新項目替換。 

(5)最近最不常用(LFU):在這種技術中,緩存中使用最少的項目首先被丟棄,并被新項目替換。 

(6)最常用(MFU):在這種技術中,緩存中最常用的項目首先被丟棄,并被新項目替換。 

3. 跨層緩存 

 下表總結了如何在軟件系統中跨層使用緩存,還重點介紹了一些工具/框架,它們可用于在給定場景中實現緩存。 

需要注意的是,在軟件應用程序中,緩存可以應用于一層或多層。 

圖片

原文鏈接:https://dzone.com/articles/caching-across-layers-in-software-architecture?

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2012-01-13 10:13:57

軟件定義網絡SDNOpenFlow

2017-08-22 15:58:56

2022-07-10 07:48:26

緩存軟件設計

2019-09-29 10:29:02

緩存模式微服務架構

2012-11-01 16:05:51

以太網數據交互交換機

2020-11-20 15:22:32

架構運維技術

2010-05-24 11:43:53

跨平臺應用軟

2023-12-05 08:20:57

Android系統

2024-07-09 08:27:52

2019-10-30 16:24:34

分層架構緩存

2024-11-27 13:01:22

應用層領域層對接層

2024-07-23 08:06:19

緩存技術策略

2012-11-12 10:03:27

2018-03-28 09:26:43

數據庫緩存層優化

2021-11-04 18:27:02

緩存架構Eureka

2020-06-18 09:16:20

JavaScript緩存API

2020-07-29 09:13:28

JavaScript開發技術

2019-07-02 15:21:39

緩存NET單線程

2022-03-06 23:14:56

緩存分布式系統

2018-05-15 10:54:33

NginxRedisEhcache
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久综合一区二区三区 | 中文精品视频 | 伊人二区 | 日韩美香港a一级毛片免费 国产综合av | h视频在线免费 | 一区二区三区四区日韩 | 黄色香蕉视频在线观看 | 极品电影院 | 一级一级毛片免费看 | 亚洲精品视频一区二区三区 | 国产精品久久久久无码av | 亚洲一区二区av | 久久亚洲欧美日韩精品专区 | 天天操网 | 欧美xxxx网站| 亚洲高清视频在线观看 | 一区二区三区亚洲 | 一呦二呦三呦国产精品 | 99久久精品国产一区二区三区 | 国产中文字幕网 | 久久久久国产一级毛片高清网站 | 久久新| 午夜av电影 | 精品美女在线观看视频在线观看 | a黄视频| 日韩在线不卡视频 | 一级国产精品一级国产精品片 | 日本久久一区二区三区 | 亚洲一区二区三区免费在线 | 亚洲一区二区三区视频 | 成人av一区 | 成人免费区一区二区三区 | 三级免费网 | 美女在线一区二区 | 午夜av一区二区 | 国产一级一级 | 黄a网| 成年人在线视频 | 91观看| 日本免费在线 | 亚洲成人一区二区 |