千萬級購物車系統快取架構方案

2022-09-24 03:51:13 字數 1196 閱讀 8530

本文主要介紹redis在千萬級系統中設計架構方案,包括主架構設計、快取一致性方案、大value處理方案和redis限流和故障恢復降級方案

快取架構主架構圖:

主架構中包括快取集群、快取限流、快取大value處理、hotkey探測系統、redis故障恢復降級和redis-mysql資料同步

快取一致性解決方案:

一、對於所有的db操作都不去新增具體的刪除快取的操作,而是通過canal監聽binlog的方式

二、待資料確認已提交到資料庫後,通過監聽的變化,解析出對應的資料後,過濾掉非增刪改的

binlog

三、然後通過常量類配置的需要處理資料一致性的相關表以及關鍵字段和快取字首key,進行組裝出需要進行刪除的快取key。並且通過mq的ack機制來保證快取一定會被刪除掉。

快取限流解決方案:

防止redis崩潰之後,系統無法正常運轉,所以我們需要做乙個降級處理。

系統操作redis的所有方法一般都是通過rediscache和redislock兩個類來處理的,所以我們通過aop切面的方式,對這兩個類中的所有方法做乙個切面,如果在這裡執行redis操作的時候,redis掛掉了,連線失敗了,那麼方法會拋異常,我們在切面處理方法上,捕捉異常,然後記錄一下是redis掛掉還是網路暫時的波動

大value處理方案:

一、搭建的redis集群

二、在canal中已經建立好了監聽,儲存到mysql中redis_large_key_log表的canal instance

三、在每天凌晨3點,會將redis中的大key(value)資料,通過canal instance傳送到 mq

四、消費redis_large_key_log表的binlog資料,該資料報含redis的大key(value)資訊

五、將大value切分成多個key,返回時拼接組裝

**:點選領取

13 購物車系統

1.設計表 1.使用者表 create table users id int primary key,name varchar 64 not null default pwd char 32 not null default 因為密碼是md5儲存,md5儲存後有32個字元 email varchar...

Python購物車系統的設計

購物車 需求 設計乙個簡單的購物車程式,將想要購買的商品資訊新增到購物車中。示例 如下 coding utf 8 author amoxiang file 22.購物車.py time 2021 01 23 products iphone11 5499 定義商品列表 mate30 pro 5799 ...

小程式商城 將商品加入購物車快取

js 新增購物車事件方法 tocart function event else this.animation animation animation.translatey 336 step this.setdata 將購物車資料新增到快取 var that this 獲取快取中的已新增購物車資訊 v...