精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

注解式兩級緩存服務框架設計與構建

開發 架構
緩存在現代計算機系統中無處不在,各式各樣硬件和軟件的組合構成和管理著緩存,一個編寫良好的計算機程序傾向于展示出良好的局部性。

前言 

緩存在現代計算機系統中無處不在,各式各樣硬件和軟件的組合構成和管理著緩存,一個編寫良好的計算機程序傾向于展示出良好的局部性。

圖片

在高性能服務架構設計中,緩存是一個不可或缺的環節。以Java體系為例,我們從傳統的硬編碼方式使用緩存到基于注解的spring-cache框架,確實大大提升了我們的效率,代碼也更加的簡潔易維護。

但隨著越來越多的項目使用spring-cache,場景越來越復雜,我們逐漸發現緩存配置代碼重復、緩存策略不能在注解上直接配置、不支持多級緩存、不支持自動刷新緩存等問題逐漸突顯。

基于這些在業務中遇到的問題點,我們構建了一套注解式兩級緩存服務框架。在實際設計和構建過程中積累了一些經驗,借此機會分享給大家,希望對業務中使用緩存尤其使用spring-cache場景的可以提供一些幫助。

 1. spring-cache簡介 

Spring 3.1之后,引入了注解緩存技術,其本質上不是一個具體的緩存實現方案,而是一個對緩存使用的抽象,不僅能夠使用SpEL(Spring Expression Language)來定義緩存的key和各種condition,還提供開箱即用的緩存臨時存儲方案,也支持和主流的專業緩存集成。

事物都有兩面性,優點如此優秀,那么缺點或不足是否也是如此的突出呢?

  • spring-cache問題點(我們認為)
  • 不支持緩存策略在注解上設置,每個方法的緩存策略需要單獨硬編碼方式配置
  • 不支持多級緩存
  • 不支持自動刷新緩存
  • 不支持緩存統計看板
  • 不支持熔斷降級
  • 不支持數據壓縮
  • 代碼重復不易維護

基于以上我們認為的問題點,我們造了一個輪子,來試圖解決這些問題,這個輪子就是“注解式兩級緩存框架”。

2. 注解式兩級緩存框架簡介

  • 是一個注解式兩級緩存框架:通過注解實現聲明式的方法緩存,使用方式和spring-cache類似,提供了比spring-cache更加強大的注解。
  • 是一個全新的注解式兩級緩存框架:一級緩存使用本地緩存(目前只支持Caffeine,后續可擴展),二級緩存使用集中式緩存(目前只支持Redis)。目前支持三種緩存策略:

只使用一級緩存

只使用二級緩存

同時用兩級緩存

2.1全部特性

  • 支持TTL在注解上直接配置
  • 支持本地緩存容量在注解上直接配置
  • 支持condition在注解上直接配置,指定符合條件的情況下才緩存
  • 支持緩存Key的SpEL表達式、自定義生成策略(已提供默認生成策略)
  • 支持只使用一級緩存或者只使用二級緩存或者使用兩級緩存
  • 支持value序列化策略配置,默認GenericJackson2JsonRedisSerializer
  • 支持異步加載緩存的方式
  • 支持自動刷新緩存
  • redis客戶端選擇
  • 支持熔斷與降級 --- 延遲支持
  • 支持緩存數據壓縮 --- 延遲支持
  • 支持緩存一致性 --- 延遲支持
  • 支持緩存監控統計看板 --- 延遲支持
  • 支持自定義緩存中間件 --- 延遲支持
  • 支持緩存接口用于手工緩存操作 --- 延遲支持

前菜我們品完了,接下來我們開始正餐,一步步介紹下設計思路,聊下如何站在spring-cache巨人肩膀上,試圖解決上述問題點的。

 3. 注解式兩級緩存框架架構設計

3.1注解@EnableCache

圖片

1、注解@EnableCache導入CacheConfigurationSelector。

CacheConfigurationSelector向容器內注入了AutoProxyRegistrar和ProxyCacheAutoConfiguration這兩個Bean

2、AutoProxyRegistrar會確保容器中存在一個自動代理創建器(APC),緩存的代理對象最終是委托給自動代理創建器來完成。

AutoProxyRegistrar在容器啟動階段對每個bean創建進行處理,如果bean中有方法標記了cache注解,為其創建代理對象, 包裹定義的CacheOperationSourceAdvisor bean

3、ProxyCacheAutoConfiguration向容器定義如下基礎設施bean。

CacheOperationSourceAdvisor 用于管理CacheOperationSource和CacheInterceptor, CacheOperationSource 用于獲取方法調用時最終應用的Cache注解的元數據, CacheInterceptor 包裹在目標bean外面用于操作Cache的AOP Advice

3.2攔截器

由于AutoProxyRegistrar在容器啟動階段會對標有cache注解的bean創建代理對象,這時我們可以獲取到具體方法和注解元數據, 我們針對兩部分數據進行綁定提前緩存起來,這樣目標方法調用時直接從緩存中獲取元數據即可,避免了反射效率低下影響性能。

圖片

1、根據目標方法和目標類獲取注解元數據,元數據包括緩存名稱、緩存key、過期時間、自動刷新時間、本地緩存容量、緩存類型、緩存條件等。

2、根據緩存條件是否走注解緩存,緩存條件支持SpEL表達式,如果為false則直接執行目標方法,為ture走緩存邏輯。

3、生成key:支持SpEL表達式,可以自定義生成規則,默認規則:命名空間、所屬類名稱、方法名稱、方法參數以冒號相連。

4、獲取cache:根據cacheName和cacheType獲取cache,對應cache有本地cache、遠程cache、兩級cache,根據key獲取緩存結果, 緩存結果為空則執行目標方法并對結果緩存,反之直接返回緩存結果。

3.3獲取cache組件

cache實現類有三種LocalCache、RemoteCache和TwoLevelCache,每個緩存實現類集成了具體的緩存中間件,LocalCache可以集成Caffeine、Guava、ehCache等, RemoteCache可以集成Redis、Memcache等,TwoLevelCache是LocalCache和RemoteCache組合實現。

圖片

1、CacheManagerContainer管理著所有的CacheManager,每個cacheType對應一個CacheManager的實現。

2、CacheManager提供了cache實現bean的創建,管理著多個cache,每個cache有對應的cacheName,每個應用里可以通過cacheName來對cache進行隔離,如果cacheName對應的cache不存在則會注冊一個新的cache。

3、Cache接口提供了緩存的具體操作,例如放入,讀取,清理等。

3.4兩級緩存

兩級緩存的產生是因為遠程緩存有網絡開銷,大量的緩存讀取會導致遠程緩存網絡成為整個系統的瓶頸,本地緩存是和應用程序在一個進程內,請求緩存速度快,沒有過多的網絡開銷, 加入本地緩存目標是降低對遠程緩存的讀取次數,減輕網絡開銷,從而再次提升程序的響應速度與服務性能。

圖片

1、從本地緩存讀出數據,如果存在則直接返回,進行后續具體業務邏輯。

2、本地緩存如果不存在則讀取遠程緩存,遠程緩存如果存在則更新本地緩存,不存在則從數據源讀取,然后依次更新遠程緩存、本地緩存,然后進行后續具體業務邏輯。

3.5自動刷新緩存

防止某個緩存失效時,訪問量突然大增,所有請求訪問數據庫,可能導致數據庫掛掉;適用場景:key數量比較少,訪問量大,加載開銷較大的情況。

圖片

1、緩存讀取時如果元數據自動刷新時間有值,會根據緩存key、目標方法、刷新時間創建一個給定初始延遲的間隔性的任務,任務自動執行間隔為自動刷新時間, 任務執行時會根據緩存key、目標方法重新加載緩存,保持緩存一直生效。

2、根據自動刷新時間會生成一個停止刷新時間,如果緩存key訪問間隔時間超過了停止刷新時間或者緩存key過期,會刪除該定時任務,釋放資源,避免無效的刷新緩存。

3、兩級緩存刷新緩存順序為:先刷新遠程緩存,然后根據Redis的pub/sub模式去監測和操作本地cache的刪除動作,隨后第一次請求會檢查本地緩存--->再檢查Redis緩存--->回源。

4、遠程緩存自動刷新使用分布式鎖,對同一key,全局只有一臺機器自動刷新。

3.6注解@Cacheable

1、 @Cacheable可以作用在方法上,也可以標記在一個類上,當標記在一個方法上時表示該方法是支持緩存的,當標記在一個類上時則表示該類所有的方法都是支持緩存的

名稱

默認值

說明

value

空字符串

緩存名稱,cacheName的別名

cacheName

空字符串

緩存名稱

key

空字符串

緩存key,支持SpEL表達式,提供默認生成策略

ttl

10分鐘

過期時間,d/h/m/s四種時間單位選擇,分別代表天/時/分/秒, ttl="10m"表示10分鐘過期時間

refreshTime

空字符串

自動刷新時間,d/h/m/s四種時間單位選擇,分別代表天/時/分/秒

maximumSize

5000

本地緩存容量

cacheType

REMOTE

緩存類型,LOCAL/REMOTE/BOTH三種選擇,分別代表本地緩存/集中式緩存/兩級緩存

condition

空字符串

指定符合條件的情況下才緩存,為空則認為全部無條件緩存,支持SpEL表達式

2、key默認生成規則:命名空間、所屬類名稱、方法名稱、方法參數以冒號相連。

3、如果設置ttl為空:表示緩存永不過期。

3.7緩存配置

這里舉個例子,具體的參數值,根據自己業務情況自行調整。

auto:
cache:
local:
type: caffeine
remote:
type: redis
host: localhost #服務器地址
port: 6379 #服務器連接端口
timeout: 2000 #連接超時時間(毫秒)
pool:
min-idle: 2 #最小空閑連接數
max-idle: 10 #最大空閑連接數
max-active: 20 #連接池的最大數據庫連接數
max-wait: 200 #最大建立連接等待時間
key-serializer: org.springframework.data.redis.serializer.StringRedisSerializer #key序列化策略
value-serializer: org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer #value序列化策略
namespace: testCache # 緩存的命名空間前綴,最終緩存格式為:testCache:xxx:xx
allow-null-values: true #防止緩存穿透

 4. 總結和展望

本文主要是記錄了商業資源組在使用spring-cache過程中遇到的問題點及注解式兩級緩存服務框架設計思路,通過一步步拆解,將問題點逐個擊破。該框架在實際項目中也經過了千萬級別的驗證,為我們的線上服務提供了良好的性能。

構建一套完整的服務框架需要不斷的迭代功能開發,后續要逐步支持的功能如下:

增加熔斷與降級

增加緩存數據壓縮

增加緩存一致性

增加緩存監控統計看板

增加自定義緩存中間件

增加緩存接口用于手工緩存操作

參考文獻

??https://github.com/ben-manes/caffeine/wiki/Benchmarks??

??https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/html/expressions.html??

作者介紹:王云朋

  • 經銷商技術部-商業資源團隊
  • 2017年加入汽車之家經銷商事業部,目前主要負責智能展廳核心功能開發工作
責任編輯:武曉燕 來源: 之家技術
相關推薦

2024-02-29 09:20:10

2019-07-10 15:41:50

RedisJava緩存

2022-04-15 11:26:14

緩存功能

2009-09-08 09:12:12

LINQ構建框架設計

2022-09-25 21:45:54

日志平臺

2022-03-31 13:58:37

分布式SpringRedis

2014-09-23 10:05:55

2022-06-15 11:01:59

自定義SPIJava

2022-09-15 18:32:13

SPI模型框架

2022-03-18 13:59:46

緩存RedisCaffeine

2023-02-26 11:15:42

緩存循環依賴

2012-06-25 12:43:26

.NET框架

2012-06-25 09:28:42

.NET可逆框架

2016-03-23 11:05:58

Socket開發框架分析

2022-04-03 15:44:55

Vue.js框架設計設計與實現

2020-07-30 10:35:32

Java反射框架設計

2012-01-18 10:20:42

框架設計

2024-01-31 22:08:18

分布式重試框架

2023-10-26 09:02:30

框架設計模式

2018-02-01 08:47:00

對象存儲服務
點贊
收藏

51CTO技術棧公眾號

亚洲精品蜜桃乱晃| 日韩中文视频| 成人av一区二区三区| 日本国产欧美一区二区三区| 久久久精品人妻无码专区| 成人做爰免费视频免费看| 一区二区三区精品在线观看| 久久爱av电影| 国产裸体永久免费无遮挡| 在线综合欧美| 久久这里只有精品视频首页| 国产吞精囗交久久久| 亚洲网站三级| 在线观看www91| 国产欧美日韩小视频| yiren22亚洲综合伊人22| 国产麻豆精品一区二区| 国产成人自拍视频在线观看| 麻豆changesxxx国产| 国产精品免费99久久久| 精品国产91乱码一区二区三区| 不卡影院一区二区| 草草视频在线| 亚洲综合成人在线| 自拍视频一区二区三区| 国产美女性感在线观看懂色av| 成人午夜激情影院| 亚洲影院色在线观看免费| 免费观看日批视频| 亚洲激精日韩激精欧美精品| 久热精品视频在线免费观看| 女人黄色一级片| 真实原创一区二区影院| 日韩精品高清在线| 岛国av免费观看| 免费观看亚洲视频大全| 欧美日韩和欧美的一区二区| 国产精品无码av无码| 国产精品电影| 午夜激情久久久| 免费极品av一视觉盛宴| 91精品久久久| 亚洲免费av高清| 特级黄色录像片| 国产在线观看a| 亚洲欧美一区二区不卡| 在线观看亚洲视频啊啊啊啊| 91社区在线高清| 国产拍揄自揄精品视频麻豆| 欧美精品与人动性物交免费看| 色呦呦中文字幕| 国产一区二区三区免费播放| 国产日韩欧美影视| 91国内精品久久久| 国产乱子轮精品视频| 成人久久久久爱| jlzzjlzz亚洲女人18| 国产成人亚洲综合a∨婷婷图片| 亚洲va国产va天堂va久久| 国产有码在线观看| 国产精品资源网| 国产精品久久亚洲7777| 三级网站免费观看| ww久久中文字幕| 日本在线播放一区| 性开放的欧美大片| 亚洲精品中文在线影院| 日本aa在线观看| 国产三级电影在线播放| 日本久久精品电影| 岛国毛片在线播放| 九九99久久精品在免费线bt| 欧美r级在线观看| 国产熟女高潮一区二区三区| 国产一区三区在线播放| 日韩中文视频免费在线观看| 欧美偷拍第一页| 亚洲久久成人| 国产精品成人一区二区| 国产人妖在线播放| 99re这里只有精品6| 日本一区二区三区视频在线播放| 亚洲图片88| 亚瑟在线精品视频| 手机看片福利日韩| 午夜视频一区二区在线观看| 亚洲国产精品va在线观看黑人| 在线小视频你懂的| 中文字幕亚洲精品乱码| 91精品国产成人www| 国产精品高清无码| 国产成人精品免费看| 精品久久精品久久| 欧洲不卡av| 午夜久久久久久电影| 99热这里只有精品在线播放| 在这里有精品| 国产亚洲精品高潮| 黄色小视频在线免费看| 美女一区二区久久| 国产偷国产偷亚洲高清97cao| 国产在线观看黄| 亚洲一区二区在线视频| 污版视频在线观看| 色老板在线视频一区二区| 久久精品国产2020观看福利| 久久久久99精品成人片三人毛片| 国产综合色在线| 日本欧美精品久久久| 超清av在线| 91精品国产综合久久香蕉的特点 | 男女日批视频在线观看| 欧美韩国亚洲| 精品无人国产偷自产在线| 日韩激情小视频| 日韩国产高清在线| 蜜桃91精品入口| 草美女在线观看| 91精品国产综合久久久久久久| 丰满少妇高潮一区二区| 激情一区二区| 91精品入口蜜桃| 亚洲视频tv| 欧美日韩中文字幕精品| 短视频在线观看| 国产亚洲欧洲| 国产综合动作在线观看| 人人澡人人添人人爽一区二区| 欧美日韩免费一区二区三区| 永久免费看mv网站入口78| 在线精品在线| 国产98在线|日韩| 午夜av在线播放| 日韩欧美一区在线| www日韩在线| 狠狠色综合色综合网络| 亚洲亚洲精品三区日韩精品在线视频| 国产精品久久久久av电视剧| 亚洲美女av在线播放| 国产区一区二区三| 99久久99久久久精品齐齐| 2018中文字幕第一页| 99国产精品免费网站| 欧美第一黄色网| 亚洲成人一二三区| 亚洲伊人色欲综合网| 男人女人拔萝卜视频| 欧美一区二区| 国产高清自拍99| 成人免费网站观看| 日韩精品福利网站| 国产成人精品一区二区色戒| 欧美激情一区二区三区在线| 天天干天天干天天干天天干天天干| 欧洲专线二区三区| 国产精品丝袜一区二区三区| 欧美jizzhd69巨大| 日韩一级黄色片| 久久9999久久免费精品国产| 99久久综合精品| 激情婷婷综合网| 日韩理论电影院| 91精品在线一区| 欧美人与性动交α欧美精品济南到| 欧美一级生活片| 久久精品免费在线| 久久日韩粉嫩一区二区三区 | 中文在线免费二区三区| 亚洲区免费影片| 亚洲在线免费观看视频| 一区二区三区四区国产精品| 粉嫩av懂色av蜜臀av分享| 老**午夜毛片一区二区三区 | 欧美性受ⅹ╳╳╳黑人a性爽| 亚洲国产精品久久91精品| 中文字幕免费在线观看视频| 欧美激情在线看| 美女又黄又免费的视频| 免费国产自线拍一欧美视频| 午夜视频久久久| 亚洲精品一区二区三区在线| 97超级碰在线看视频免费在线看| 九色视频在线观看免费播放| 538在线一区二区精品国产| 欧美日韩精品在线观看视频 | 国产99久久久精品| 男人操女人逼免费视频| 四季av在线一区二区三区| 国产精品国产一区二区| 91亚洲视频| 欧美精品18videos性欧| 大胆av不用播放器在线播放| 日韩精品一区二区三区在线播放 | 亚洲区免费影片| 精品国产伦一区二区三区| 欧美日韩精品中文字幕| 成人做爰视频网站| 91天堂素人约啪| 三级黄色片免费观看| 久久久精品网| 欧美日韩中文字幕在线播放 | 91捆绑美女网站| 性生活一级大片| 奇米四色…亚洲| 欧美不卡在线播放| 久久精品亚洲欧美日韩精品中文字幕| 国产乱人伦精品一区二区| 亚洲精品自拍| 国产精品户外野外| 超碰97免费在线| 欧美精品在线免费播放| av在线日韩国产精品| 亚洲国内高清视频| www.狠狠干| 91精品国产麻豆国产自产在线| 加勒比在线一区| 午夜精品福利一区二区三区av| 国产大学生自拍| 中文字幕五月欧美| 少妇精品无码一区二区免费视频 | 日韩欧美一区电影| 亚洲视频在线观看免费视频| 91久久国产最好的精华液| 久久草视频在线| 尤物视频一区二区| 美国黄色片视频| 欧美激情资源网| 黄色片网站免费| 久久亚洲欧美国产精品乐播| 污片免费在线观看| www.日本不卡| 永久免费未满蜜桃| 丁香另类激情小说| 催眠调教后宫乱淫校园| 国产成人在线观看| 图片区偷拍区小说区| 国产精品主播直播| 中文字幕久久久久久久| 国产精品一区专区| 女教师高潮黄又色视频| 国产成人在线视频网址| 下面一进一出好爽视频| 国产精品自拍三区| ass极品水嫩小美女ass| 高清av一区二区| 丰满岳乱妇一区二区 | 极品尤物一区二区| 中文无字幕一区二区三区 | 国产精品吊钟奶在线| 亚洲高清黄色| 国产精品人人做人人爽| 国产极品嫩模在线观看91精品| 国产精品视频在线播放| 免费成人高清在线视频| 91久久精品国产91久久| 国语精品视频| 国产精品国模大尺度私拍| 欧美国产不卡| 日韩精品不卡| 图片小说视频色综合| 粉嫩av一区二区三区天美传媒 | 白嫩情侣偷拍呻吟刺激| caoporm超碰国产精品| 黄色在线观看av| 国产欧美精品一区二区色综合朱莉| 中文字幕第二区| 亚洲精选视频免费看| 国产精品第72页| 一本到高清视频免费精品| 中文字幕一区二区三区四区视频 | 外国精品视频在线观看 | 欧美视频一区二区在线观看| 中文字幕一区二区免费| 日韩欧美你懂的| 日本天堂在线| 日韩视频免费中文字幕| 国产啊啊啊视频在线观看| 日本中文字幕成人| 伊人久久综合网另类网站| 国产精品一区二区av| 国产成人精品999在线观看| 青青草影院在线观看| 国产亚洲精品v| 三级一区二区三区| 91亚洲国产成人精品一区二三| 一级在线观看视频| 亚洲观看高清完整版在线观看| 乱子伦一区二区三区| 欧美刺激午夜性久久久久久久| 久久电影视频| 欧美韩国理论所午夜片917电影| 欧美福利在线播放| 懂色av一区二区三区在线播放| 国产日韩视频在线| a级免费在线观看| 久久99精品久久只有精品| 波多野结衣有码| 亚洲图片你懂的| 国产一区二区视频免费| 精品999在线播放| 黄色在线免费看| 日韩av日韩在线观看| 国产乱人伦精品一区| 先锋影音男人资源| 免费看欧美女人艹b| 亚洲精品中文字幕在线播放| 亚洲色图在线播放| 日本中文字幕在线观看视频| 亚洲精品在线一区二区| 美女国产在线| 国产成人一区二区三区电影| 成人免费直播在线| 久久天天东北熟女毛茸茸| 三级成人在线视频| 亚洲黄色在线网站| 亚洲一区二区三区视频在线播放 | 一本色道久久88亚洲精品综合| 美女国产精品| 在线观看国产网站| 亚洲五月六月丁香激情| 国产毛片在线视频| 中文字幕一区电影| av成人亚洲| 日韩电影在线播放| 久久裸体视频| 免费在线观看你懂的| 五月婷婷色综合| 人妻丰满熟妇av无码区hd| 欧美激情小视频| 秋霞一区二区三区| 日本国产中文字幕| 国产精品自拍网站| 久久激情免费视频| 日韩欧美电影一区| 日本孕妇大胆孕交无码| 99在线观看| 尤物网精品视频| 李丽珍裸体午夜理伦片| 亚洲一级二级在线| 后入内射欧美99二区视频| 久久久久久九九九| 久久精品色播| 国产中文字幕在线免费观看| 99国产精品99久久久久久| 一级成人黄色片| 亚洲女人天堂视频| 在线一区视频观看| 亚洲欧美成人一区| 精品一区二区国语对白| 麻豆明星ai换脸视频| 欧美一区二区三区免费在线看| 成人免费高清| 国产精品麻豆免费版| 亚洲免费综合| 国产毛片欧美毛片久久久| 欧美视频在线播放| av电影免费在线观看| 国产精品日韩二区| 一道本一区二区| 国产在线综合视频| 91麻豆精品国产自产在线| 伊人电影在线观看| 九九久久99| 日韩精品亚洲一区| 中国一级片在线观看| 精品女同一区二区| 黄色综合网址| 免费观看黄色的网站| 国产aⅴ综合色| 无码人妻丰满熟妇奶水区码| 久久好看免费视频| 极品一区美女高清| 免费看a级黄色片| 亚洲欧美日本在线| 无码精品黑人一区二区三区| 国产成人精品一区二区三区| 久久国产成人精品| 无码人妻精品一区二区三| 一本色道久久综合精品竹菊| 欧美激情二区| 韩国成人av| 久久国产麻豆精品| 懂色av.com| 日韩在线视频观看| 一区二区三区四区高清视频| 激情综合网婷婷| 亚洲精品成人精品456| 精品美女视频在线观看免费软件 | 国产男女无遮挡猛进猛出| 精品久久香蕉国产线看观看gif| 最新电影电视剧在线观看免费观看| 成人免费91在线看| 日本特黄久久久高潮| 久久精品国产亚洲av无码娇色| 伊人一区二区三区久久精品| eeuss鲁片一区二区三区| 丝袜制服一区二区三区| 精品国产精品自拍| 二区三区在线观看| 日韩免费av电影|