電商總結(七)快取系統

2021-09-13 20:46:51 字數 1116 閱讀 9546

前段時間,在和朋友討論和研究快取的使用,一直對快取的使用搞的不太清楚,所以這次把和朋友討論過快取系統的設計的相關問題總結總結。

對於乙個電商系統,快取是重要組成部分,提公升系統效能的主要方式之一就是快取。它可以擋掉大部分的資料庫訪問的衝擊,如果沒有它,系統很可能會因為資料庫不可用導致整個系統崩潰。

但是快取帶來了另外一些棘手的問題: 資料的一致性和實時性。

例如,資料庫中的資料狀態已經改變,但是在頁面上看到的仍然是快取的舊值,直到緩衝時間失效之後,才能重新更新快取。這個問題怎麼解決?

還有就是,快取資料如果沒有失效的話,是會一直保持在記憶體中的,所以對伺服器的記憶體也是負擔,那麼什麼資料可以放快取,什麼資料不可以,這是系統設計之初必須考慮的問題。

什麼資料可以放快取?

1,不需要實時更新但是又極其消耗資料庫的資料。比如**首頁的商品銷售的排行榜,熱搜商品等等,這些資料基本上都是一天統計一次,使用者不會關注其是否是實時的。

2,需要實時更新,但是資料更新的頻率不高的資料。

3,每次獲取這些資料都經過複雜的處理邏輯,比如生成報表。

什麼資料不應該使用快取?

實際上,在電商系統中,大部分資料都是可以快取的,不能使用快取的資料很少。這類資料報括比如涉及到錢、金鑰、業務關鍵性核心資料等。總之,如果你發現,系統裡面的大部分資料都不能使用快取,這說明架構本身出了問題。

如何解決一致性和實時性的問題?

保證一致性和實時性的辦法就是:一旦資料庫更新了,就必須把原來的快取更新。

說一說我們的快取方案:

我們目前的快取系統:redis(主從)+ rabbitmq + 快取清理服務組成,具體如下圖:

快取清理作業訂閱 rabbitmq訊息佇列,一有資料更新進入佇列,就將資料重新更新到redis快取伺服器。

當然,有些朋友的方案,是資料庫更新完成之後,立馬去更新相關快取資料。這樣就不需要mq 和 快取清理作業。不過,這同時也增加了系統的耦合性。具體得看自己的業務場景和平台大小。

電商總結(七)快取系統

前段時間,在和朋友討論和研究快取的使用,一直對快取的使用搞的不太清楚,所以這次把和朋友討論過快取系統的設計的相關問題總結總結。對於乙個電商系統,快取是重要組成部分,提公升系統效能的主要方式之一就是快取。它可以擋掉大部分的資料庫訪問的衝擊,如果沒有它,系統很可能會因為資料庫不可用導致整個系統崩潰。但是...

電商總結(七)快取系統

前段時間,在和朋友討論和研究快取的使用,一直對快取的使用搞的不太清楚,所以這次把和朋友討論過快取系統的設計的相關問題總結總結。對於乙個電商系統,快取是重要組成部分,提公升系統效能的主要方式之一就是快取。它可以擋掉大部分的資料庫訪問的衝擊,如果沒有它,系統很可能會因為資料庫不可用導致整個系統崩潰。但是...

電商系統 好用的電商系統 電商管理系統

好用的電商管理系統 首先對於日漸擴大的電商行業來說,每日訂單資料統計 訂單產品的分類 老客戶的維護 店鋪每日的實際收入 庫存情況 採購物品的資訊跟蹤都是需要我們花時間去統計和關注的,所以電商管理最主要的作用應該體現在 1.商品管理 2.庫存管理 3.採購管理 4.訂單管理 5.配送結算 6.財務管理...