Soft_Job 板


LINE

問題一 如果使用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://webptt.com/m.aspx?n=bbs/Soft_Job/M.1533190771.A.429.html
1F:→ meowyih: 我不是搞資料庫的, 不過我有認真看了一遍這篇文章, 唯一 08/02 21:05
2F:→ meowyih: 的疑問是所有的問題都建立在 "cache 機制無法暫時關閉, 08/02 21:06
3F:→ meowyih: 開了就開了" 的前題下。但是為什麼不能暫時關閉? 都能整 08/02 21:07
4F:→ meowyih: 個砍掉了, 寫個判斷機制讓自己後端暫時停止 cache 直到 08/02 21:07
5F:→ meowyih: 資料庫更新完 (像 q1, case 1) 不就好了? 都能整個砍掉了 08/02 21:08
6F:→ meowyih: 暫時停止沒差吧 08/02 21:08
7F:→ meowyih: 所謂的 "暫時停止" 指的是不讓人讀取 cache, 當 cache 不 08/02 21:09
8F:→ meowyih: 存在的意思 08/02 21:09
9F:→ x000032001: 假設cache每秒可處理10k req db每秒只有2k req 08/02 21:28
10F:推 youtuuube000: 想了解+1 08/02 21:29
11F:→ x000032001: 把資料放在cache的目的是避免大量req直接打db 讀資料 08/02 21:29
12F:→ x000032001: 一旦在更新時disable cache, req灌進db 那就失去用 08/02 21:30
13F:→ x000032001: cache緩解req的用意了 08/02 21:31
14F:→ x000032001: 我覺得你的問題其實把 Scaling Memcache at Facebook 08/02 21:47
15F:→ x000032001: 看一看就自然知道惹 08/02 21:47
16F:→ keyut2433: post request的同時給cookie,告訴dns這幾秒內的get會 08/03 05:33
17F:→ keyut2433: 送到master拿最新的data, 等cookie過期時再轉到slave 08/03 05:34
18F:推 x000032001: 其他user因為不可能set的到他的cookie所以還是會從sl 08/03 09:07
19F:→ x000032001: ave拿到old value 08/03 09:07
20F:推 keyut2433: 你沒錯.那只能讓slave抓masterDB的資料了.. 感謝 08/03 10:48
21F:→ twntwn: 若需要Strict Relication Consitency 的Query,從master拿 08/05 23:26
22F:→ twntwn: 其它的可以從Slave拿. 08/05 23:26







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP