系統(tǒng)優(yōu)化!! 吞吐量??

一、jvm 堆內(nèi)存大小 (減少full gc)

二、靜態(tài)資源分離
將靜態(tài)資源數(shù)據(jù)加載至nginx或者其他服務(wù)提升系統(tǒng)吞吐量

三、數(shù)據(jù)庫索引,減少讀寫io次數(shù) 統(tǒng)一查詢處理

四、緩存
本地緩存(緩存不一致)

設(shè)計(jì)一個本地內(nèi)存需要有什么功能
  存儲;并可以讀、寫;
  原子操作(線程安全),如ConcurrentHashMap
  可以設(shè)置緩存的最大限制;
  超過最大限制有對應(yīng)淘汰策略,如LRU、LFU
  過期時間淘汰,如定時、懶式、定期;
  持久化
  統(tǒng)計(jì)監(jiān)控

缺點(diǎn):使用本地緩存如果存在多臺服務(wù)器會使每臺服務(wù)器都需要緩存,而且需要保證并發(fā)安全需要加鎖,這樣導(dǎo)致每臺服務(wù)器都得進(jìn)行一次搶占操作影響速度
redis緩存:
分布式鎖和同步器 · redisson/redisson Wiki · GitHub

springboot2.0以后默認(rèn)lettuce作為操作redis的客戶端,它使用netty進(jìn)行網(wǎng)絡(luò)通信
lettuce的bug導(dǎo)致netty推外內(nèi)存溢出
1>使用jedis 2>升級lettuce
緩存穿透:空結(jié)果緩存
緩存雪崩 :設(shè)置過期時間(進(jìn)行隨機(jī)過期)
緩存擊穿:加鎖

鎖:

本地鎖  :JUC
分布式鎖: Redis中間鎖 
Redis鎖:可重入鎖、讀寫鎖、信號量, 閉鎖

緩存一致性:

雙寫模式:數(shù)據(jù)發(fā)生改變的話,刪除緩存重新寫入緩存
失效模式:數(shù)據(jù)發(fā)生改變,直接刪除緩存 等待下一次查詢緩存在寫入
解決方案:
1.加過期時間,保存讀多寫少的數(shù)據(jù),處理并發(fā)可以加讀寫鎖
2.canal:模擬mysql從表使用binlog日志記錄實(shí)時監(jiān)控更新redis,數(shù)據(jù)異構(gòu)
總結(jié):都會出現(xiàn)臟數(shù)據(jù)

SpringCache

@Cacheable: 觸發(fā)保存緩存數(shù)據(jù).
@CacheEvict: 觸發(fā)刪除緩存數(shù)據(jù).
@CachePut: 更新緩存數(shù)據(jù).
@Caching: 重新組合緩存.
@CacheConfig: 在類級別共享一些與緩存相關(guān)的常見設(shè)置.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容