系統架構設計師案例分析題——數據庫緩存篇

一.核心知識

1.redis和MySQL的同步方案怎么做的?

  • 讀數據:先查詢緩存,緩存不存在則查詢數據庫,然后將數據新增到緩存中
  • 寫數據:新增時,先新增數據庫,數據庫成功后再新增緩存;更新和刪除時,先更新或者刪除數據庫中的數據,再刪除緩存或者修改緩存的過期時間

2.實現Redis和MySQL之間的同步的方法

  • 利用觸發器
  • 通過數據庫插件
  • 異步隊列方式同步,可采用消息中間件處理
  • 實現同步方案,先查緩存,查不到再從DB查詢,并保存到緩存,更新緩存時先更新數據庫,再講緩存設置過期

3.Redis分布式存儲常見方案

中從模式、哨兵模式、集群模式

4.Redis集群切片的常見方式

  • 客戶端分片:即在客戶端就通過key的hash值對應到不同的服務器
  • 中間件實現分片:再應用軟件和Redis中間,由中間件實現服務到后臺Redis節點的路由分派
  • 客戶端服務端協作分片:Redis cluster模式,客戶端采用一致哈希,服務端提供錯誤節點的重定向服務slot上

5.分布式緩存

在高并發的環境下,為了減輕數據庫壓力,提高系統響應事件,在應用和數據庫之間增加獨立緩存系統,常見的分布式緩存有Redis和memcache。

6.解決SQL注入有哪幾種方式

  • 正則表達式
  • 參數化的過濾語句
  • 檢查用戶的輸入合法化
  • 數據加密處理
  • 存儲過程
  • 漏洞掃描工具
  • web防火墻

7.Redis緩存淘汰機制

  • 所有key中隨機淘汰一個key
  • 在過期時間的key中,刪除使用頻率最少的key
  • 在過期時間的key中,刪除即將要過期的key
  • 所以key中,刪除最不經常使用的key
  • 隨機刪除設置了過期時間的key

8.Redis數據結構與文件持久化差別在哪

  • 磁盤更新頻率:前者頻率較慢,后者每條指令對數據的操作都要保存,默認時間1秒
  • 數據安全:前者不如后者安全
  • 數據一致性:RDB可能發生數據丟失和不一致,后者即使宕機也能解決一致性問題
  • 重啟性能:前者恢復速度比后者快很多
  • 數據文件大小:前者保存整個數據庫的快照,容量比后者大

二.案例考察擴展

1.簡要說明數據遷移準備工作的內容

  • 待遷移數據源的詳細說明:包括數據的存放方式、數據量和數據的時間跨度
  • 建立新舊系統數據庫的數據字典,對現有系統的歷史數據進行質量分析,以及新舊系統數據結構的差異分析
  • 新舊系統代碼數據的差異分析
  • 建立新舊系統數據庫表的映射關系,對無法映射字段的處理方法
  • 開發或者購買、部署ETL工具
  • 編寫數據轉換的測試計劃和校驗程序
  • 制定數據轉換的應急措施

2.SQL語句優化的常見策略

  • 建立霧化視圖或者盡可能減少多表查詢。
  • 以不相干子查詢替代相干子查詢。
  • 只檢索需要的列。
  • 用帶in的條件子句等價替換or子句。
  • 經常提交commit,以盡早釋放鎖。
  • 避免嵌套的游標和多重循環等。

三.真題

1.2024下半年

Cache-aside架構,也稱為旁路緩存模式,是一種常見的緩存使用策略。

1+2.填空流程圖說明緩存讀寫的過程。

  1. 向緩存請求讀取該商品信息
  2. 若命中則返回該商品信息
  3. 若未命中則訪問數據庫查詢該商品信息
  4. 將查詢到的數據庫數據更新到緩存
  5. 將查詢到的數據庫目標數據返回

  • 更新數據庫中的目標商品信息。
  • 將數據庫中更新的商品信息寫入到緩存中,確保數據一致性。

3.王工使用了多線程技術進行緩存處理,線程1負責寫入,線程2負責讀取,可能存在數據一致性問題,請解釋其原因,并給出3個以上的解決辦法。

原因:

  • 如果沒有適當的同步機制,兩個或多個線程可能同時訪問和修改共享資源,導致最終結果取決于線程調度順序。
  • 在多線程環境中,一個線程對共享變量所做的更改不一定立刻被其他線程看到。
  • 寫入操作可能不是一個原子操作,意味著它可以被中斷或分段執行。

解決方案:

  • 延時雙刪
  • 同步刪除
  • 加互斥鎖(分布式鎖)
  • 消息隊列
  • 基于緩存更新策略

2.2024上半年

1.使用基于數據庫的分布式鎖所存在的缺陷

基于數據庫的分布式鎖雖然實現簡單,但在高并發、高可用性場景下存在一些明顯的缺陷,主要包括以下幾個方面:

  • 數據庫讀寫性能較低,鎖競爭導致連接池耗盡
  • 非原子性操作具有風險
  • 數據庫鎖通常是非公平的
  • 如果使用單機數據庫,一旦數據庫宕機,所有依賴它的分布式鎖將失效。
  • 鎖超時的時間難以設定

2.redis的幾種操作命令

  • 寫入:SET key value,哈希:HSET key field value
  • 查詢:GET key,哈希:HGET key field
  • 刪除:DEL key1 [key2],哈希:HDEL key field1 [field2]

3.基于redis的數據庫鎖也會存在死鎖場景,舉例說明:

?

基于數據庫的分布式鎖和基于redis的分布式鎖都存在問題,還有哪些其它的分布式鎖的類型?

  • 利用 ZooKeeper 的 臨時有序節點(Ephemeral Sequential Nodes) 實現鎖競爭。
  • 基于 etcd 的 租約(Lease) 和 事務(TXN) 實現
  • 利用 Consul 的 KV 存儲+Session 機制
  • 基于 Redlock 的分布式鎖(Redis 多實例)
  • 基于 Chubby(Google)的分布式鎖,Google 內部的分布式鎖服務,類似 ZooKeeper 但更強調高可用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81934.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81934.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是智能體?

什么是智能體? 智能體(AI Agent)是一種能夠自主感知環境、做出決策并執行任務的智能實體,其核心依賴大型語言模型(LLM)或深度學習算法作為“大腦”模塊。它通過感知模塊(如多模態輸入&#xff…

企業數字化轉型是否已由信息化+自動化向智能化邁進?

DeepSeek引發的AI熱潮迅速蔓延到了各個行業,目前接入DeepSeek的企業,涵蓋了科技互聯網、云服務、電信、金融、能源、汽車、手機等熱門領域,甚至全國各地政府機構也紛紛引入。 在 DeepSeek 等國產 AI 技術的推動下,眾多企業已經敏銳…

廣州卓遠VR受邀參加2025智能體育典型案例調研活動,并入駐國體華為運動健康聯合實驗室!

近日,“2025年智能體育典型案例調研活動”在東莞松山湖成功舉辦。本次調研活動由國家體育總局體育科學研究所和中國信息通信研究院聯合主辦,旨在深入貫徹中央關于培育新型消費的戰略部署,通過激活智能健身產品消費潛力,加快運動健…

springboot+vue實現鮮花商城系統源碼(帶用戶協同過濾個性化推薦算法)

今天教大家如何設計一個 鮮花商城 , 基于目前主流的技術:前端vue3,后端springboot。學習完這個項目,你將來找工作開發實際項目都會又很大幫助。文章最后部分還帶來的項目的部署教程。 系統有著基于用戶的協同過濾推薦算法,還有保證…

【android bluetooth 協議分析 02】【bluetooth hal 層詳解 3】【高通藍牙hal主要流程介紹-上】

1. 背景 本節主要討論 高通 藍牙 hal 中,的一些流程。 看看你是否都清楚如下問題: 高通芯片電如何控制?串口是在哪里控制的?固件如何下載?初始化流程是怎么樣的? 如果你已經對上述討論的問題&#xff0c…

JavaEE 初階文件操作與 IO 詳解

一、文件操作基礎:File 類 作用:操作文件或目錄(創建、刪除、獲取信息)。 核心方法: exists():文件是否存在createNewFile():創建新文件mkdir():創建目錄delete():刪除…

C++(27): 標準庫 <iterator>

目錄 1. 核心概念 2. 基本語法 3. 特點 4. 特有成員函數與工具 5. 內存與性能 6. 示例代碼 7. 成員函數與類型 8. 使用場景 9. 注意事項 1. 核心概念 迭代器(Iterator) 是 C++ 中用于訪問和遍歷容器元素的通用接口,類似于指針,但支持更豐富的操作。 抽象訪問機制:…

談談 Kotlin 中的構造方法,有哪些注意事項?

在 Kotlin 中,構造方法分為主構造方法(Primary Constructor)和次構造方法(Secondary Constructor)。 1 主構造方法 主構造方法是類的核心構造方法,直接在類頭聲明,位于類名之后。 1.1 基本語…

年會招標抽獎活動軟件———仙盟創夢IDE

年會是企業一年的總結與歡慶時刻,而抽獎環節更是點燃全場氣氛的關鍵。如何讓抽獎環節既大氣又充滿儀式感?選對抽獎軟件至關重要!本文精心挑選了 3 款兼具實用性與氛圍感的年會抽獎軟件,從界面設計到功能特色,全方位為你…

安全軟件檢測進程異常行為-Postgresql應用執行異常指令whoami

文章目錄 環境癥狀問題原因解決方案 環境 系統平臺:UOS(海光) 版本:4.5.8 癥狀 數據庫安裝包: 安全軟件告警中提示“sh -c whoami”命令,是由數據庫發出的,安全軟件捕獲到了postgres.exe–fo…

車載診斷架構 --- LIN 節點 ECU 故障設計原則

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

GPU加速的AlphaFold3蛋白質復合體預測:如何在64GB顯存下跑超大規模模型(混合精度+模型并行實戰技巧)

一、AlphaFold3的超大規模挑戰與優化方向 AlphaFold3作為當前生物計算領域的革命性工具,其核心架構基于擴散模型,能夠預測包含蛋白質、核酸、小分子配體等復雜生物復合物的三維結構。然而,模型參數量級(典型配置超百億級&#xf…

Qt功能區:Ribbon控件

控件 1. 按鈕1.1 多選按鈕1.2 2. 下拉列表框SARibbonComboBox2.1 簡介2.2 代碼實現 1. 按鈕 1.1 多選按鈕 軟件功能:用于實現Category的名稱居中。 SARibbonCheckBox繼承于QCheckBox,使用方法完全相同。 SARibbonCheckBox* checkBox new SARibbonChe…

一個由微軟開源的 Python 工具,用于將多種文件格式轉換為 Markdown 格式

📚 Markitdown 由微軟開源的 Python 工具,用于將多種文件格式轉換為 Markdown 格式 支持:PDF、PowerPoint、Word、Excel、圖像、音頻、HTML、文本格式(CSV、JSON、XML)、ZIP 文件的轉換。 它旨在提供一個簡單且靈活的…

Linux的進程概念

目錄 1、馮諾依曼體系結構 2、操作系統(Operating System) 2.1 基本概念 2.2 目的 3、Linux的進程 3.1 基本概念 3.1.1 PCB 3.1.2 struct task_struct 3.1.3 進程的定義 3.2 基本操作 3.2.1 查看進程 3.2.2 初識fork 3.3 進程狀態 3.3.1 操作系統的進程狀態 3.3…

export和import的書寫方式

一、導出模塊(export) 1. 命名導出(Named Exports) // math.js export const PI 3.14159; // 導出單個常量 export function sum(a, b) { return a b; } // 導出單個函數 export class Calculator { /* ..…

HOW - 結合 AI 進行 Tailwind 樣式開發

文章目錄 情況 1:使用 Tailwind CSS 與手寫傳統 CSS 的開發效率對比情況 2:AI Tailwind 自動生成 UI 的效率如何?總結 在 WHAT - Tailwind 樣式方案(不寫任何自定義樣式) 中我們已經簡單介紹過 Tailwind。今天主要認識…

java面試每日一背 day1

1.什么是緩存穿透 緩存穿透是指查詢一個數據庫中根本不存在的數據,導致這個查詢請求繞過緩存直接訪問數據庫的情況。這種情況如果頻繁發生,會對數據庫造成不必要的壓力。 典型特征: (1)查詢的數據在數據庫和緩存中都…

ngx_http_realip_module 模塊概述

一、使用場景 日志記錄 記錄真實客戶端 IP 而非反向代理的 IP,有助于流量分析和安全審計。訪問控制 基于真實 IP 實現防火墻規則(allow/deny)或限流,而非誤將上游 IP 視為客戶端。GeoIP、WAF、限速等功能 模塊化的上游真實 IP 支…

實戰5:個性化數字藝術生成與銷售

盈利思路 數字藝術銷售: 平臺銷售:將生成的數字藝術作品上傳到像OpenSea、Foundation等NFT平臺進行售賣。每一件獨特的藝術品可以通過NFT技術保證其唯一性,吸引收藏家和投資者。 定價策略:根據作品的復雜度、創意性以及市場需求來…