億級流量電商平臺之多級快取架構快取一致性
阿新 • • 發佈:2021-07-09
前言
資料庫中資料發生變更,如何更新Redis快取呢?如何更新Nginx快取呢?
我們可以使用阿里巴巴的技術解決方案Canal來實現,通過Canal監聽資料庫變更,並實時消費變更資料,並更新快取。
canal [kə'næl]**,譯意為水道/管道/溝渠,主要用途是基於 MySQL 資料庫增量日誌解析,提供增量資料訂閱和消費
學習地址:https://github.com/alibaba/canal
早期阿里巴巴因為杭州和美國雙機房部署,存在跨機房同步的業務需求,實現方式主要是基於業務 trigger 獲取增量變更。從 2010 年開始,業務逐步嘗試資料庫日誌解析獲取增量變更進行同步,由此衍生出了大量的資料庫增量訂閱和消費業務。
基於日誌增量訂閱和消費的業務包括
- 資料庫映象
- 資料庫實時備份
- 索引構建和實時維護(拆分異構索引、倒排索引等)
- 業務 cache 重新整理
- 帶業務邏輯的增量資料處理
當前的 canal 支援源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。