SpringBoot透過refresh-ahead caching加速微服務效能
在設計微服務架構時,我們可能會遇到不同的效能問題。像Akka這樣的反應性框架提供了一種使微服務更具彈性的方法。但是,在處理耗時的演算法或緩慢的依賴系統時,快取可能是我們的最後手段,儘管它會帶來權衡。資料通常已過時,但可提供效能提升。
解決此問題的方法是Refresh-Ahead Caching,在提供效能提升的同時,它還提供了最新的資料。快取由微服務非同步重新載入,而客戶端僅訪問快速快取資源。您可以在Spring Boot專案中使用cache-refresh-ahead-spring-boot-starter啟用Refresh-Ahead Caching ,它是一個執行的排程程式,重新整理快取並支援Caffeine和Redis。您可以為所有快取指定重新整理間隔,也可以僅為特定快取指定重新整理間隔。
為了最小化快取鍵的大小,它使用類名,方法名和引數類。它解析了這些屬性並解開了CGLIB代理Bean。通常,當您向方法新增@Cacheable註釋時,該類將包裝在CGLIB代理Bean中。但是,此代理僅在其他類中可見。因此,您無法為私有方法啟用快取。這種解包允許排程程式在實際的Bean上呼叫該方法,而不會觸及快取。快取的值在較低階別時更新,因此它們不會覆蓋寫入時間。
當使用位於微服務中的快取並水平擴充套件時,您應該知道您的快取是分散的。您可能會遇到快取資料過於分散且客戶端訪問重新整理快取源的可能性較低的問題;您可能遇到的另一個問題是大量的微服務重新整理快取並耗盡後端。此外,如果使用@CachPut,則快取一致性可能會成為問題。因此,我建議僅在冗餘微服務量較少時才使用本地快取。
高度冗餘的微服務應使用共享的Redis快取。重新整理邏輯也應該與執行的微服務分開。例如,使用此方法,您可以執行10個訪問快取的微服務和3個(用於冗餘)只重新整理快取的微服務,因此您不必擔心耗盡後端或分散的快取。
該文介紹瞭如何使用Redis來實現分散式系統中的併發控制。使用Redis來控制快取的重新整理率。Redis是一個記憶體資料儲存,速度極快。它還具有原子屬性,這使得它非常適合為併發控制建立鎖和訊號量,使用Redis讓一個程式每90秒重新整理一次快取。效果立竿見影,激動人心,令人難以置信:API請求從每90秒約6,000個減少到一個。
相關文章
- 透過skaffold快速部署微服務微服務
- 如何透過 Serverless 提高 Java 微服務治理效率?ServerJava微服務
- 透過平臺工程提高微服務測試質量微服務
- SpringBoot 微服務打包 Docker 映象Spring Boot微服務Docker
- 學習微服務三-SpringBoot微服務Spring Boot
- SpringBoot Windows 自啟動 - 透過 Windows Service 服務實現Spring BootWindows
- 【Python】透過Cython提升效能Python
- 透過 CancellationToken 提高 Web 效能Web
- 透過雲效 CI/CD 實現微服務全鏈路灰度微服務
- 如何透過分解和增量更改將單體遷移到微服務?微服務
- DDD實踐:在SpringBoot中跨微服務透過發件箱模式實現分散式事務機制 - Hans-Peter GrahslSpring Boot微服務模式分散式
- 微服務+Docker---springboot+nginx+mysql微服務DockerSpring BootNginxMySql
- Springboot + Dubbo + Nacos微服務框架整合Spring Boot微服務框架
- 如何透過 Serverless 技術降低微服務應用資源成本?Server微服務
- 電子商務Java微服務 SpringBoot整合SpringSecurityJava微服務Spring BootGse
- docker - [15] springboot微服務打包docker映象DockerSpring Boot微服務
- SpringBoot應用整合微服務元件NacosSpring Boot微服務元件
- SpringBoot+Dubbo+Serata+Nacos微服務搭建Spring Boot微服務
- SpringBoot微服務安全最佳實踐 - piotrminkowskiSpring Boot微服務
- Lyft如何透過DevOps提升擴充套件微服務的生產力? - Garrettdev套件微服務
- 一種透過延遲事務提升資料庫效能的方法資料庫
- SpringBoot整合gRPC微服務工程搭建實踐Spring BootRPC微服務
- 案例:微服務從Java/SpringBoot遷移到Golang微服務JavaSpring BootGolang
- springboot+dubbo+zookeeper微服務實踐demoSpring Boot微服務
- 微服務測試之效能測試微服務
- Gome 高效能撮合引擎微服務Go微服務
- 高手過招「效能優化/純手寫SpringMVC框架/MySql優化/微服務」優化SpringMVC框架MySql微服務
- SpringBoot專案中透過程式修改Nacos配置Spring Boot
- 無需Java程式碼透過JHipster生成有安全驗證的微服務應用Java微服務
- 幽默:最簡單的SpringBoot微服務程式碼Spring Boot微服務
- Tencent高效能微服務治理方案Tars微服務
- 效能加速包:SpringBoot 2.7&JDK 17,你敢嘗一嘗嗎Spring BootJDK
- 透過低程式碼開發加速數字化轉型
- SpringBoot、Kubernetes和Istio微服務網格演示原始碼Spring Boot微服務原始碼
- 微服務分散式雲架構-springboot執行模式微服務分散式架構Spring Boot模式
- 網易蜂巢:基於容器和微服務迭代加速實踐微服務
- Springboot透過谷歌Kaptcha 元件,生成圖形驗證碼Spring Boot谷歌APT元件
- 企業分散式微服務雲SpringCloud SpringBoot mybatis -服務提供與呼叫分散式微服務GCCloudSpring BootMyBatis