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

軟件架構(gòu)中的跨層緩存

譯文
開發(fā) 架構(gòu)
本文將介紹緩存是什么,緩存解決的問題,以及如何跨系統(tǒng)架構(gòu)層應(yīng)用緩存來解決現(xiàn)代軟件系統(tǒng)面臨的一些挑戰(zhàn)。

?譯者 | 李睿

審校 | 孫淑娟

本文面向軟件開發(fā)人員、技術(shù)經(jīng)理、軟件架構(gòu)師、測試工程師以及其他有興趣了解如何在軟件系統(tǒng)中使用緩存的人員。 

1.緩存是什么?  

(1)為什么需要緩存 

如今,現(xiàn)代軟件系統(tǒng)變得越來越分散和復(fù)雜,帶來了許多挑戰(zhàn)和問題,尤其是與系統(tǒng)性能相關(guān)的問題。系統(tǒng)運(yùn)行緩慢可能會導(dǎo)致企業(yè)失去信譽(yù)和盈利能力。 

下圖顯示了現(xiàn)代分布式架構(gòu)的一個(gè)非常簡單的視圖。需要注意的是,實(shí)際架構(gòu)會更加復(fù)雜,因?yàn)樵S多微服務(wù)(內(nèi)部和外部)作為流程的一部分執(zhí)行。在系統(tǒng)設(shè)計(jì)中還會有其他組件,例如消息傳遞系統(tǒng)、LDAP、規(guī)則引擎等。 

圖片

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

需要注意的是,處理時(shí)間可能是由于應(yīng)用程序本身或下游系統(tǒng)所花費(fèi)的時(shí)間,也可能是由于網(wǎng)絡(luò)(例如DNS查找、建立連接、網(wǎng)絡(luò)傳輸時(shí)間等)的延遲。 

緩存通過將數(shù)據(jù)副本保存在應(yīng)用程序的客戶端/組件附近來幫助提高系統(tǒng)性能來發(fā)揮重要作用。 

(2)緩存的工作原理

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

圖片

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

(3)使用緩存的優(yōu)點(diǎn) 

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

(4)使用緩存時(shí)的重要注意事項(xiàng) 

在為給定場景設(shè)計(jì)緩存框架時(shí),必須做出一些重要的決定。以下是緩存設(shè)計(jì)的一些關(guān)鍵方面的總結(jié): 

  • 應(yīng)該緩存多少數(shù)據(jù)? 
  • 在緩存中插入新數(shù)據(jù)時(shí),哪些數(shù)據(jù)必須刪除或保留? 
  • 緩存中的數(shù)據(jù)是否仍然相關(guān),或者是否過時(shí)?
  • 如何使緩存中的數(shù)據(jù)保持最新? 
  • 如何保持更低的緩存未命中率?

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

(5)多種風(fēng)格的緩存 

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

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

為了保持更低的緩存未命中率,緩存數(shù)據(jù)應(yīng)保持最新狀態(tài)。根據(jù)應(yīng)用程序模式的不同,可以使用以下技術(shù)之一來確保緩存中的數(shù)據(jù)盡可能是最新的。 

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

2.緩存刷新策略示例 

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

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

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

(3)先進(jìn)先出(FIFO):在這種技術(shù)中,要插入緩存的第一個(gè)項(xiàng)目首先被丟棄,并被新項(xiàng)目替換。 

(4)后進(jìn)先出(LIFO):在這種技術(shù)中,要插入緩存中的最后一個(gè)項(xiàng)目首先被丟棄,并被新項(xiàng)目替換。 

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

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

3. 跨層緩存 

 下表總結(jié)了如何在軟件系統(tǒng)中跨層使用緩存,還重點(diǎn)介紹了一些工具/框架,它們可用于在給定場景中實(shí)現(xiàn)緩存。 

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

圖片

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

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2012-01-13 10:13:57

軟件定義網(wǎng)絡(luò)SDNOpenFlow

2017-08-22 15:58:56

2019-09-29 10:29:02

緩存模式微服務(wù)架構(gòu)

2022-07-10 07:48:26

緩存軟件設(shè)計(jì)

2020-11-20 15:22:32

架構(gòu)運(yùn)維技術(shù)

2012-11-01 16:05:51

以太網(wǎng)數(shù)據(jù)交互交換機(jī)

2010-05-24 11:43:53

跨平臺應(yīng)用軟

2023-12-05 08:20:57

Android系統(tǒng)

2024-07-09 08:27:52

2019-10-30 16:24:34

分層架構(gòu)緩存

2024-11-27 13:01:22

應(yīng)用層領(lǐng)域?qū)?/a>對接層

2024-07-23 08:06:19

緩存技術(shù)策略

2012-11-12 10:03:27

2021-11-04 18:27:02

緩存架構(gòu)Eureka

2018-03-28 09:26:43

數(shù)據(jù)庫緩存層優(yōu)化

2018-05-15 10:54:33

NginxRedisEhcache

2020-07-29 09:13:28

JavaScript開發(fā)技術(shù)

2019-07-02 15:21:39

緩存NET單線程

2009-08-26 18:20:42

三層架構(gòu)

2018-11-19 12:09:15

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品国产精品三级精品av网址 | 中文字幕在线免费观看 | 久久综合伊人 | 涩在线 | 日韩一级电影免费观看 | 免费xxxx大片国产在线 | 三级视频在线观看 | 亚洲精品久久久久中文字幕欢迎你 | 国产一区久久 | 狠狠综合久久av一区二区小说 | 热久久久久 | 伊人在线 | 日韩天堂av | 久久久久国产一级毛片 | 韩日在线| 欧美理论 | 成人国产免费观看 | 一级片视频免费 | 精品永久| 精品一区二区三区91 | 国产一区三区视频 | 国产精品毛片无码 | 伊人久操 | 日韩综合在线 | 天天干天天操天天看 | 欧美jizzhd精品欧美巨大免费 | 国产欧美日韩综合精品一区二区 | 欧州一区二区三区 | 一区二区三区四区电影 | 国产一区二区三区 | 亚洲精品一区二区三区中文字幕 | 久久69精品久久久久久久电影好 | 欧美在线视频一区二区 | 国产精品久久久久久久久久久久久 | av色噜噜 | 亚洲午夜精品一区二区三区他趣 | 中文字字幕一区二区三区四区五区 | 一区二区三区在线 | 精品国产一区二区三区久久久久久 | 久久久蜜臀国产一区二区 | 精品国产乱码久久久久久中文 |