對響應要求高的系統,架構時都會在增加緩衝伺服器(redis memcachd), 那必須面對的問題就是如何保證緩衝和資料庫之間資料一致性問題。
方案1: 查詢直接查詢緩衝,更新操作同時更新緩衝資料(存在問題就是必須兩個更新同時成功,一方不成功則導致資料不一致)
方案2:mysql binlog增量訂閱消費+訊息佇列+處理並把資料更新到redis
推薦使用方案2:
資料同步一般有兩種:
1. 全量同步 ,即將全部資料一次寫入到redis,時間根據具體要求設定(如:幾小時)
2. 增量同步,即實時同步。
主要分析增量同步,目前主要canal方案
,基於資料庫增量日誌解
析,提供增量資料訂閱&消費,目前主要支援了mysql
具體操作是可以根據業務需求進行合理利用,如果訂單、**類的業務可以直接訪問資料庫(資料庫需要進行合理的分庫分表拆分)。
快取一致性解決方案
通常為了提公升使用者體驗,專案裡面一些熱點資料我們會把它放入快取裡面,以商品庫存為例我們就可以把商品對應的庫存資料放入redis,查詢資料時先去redis裡面找,沒有找到再訪問資料庫,如果庫存資料有更新就同時去更新redis的快取資料,以此達到減輕資料庫壓力。這種對快取資料的處理看似沒有問題,實際上...
session一致性的解決方案
伺服器為每個使用者建立乙個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同乙個上下文,這個相關資訊就是session。這樣,當使用者在應用程式的web頁之間跳轉時,儲存在session物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。session是對http無狀態協議的補充,達到狀態...
分布式session一致性解決方案
在早期的時候,很多 由於使用者規模較小,都是採取的單機部署的模式,只用一台伺服器來承載使用者的請求,這時候session是存在同一臺伺服器上,所以能夠很容易實現會話跟蹤和保持。然而隨著使用者規模的擴大,單機部署模式已經無法承載所有使用者的請求了,這時候人們自然而然想到用多台伺服器來處理使用者的請求,...