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

從2s優化到0.1s,我用了這五步

開發 架構
我們的網站使用了SpringBoot推薦的模板引擎:Thymeleaf,進行動態渲染。它是一個XML/XHTML/HTML5模板引擎,可用于Web與非Web環境中的應用開發。

前言

分類樹查詢功能,在各個業務系統中可以說隨處可見,特別是在電商系統中。

但就是這樣一個簡單的分類樹查詢功能,我們卻優化了5次。

到底是怎么回事呢?

背景

我們的網站使用了SpringBoot推薦的模板引擎:Thymeleaf,進行動態渲染。

它是一個XML/XHTML/HTML5模板引擎,可用于Web與非Web環境中的應用開發。

它提供了一個用于整合SpringMVC的可選模塊,在應用開發中,我們可以使用Thymeleaf來完全代替JSP或其他模板引擎,如Velocity\FreeMarker等。

前端開發寫好Thymeleaf的模板文件,調用后端接口獲取數據,進行動態綁定,就能把想要的內容展示給用戶。

由于當時這個是從0-1的新項目,為了開快速開發功能,我們第一版接口,直接從數據庫中查詢分類數據,組裝成分類樹,然后返回給前端。

通過這種方式,簡化了數據流程,快速把整個頁面功能調通了。

第1次優化

我們將該接口部署到dev環境,剛開始沒啥問題。

隨著開發人員添加的分類越來越多,很快就暴露出性能瓶頸。

我們不得不做優化了。

我們第一個想到的是:加Redis緩存。

流程圖如下:

于是暫時這樣優化了一下:

  • 用戶訪問接口獲取分類樹時,先從Redis中查詢數據。
  • 如果Redis中有數據,則直接數據。
  • 如果Redis中沒有數據,則再從數據庫中查詢數據,拼接成分類樹返回。
  • 將從數據庫中查到的分類樹的數據,保存到Redis中,設置過期時間5分鐘。
  • 將分類樹返回給用戶。

我們在Redis中定義一個了key,value是一個分類樹的json格式轉換成了字符串,使用簡單的key/value形式保存數據。

經過這樣優化之后,dev環境的聯調和自測順利完成了。

第2次優化

我們將這個功能部署到st環境了。

剛開始測試同學沒有發現什么問題,但隨著后面不斷地深入測試,隔一段時間就出現一次首頁訪問很慢的情況。

于是,我們馬上進行了第2次優化。

我們決定使用Job定期異步更新分類樹到Redis中,在系統上線之前,會先生成一份數據。

當然為了保險起見,防止Redis在哪條突然掛了,之前分類樹同步寫入Redis的邏輯還是保留。

于是,流程圖改成了這樣:

增加了一個job每隔5分鐘執行一次,從數據庫中查詢分類數據,封裝成分類樹,更新到Redis緩存中。

其他的流程保持不變。

此外,Redis的過期時間之前設置的5分鐘,現在要改成永久。

通過這次優化之后,st環境就沒有再出現過分類樹查詢的性能問題了。

第3次優化

測試了一段時間之后,整個網站的功能快要上線了。

為了保險起見,我們需要對網站首頁做一次壓力測試。

果然測出問題了,網站首頁最大的qps是100多,最后發現是每次都從Redis獲取分類樹導致的網站首頁的性能瓶頸。

我們需要做第3次優化。

該怎么優化呢?

答:加內存緩存。

如果加了內存緩存,就需要考慮數據一致性問題。

內存緩存是保存在服務器節點上的,不同的服務器節點更新的頻率可能有點差異,這樣可能會導致數據的不一致性。

但分類本身是更新頻率比較低的數據,對于用戶來說不太敏感,即使在短時間內,用戶看到的分類樹有些差異,也不會對用戶造成太大的影響。

因此,分類樹這種業務場景,是可以使用內存緩存的。

于是,我們使用了Spring推薦的caffine作為內存緩存。

改造后的流程圖如下:

  • 用戶訪問接口時改成先從本地緩存分類數查詢數據。
  • 如果本地緩存有,則直接返回。
  • 如果本地緩存沒有,則從Redis中查詢數據。
  • 如果Redis中有數據,則將數據更新到本地緩存中,然后返回數據。
  • 如果Redis中也沒有數據(說明Redis掛了),則從數據庫中查詢數據,更新到Redis中(萬一Redis恢復了呢),然后更新到本地緩存中,返回返回數據。

需要注意的是,需要改本地緩存設置一個過期時間,這里設置的5分鐘,不然的話,沒辦法獲取新的數據。

這樣優化之后,再次做網站首頁的壓力測試,qps提升到了500多,滿足上線要求。

第4次優化

之后,這個功能順利上線了。

使用了很長一段時間沒有出現問題。

兩年后的某一天,有用戶反饋說,網站首頁有點慢。

我們排查了一下原因發現,分類樹的數據太多了,一次性返回了上萬個分類。

原來在系統上線的這兩年多的時間內,運營同學在系統后臺增加了很多分類。

我們需要做第4次優化。

這時要如何優化呢?

限制分類樹的數量?

答:也不太現實,目前這個業務場景就是有這么多分類,不能讓用戶選擇不到他想要的分類吧?

這時我們想到最快的辦法是開啟nginx的GZip功能。

讓數據在傳輸之前,先壓縮一下,然后進行傳輸,在用戶瀏覽器中,自動解壓,將真實的分類樹數據展示給用戶。

之前調用接口返回的分類樹有1MB的大小,優化之后,接口返回的分類樹的大小是100Kb,一下子縮小了10倍。

這樣簡單的優化之后,性能提升了一些。

第5次優化

經過上面優化之后,用戶很長一段時間都沒有反饋性能問題。

但有一天公司同事在排查Redis中大key的時候,揪出了分類樹。之前的分類樹使用key/value的結構保存數據的。

我們不得不做第5次優化。

為了優化在Redis中存儲數據的大小,我們首先需要對數據進行瘦身。

只保存需要用到的字段。

例如:

@AllArgsConstructor
@Data
public class Category {

    private Long id;
    private String name;
    private Long parentId;
    private Date inDate;
    private Long inUserId;
    private String inUserName;
    private List<Category> children;
}

像這個分類對象中inDate、inUserId和inUserName字段是可以不用保存的。

修改自動名稱。

例如:

@AllArgsConstructor
@Data
public class Category {
    /**
     * 分類編號
     */
    @JsonProperty("i")
    private Long id;

    /**
     * 分類層級
     */
    @JsonProperty("l")
    private Integer level;

    /**
     * 分類名稱
     */
    @JsonProperty("n")
    private String name;

    /**
     * 父分類編號
     */
    @JsonProperty("p")
    private Long parentId;

    /**
     * 子分類列表
     */
    @JsonProperty("c")
    private List<Category> children;
}

由于在一萬多條數據中,每條數據的字段名稱是固定的,他們的重復率太高了。

由此,可以在json序列化時,改成一個簡短的名稱,以便于返回更少的數據大小。

這還不夠,需要對存儲的數據做壓縮。

之前在Redis中保存的key/value,其中的value是json格式的字符串。

其實RedisTemplate支持,value保存byte數組。

先將json字符串數據用GZip工具類壓縮成byte數組,然后保存到Redis中。

再獲取數據時,將byte數組轉換成json字符串,然后再轉換成分類樹。

這樣優化之后,保存到Redis中的分類樹的數據大小,一下子減少了10倍,Redis的大key問題被解決了。

性能優化問題,無論在面試,還是工作中,都會經常遇到。

責任編輯:姜華 來源: 蘇三說技術
相關推薦

2023-05-14 17:16:22

分類樹SpringBoot

2023-12-25 08:24:03

雙異步數據庫Excel

2022-06-30 19:40:36

查詢接口索引優化

2024-10-28 07:00:00

分頁查詢優化索引數據歸檔

2019-01-02 09:10:56

2024-07-30 14:26:52

2019-06-20 11:20:25

sql優化數據庫

2024-03-04 08:29:33

數據定制化Java

2025-02-14 09:30:42

2024-10-16 12:45:01

2021-09-10 08:31:36

技術Prometheus監控

2024-09-12 14:51:27

2025-11-11 04:00:00

2022-09-29 11:35:34

數據分析體系

2022-09-27 08:40:44

慢查詢MySQL定位優化

2022-09-19 08:41:02

數據查詢分離

2023-09-27 08:21:00

查詢分離數據API

2024-05-28 08:47:52

2025-11-04 01:45:00

2013-09-02 10:55:31

錘子ROM小米Alpha
點贊
收藏

51CTO技術棧公眾號

欧美激情精品久久久久久久变态| 亚洲人xxxx| 日本欧美中文字幕| 人妻熟人中文字幕一区二区| 国产精品久久久久久av公交车 | b站大片免费直播| 国产精品久久久久久吹潮| 最新国产精品久久精品| 精品在线一区| jizz中国少妇| 日韩专区中文字幕一区二区| 九九热最新视频//这里只有精品| 乐播av一区二区三区| 57pao国产一区二区| 在线一区二区三区四区| 国产无限制自拍| 婷婷免费在线视频| 久久综合国产精品| 成人欧美一区二区三区在线观看| 成人黄色片在线观看| 日韩一区二区免费看| 精品激情国产视频| 国内精品卡一卡二卡三| 美女视频亚洲色图| 日韩欧美一区二区不卡| 亚洲欧美在线精品| 中老年在线免费视频| 亚洲一区二区三区影院| 在线视频不卡国产| 国产福利在线视频| 久久综合九色综合97婷婷| 国产精品一区在线观看| av观看在线免费| 精品在线播放免费| 国产精品99蜜臀久久不卡二区| 国产精品99精品| 亚洲午夜在线| 欧美另类老女人| 男女性高潮免费网站| 99精品视频精品精品视频| 一区二区三区黄色| 国精产品一区二区三区| 免费看成人吃奶视频在线| 欧美成人国产一区二区| 免费人成视频在线播放| 四虎国产精品成人免费影视| 欧美体内she精视频| 日韩精品一区二区三区不卡| 中文在线中文资源| 色婷婷综合久久久久中文| 精品欧美一区免费观看α√| 不卡专区在线| 午夜激情一区二区| 日韩精品一区二区免费| 久草在线视频资源| 亚洲福利一二三区| 欧美一级视频在线播放| 黄色污网站在线观看| 婷婷成人综合网| 播放灌醉水嫩大学生国内精品| f2c人成在线观看免费视频| 亚洲成人激情av| 国产视频九色蝌蚪| 裤袜国产欧美精品一区| 欧美亚洲高清一区二区三区不卡| 欧美黑人又粗又大又爽免费| 欧美亚洲黄色| 日韩一区二区中文字幕| 日韩黄色一区二区| 羞羞答答一区二区| 影音先锋日韩有码| 日韩视频中文字幕在线观看| 综合天堂av久久久久久久| 久久全球大尺度高清视频| 午夜精品久久久久久久久久久久久蜜桃| 日韩午夜av| 国产精品入口免费视频一| 国产理论片在线观看| 国产mv日韩mv欧美| 青娱乐国产91| 搞黄网站在线观看| 午夜在线电影亚洲一区| 精品久久久噜噜噜噜久久图片 | 欧美69xxx| 亚洲一区二区三区四区中文字幕| 欧美亚洲另类色图| 亚洲国产91视频| 亚洲国产精品久久| 午夜黄色福利视频| 亚洲精品孕妇| 国产美女直播视频一区| 亚洲国产精品suv| 久久久www成人免费毛片麻豆| 亚洲最新免费视频| 久草免费在线视频| 在线播放中文字幕一区| 黄色网址在线视频| 亚洲国产老妈| 日韩美女免费线视频| a级片在线视频| 久久精品在线免费观看| 日韩a级黄色片| 欧美aaa视频| 日韩精品最新网址| 免费91在线观看| 在线亚洲一区| 亚洲一区二区三区香蕉| 精品久久久久一区二区三区| 亚洲在线观看免费视频| 日本久久精品一区二区| 欧美日日夜夜| 欧美多人爱爱视频网站| 中文有码在线播放| 91蜜桃婷婷狠狠久久综合9色| 中文一区一区三区免费| 日韩毛片免费观看| 亚洲成人a级网| www.av视频| 久久99精品久久久久| 欧美成人免费在线| 国产精品vvv| 欧美成va人片在线观看| 国产日产在线观看| 久久最新视频| 久久99影院| 波多野结衣中文字幕久久| 91精品国产91久久久久久最新毛片| 公肉吊粗大爽色翁浪妇视频| 久久成人免费| 精品蜜桃一区二区三区| wwwwxxxx在线观看| 欧美成人a在线| 免费无码毛片一区二区app| 久久99久久久久久久久久久| 亚洲看片网站| 久久福利在线| 中文字幕欧美日韩| 爱啪啪综合导航| 91精品福利视频| 久久久久久国产精品久久| 久久精品女人毛片国产| 国内精品自线一区二区三区视频| 青青成人在线| 在线看欧美视频| 国产亚洲欧美视频| 波多野结衣在线观看视频| 久久九九久久九九| 欧美精品性生活| 国产影视一区| 国产精品一二区| 久久综合网导航| 在线综合亚洲欧美在线视频| 亚洲怡红院在线观看| 精品一区二区三区免费视频| 成年人三级视频| 亚洲一区二区三区日本久久九| 欧美激情按摩在线| 色窝窝无码一区二区三区| 精品久久久久久亚洲精品| 亚洲av无码一区二区三区网址| 国产精品视区| 日本一区二区在线| 国产高清精品二区| 欧美激情性做爰免费视频| 色欲av永久无码精品无码蜜桃| 欧美日韩国产在线看| 91精品人妻一区二区三区| 喷水一区二区三区| 久久久久亚洲av无码专区喷水| 综合激情五月婷婷| 欧美在线欧美在线| 91在线不卡| 精品国产乱码久久久久久老虎| 日本va欧美va国产激情| 国产亚洲欧美在线| 日本美女久久久| 99热精品在线观看| 亚洲v欧美v另类v综合v日韩v| 精品视频在线观看免费观看| 性视频1819p久久| a黄色在线观看| 日韩欧美国产一区二区在线播放 | 日韩av电影在线网| 日本在线免费| 亚洲国产天堂久久综合网| 黄色网址中文字幕| 亚洲综合丁香婷婷六月香| 亚洲第一页av| 国产麻豆精品在线观看| 俄罗斯av网站| 最新精品国产| 日本一区二区不卡高清更新| 亚洲精品无播放器在线播放| 午夜伦理精品一区| 欧美日韩在线资源| 日韩高清人体午夜| 国产精品久久久久毛片| 欧美日韩在线视频一区| 老女人性淫交视频| 亚洲国产成人自拍| 一起草在线视频| 韩国成人在线视频| 福利在线一区二区三区| 亚洲精品社区| 国产一级片91| 色中色综合网| 欧美日韩另类综合| 97品白浆高清久久久久久| 国产精品网红直播| 黄色在线观看www| 欧美日本亚洲视频| 蜜芽在线免费观看| 伊人久久大香线蕉av一区二区| 亚洲免费国产视频| 91精品国产综合久久香蕉麻豆| 四虎成人永久免费视频| 亚洲一区二区三区小说| 成人自拍小视频| 中文字幕久久午夜不卡| 日韩精品电影一区二区| 成人性色生活片| 一级做a免费视频| 男男成人高潮片免费网站| 欧美日韩亚洲一| 一区二区高清| 精品久久久久久久久久中文字幕| 欧美日韩第一区| 一二三四中文字幕| 亚洲色图88| 自拍偷拍99| 国产精品7m凸凹视频分类| 欧美日韩综合另类| 精品一区欧美| 欧美一区二视频在线免费观看| 加勒比色综合久久久久久久久| 97久久夜色精品国产九色| 99精品国产九九国产精品| 国产精品一区二区久久| 欧美黄色a视频| 国产美女精彩久久| 中文字幕综合| 91影院在线免费观看视频| 成人影院网站ww555久久精品| 国产精品午夜一区二区欲梦| 成人黄色毛片| 国产色婷婷国产综合在线理论片a| 国产精品诱惑| 91精品视频免费看| 国产精品亚洲综合在线观看| 91色精品视频在线| 国产一区二区在线观| 97se亚洲综合在线| 亚洲日本va| 国产偷国产偷亚洲高清97cao| 高清一区二区三区| 久久99精品久久久久久水蜜桃| 岳的好大精品一区二区三区| 日本最新一区二区三区视频观看| 国产在线观看91一区二区三区| 亚洲va久久久噜噜噜久久狠狠| 婷婷亚洲综合| 日本一级黄视频| 91久久视频| 已婚少妇美妙人妻系列| 麻豆专区一区二区三区四区五区| 欧美激情国内自拍| 丁香婷婷深情五月亚洲| 久久国产精品无码一级毛片| 国产日本一区二区| 日韩在线一卡二卡| 亚洲综合色噜噜狠狠| 国产精品777777| 欧美日韩卡一卡二| 亚洲黄色在线免费观看| 亚洲欧美国产视频| 欧美人xxx| 久久久久久中文| 韩国精品主播一区二区在线观看| 国产女人18毛片水18精品| 视频精品国内| 欧美精品尤物在线| 亚洲三级黄色在线观看| 无码人妻熟妇av又粗又大| 欧美影视一区在线| 国产chinasex对白videos麻豆| 亚洲第一福利在线观看| 国产区视频在线播放| 久久精品夜夜夜夜夜久久| а√在线中文在线新版| 国产精品视频久久| 视频一区国产| 日韩久久久久久久| 911久久香蕉国产线看观看| 亚洲熟妇av日韩熟妇在线| 精品在线播放午夜| 国产黄色网址在线观看| 亚洲人被黑人高潮完整版| 国产精品第5页| 日韩一区二区三区高清免费看看 | 国产精品一区在线观看乱码 | 中文字幕一区免费在线观看| 久久久精品视频免费| 欧美日韩亚洲丝袜制服| 日韩在线观看视频一区二区三区| 色噜噜狠狠狠综合曰曰曰| 国产社区精品视频| 147欧美人体大胆444| 欧美亚洲精品在线| 国产一区二区网| 国产精品一区一区| jizz日本在线播放| 精品女同一区二区三区在线播放| 99热这里只有精品在线观看| 亚洲午夜色婷婷在线| 欧美激情护士| 国产另类第一区| 女主播福利一区| 热久久久久久久久| 日本一二三不卡| 老熟妇一区二区三区| 亚洲国语精品自产拍在线观看| 亚洲第一图区| 成人欧美一区二区三区在线湿哒哒| 嫩草影视亚洲| 男人天堂1024| 91婷婷韩国欧美一区二区| 国产在线视频99| 欧美变态tickle挠乳网站| 精品国产99久久久久久| 国产一区二区色| 久久亚洲国产| 九九热免费在线观看| 中文字幕免费在线观看视频一区| av大片免费观看| 亚洲国产精品久久久久久| 色噜噜狠狠狠综合欧洲色8| 亚洲最大的av网站| 亚洲精品久久久| 激情久久综合网| 亚洲欧美日韩精品久久久久| 中文字幕一区二区三区四区视频| 伊人久久综合97精品| 91综合国产| 在线视频福利一区| 国产久卡久卡久卡久卡视频精品| www深夜成人a√在线| 日韩一区二区三区电影| 肉肉视频在线观看| 国产精品久久久久久久久久直播| 黄色成人av网站| av2014天堂网| 欧美日韩一区二区精品| 美女欧美视频在线观看免费 | 熟妇人妻系列aⅴ无码专区友真希| 欧美精品video| 九九热hot精品视频在线播放| av在线播放亚洲| 久久久久成人黄色影片| 国产在线观看第一页| 丝袜情趣国产精品| 久久久久久爱| 丰满少妇久久久| 国产日产亚洲精品系列| 一区二区三区精| 欧美激情国产日韩精品一区18| 国产成人福利av| 无码精品国产一区二区三区免费| 久久久久国色av免费看影院| 中文字幕在线2018| 欧美激情videos| 视频一区在线观看| 亚洲xxx在线观看| 亚洲柠檬福利资源导航| 欧美 日韩 国产 在线| 国产91网红主播在线观看| 欧美大人香蕉在线| 亚洲成人福利视频| 欧美日韩性生活视频| 中文字幕日本在线| 成人资源av| 日本伊人色综合网| 精品无码免费视频| 国产亚洲精品成人av久久ww| 日本一区影院| 国模杨依粉嫩蝴蝶150p| 亚洲日韩欧美一区二区在线| 天天干天天做天天操| 国产精品自产拍在线观看| 国产精品vip| 亚洲色图欧美色| 亚洲国产黄色片| 9999精品| 国产av无码专区亚洲精品| 亚洲激情自拍偷拍| av在线女优影院| 激情小说网站亚洲综合网| 老司机午夜精品99久久| 亚洲 欧美 视频| 美女少妇精品视频| 国产尤物久久久|