[請益] rds replication & cache 多問
問題一
如果使用memcache
寫db的時候
1. 先invalidate cache 再寫db
2. 先寫db 再invaludate cache
3. update cache 然後 update db
4. update db 然後 update cache
我以為這個動作有標準做法,但是問了在亞馬和snapchat的朋友
也看了幾個tech talk 竟然答案不同,請問大家怎麼分析?
我上了一個網路課程的課,他說2是最佳解
case3 & 4 如果某一個update fail都會造成cache裡面髒數據的情況
case1:
user1 invalidate cache, while updating db(未完成)
user2 此時讀資料,cache miss,去讀資料庫,得到舊數據,
並用舊數據update cache
user1 完成db更新
此時cache存著舊數據,db新數據,cache髒數據
case2:
user1 update db (未完成)
user2 此時讀資料,在cache讀了舊資料,離開
user1 finish db and update cache
以後的user都可以讀到最新數據,只有user2讀了舊數據,但僅只一次,無傷大雅
問題二
還有一個問題,關於db consistency
如果用relational db, such as MySQL , Master Slave
write to master,
read from slave
寫到master之後(假設user update一個url link),並且invalid cache
這時候replication還沒完成,假設有5秒的延遲
這個時候如果來了一個read,cache miss
按照邏輯,這時候應該slave read , 但這時候slave data是舊的
那我的client要怎麼處理?
reddit founder 他說當初他們碰到這情況
很多slave裡面的link都是404 very bad user experience
所以他寫db的時候,同時寫到cache
https://youtu.be/cDL7ny_hvio?t=50s
但如果同時寫DB & cache 如果其中一個操作失敗了,那就造成髒數據了,不是嗎?
又如果
我採用問題一的方式 先寫db 然後invalidate cache,
write to master db , 5 sec replication time
這時候一個read進來, cache miss, read from slave取得舊數據
順便update cache
五秒後slave完成replica,但這時候也造成了數據不一致。
replication latency的問題該怎麼解決呢?
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.89.32.145
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1533190771.A.429.html
→
08/02 21:05,
7年前
, 1F
08/02 21:05, 1F
→
08/02 21:06,
7年前
, 2F
08/02 21:06, 2F
→
08/02 21:07,
7年前
, 3F
08/02 21:07, 3F
→
08/02 21:07,
7年前
, 4F
08/02 21:07, 4F
→
08/02 21:08,
7年前
, 5F
08/02 21:08, 5F
→
08/02 21:08,
7年前
, 6F
08/02 21:08, 6F
→
08/02 21:09,
7年前
, 7F
08/02 21:09, 7F
→
08/02 21:09,
7年前
, 8F
08/02 21:09, 8F
→
08/02 21:28,
7年前
, 9F
08/02 21:28, 9F
推
08/02 21:29,
7年前
, 10F
08/02 21:29, 10F
→
08/02 21:29,
7年前
, 11F
08/02 21:29, 11F
→
08/02 21:30,
7年前
, 12F
08/02 21:30, 12F
→
08/02 21:31,
7年前
, 13F
08/02 21:31, 13F
→
08/02 21:47,
7年前
, 14F
08/02 21:47, 14F
→
08/02 21:47,
7年前
, 15F
08/02 21:47, 15F
→
08/03 05:33,
7年前
, 16F
08/03 05:33, 16F
→
08/03 05:34,
7年前
, 17F
08/03 05:34, 17F
推
08/03 09:07,
7年前
, 18F
08/03 09:07, 18F
→
08/03 09:07,
7年前
, 19F
08/03 09:07, 19F
推
08/03 10:48,
7年前
, 20F
08/03 10:48, 20F
→
08/05 23:26,
7年前
, 21F
08/05 23:26, 21F
→
08/05 23:26,
7年前
, 22F
08/05 23:26, 22F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章
123
243