如何给基于 SAP Cloud SDK 的应用增添缓存支持 Cache support
Introduce Caching to Your Application
本文目錄
- What caching is and why you should care about it
- How a cache works
- How to cache your OData Call
- How to configure the cache
Caches
有時,從您的應用程序到外部服務器的服務調用在性能和延遲方面非常昂貴。一旦達到客戶和客戶的關鍵響應時間,對查詢數據的進一步評估會使事情變得更糟。
為了提高對用戶的響應能力,您的應用程序內部請求的數據通常可以存儲以供后續調用使用。這可以通過這樣的方式來實現,即對于每個請求,應用程序之前存儲的信息都可以重復使用。這種一般行為稱為緩存。緩存存儲通過它的信息的副本。除了提高響應能力外,技術目標是降低整體所需的帶寬和處理要求,從而最終減少服務器負載和感知延遲。通過這種方式,可以減少需要跨網絡傳輸的信息量。
緩存在各種用例中都非常重要。這是我們現代互聯網體驗進步的原因之一,例如按需多媒體流媒體和持久云存儲。與保存整個請求和響應文檔的 Web 緩存不同,內部應用程序緩存用于為多個預期用途持久保存臨時數據。每當信息的計算或檢索成本很高,并且不止一次需要它在某個輸入上的值時,就應該考慮緩存。
How do they work
緩存通常通過向給定主題(稱為鍵)請求信息的操作來工作。如果先前請求給定鍵的信息,在請求時存儲,并且現在可以讀取,則會發生所謂的“緩存命中”:可以找到數據并將加載。當它不能時會發生“緩存未命中”。
緩存最重要的方面是其大小和其項目的生命周期。兩者都應針對用例進行限制,以避免應用程序中出現過時的狀態或不成比例的內存消耗。當應用程序從外部源重復讀取更大的數據塊時,可以看到使用緩存的最大影響。在這種情況下,使用緩存會顯著減少傳輸信息所需的帶寬。
緩存適用于:
- 你愿意花一些內存來提高速度。
- 您希望密鑰有時會被多次查詢。
- 您的緩存不需要存儲比 RAM 所能容納的更多的數據。
(默認情況下,緩存在應用程序的單次運行中是本地的。它不會將數據存儲在文件中,也不會存儲在外部服務器上。)
如果這些要求適用于您的用例,我們強烈建議您在應用程序中使用 SAP Cloud SDK 提供的緩存功能?,F在您已經了解了緩存為何有用,您將了解 Cloud SDK 提供了什么來啟用它。
Caching with SAP Cloud SDK
Cloud SDK 可以輕松地緩存您的請求,因為它可以在后臺處理大部分復雜性。 這包括處理租戶感知請求,這在多租戶應用程序中是必不可少的。 如果您的請求需要,SDK 將自動隔離租戶或主體級別的緩存。
在 SAP Cloud SDK 中,JCache (JSR 107) 用作底層緩存技術。 在本文的例子中,您將為此使用 JCache 適配器 Caffeine,但您可以使用任何您喜歡的實現。 對于 Caffeine,將以下依賴項添加到您的應用程序 pom.xml:
<dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>jcache</artifactId><scope>runtime</scope><version>2.7.0</version> </dependency>Cache your OData call
既然我們已經討論了為什么緩存很重要,以及它如何幫助我們提高性能和響應能力,現在是時候將它引入您的應用程序了。
現在,為了使我們的 OData 調用可緩存,您將增強 ResilienceConfiguration 并向其添加 CacheConfiguration.
在 GetBusinessPartnerCommand 的構造函數末尾添加以下幾行:
./application/src/main/java/com/sap/cloud/sdk/tutorial/GetBusinessPartnersCommand.java
final ResilienceConfiguration.CacheConfiguration cacheConfig =ResilienceConfiguration.CacheConfiguration.of(Duration.ofSeconds(10)).withoutParameters();myResilienceConfig.cacheConfiguration(cacheConfig);如上所述,ResilienceConfiguration 用于集成緩存功能,在 CacheConfiguration 中進行了描述。您的配置有兩個步驟:
a. 確定對象要緩存多長時間
b. 聲明需要與緩存數據一起存儲的參數
第一步顯然是必要的,因為數據應該只存儲有限的時間。保存緩存信息的時間越長,它就會變得越過時。您希望將數據緩存多長時間取決于您的特定用例。您預計信息過時的速度有多快?訪問數據的頻率如何?超時設置了數據是最新的和應用程序響應之間的權衡。
其次,您指定要與數據一起緩存的參數。對于檢索業務合作伙伴列表的請求,不需要參數,因此您可以使用htoutParameters 構建緩存。但是假設您想通過將 ID 傳遞給系統來獲取有關特定業務合作伙伴的信息。為了緩存這樣的請求,緩存不僅需要記住接收到的結果,還需要記住與之關聯的 ID。在這種情況下,可以使用 .withParameters(param1, param2, …) 簡單地傳遞這些參數。
隨意測試與發出的第一個請求相比,后續請求的響應速度更快。在本地或云中部署您的應用程序,并多次訪問業務合作伙伴列表。
總結
以上是生活随笔為你收集整理的如何给基于 SAP Cloud SDK 的应用增添缓存支持 Cache support的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 陌陌App被苹果商店下架 官方:技术问题
- 下一篇: SAP Business Technol