高併發場景下,怎麼保證快取和資料庫的資料一致性?具體解決方案是什麼?有哪些框架?具體怎麼實現?

時間 2021-06-02 04:53:33

1樓:

看應用場景是頻繁讀、頻繁寫、頻繁讀寫。

讀多的場景:記憶體、磁碟雙寫就可以。

寫多的場景就需要考慮寫入削峰,可入kafka佇列快取寫入、leveldb記憶體+磁碟的多層快取削峰等。

2樓:

目前的回答從方案上已經說的很全面了,說下我的看法,我比較傾向

@白楊 , @小碼農xyz 的傾向,

在我的業務經驗裡,如果我們需要做快取大部分的業務都不需要嚴格的強一致,如果需要強一致的話不妨直接去讀db來減少複雜性,只需要一些手段來保持最終一致性即可(打個比方最簡單的ttl)。

在快取更新上我比較喜歡用

雖然說並不完美,但是可以應對大部分的情況。

多說一些在不同的db上也可以有一些不同的變化,打個比方我現在在用的cosmos db

他有乙個功能

Change feed processor in Azure Cosmos DB

可以很好的用來重新整理快取

3樓:小碼農xyz

建議:讀請求先讀快取,未命中情況下再讀資料庫再set快取寫請求先快取再資料庫,快取使用delete而不是set延伸問題:

主從同步,主從同步存在同步未完成時讀從庫時存在髒資料,這個時候髒資料再set會導致後續請求get的都是髒資料,這裡我們可以在同步完成時通過工具訂閱從庫的binlog獲取完成時間再delete重新set(這裡的前提是讀從庫來更新快取)

小tpis:延伸問題講道理我是找不到好的解決方案,如果有希望分享

ORACLE資料庫高可用 HA 的實現有哪些方法?

如果必須用正版,沒多少錢,要求簡單切換或自動切換,用作業系統級別的HA,比如IBM小型機的powerHA,windows的故障切換群集,linux的cluster之類的。有錢,或者不是必須用正版,上RAC,效能得到提公升的同時,單伺服器故障無需切換。這是最佳方案。無需完全實時同步的資料,上data ...

怎麼簡單地理解資料庫的概念?

舉個資料庫的例子 姓名性別年齡 張三男 21歲 李四男 20歲 王五男 19歲 以上是乙個資料庫的內容。這些資訊可以採用某種檔案形式儲存在計算機磁碟上,如儲存為文字檔案 d names.txt。可以認為是資料庫以檔案的形式儲存在磁碟。之後可以通過命令進行檢索 修改 統計。資料庫檔案和最後的那些操作命...

請問資料庫中的自連線怎麼理解?

時光與位元組 自連線是內連線的一種,內連線可分為等值連線和自身連線。等值連線 查詢兩個表中連線字段相等的記錄。自身連線 就是和自己進行連線查詢,給一張表取兩個不同的別名,然後附上連線條件。以下面這張表為例 要查詢與姓名 HH 同齡且籍貫也相同的學生資訊。就可以用自連線查詢 SELECTB.學號,B....