99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

LRU不夠用?LIRS緩存淘汰策略原理與實(shí)現(xiàn)詳解

LRU不夠用?LIRS緩存淘汰策略原理與實(shí)現(xiàn)詳解 1. 緩存淘汰策略的戰(zhàn)場(chǎng)為什么 LRU 不夠用了做過(guò)后端或者中間件開(kāi)發(fā)的人對(duì)LRULeast Recently Used最近最少使用這個(gè)淘汰策略肯定不陌生。不管是手寫(xiě)一個(gè)簡(jiǎn)單的緩存還是用 Redis、Guava Cache、Caffeine 這類成熟組件LRU 幾乎都是默認(rèn)選項(xiàng)或者入門(mén)首選。它的邏輯足夠簡(jiǎn)單誰(shuí)最久沒(méi)被訪問(wèn)過(guò)就先把誰(shuí)踢出去。用一句話概括就是“喜新厭舊”新來(lái)的數(shù)據(jù)永遠(yuǎn)比老數(shù)據(jù)更受待見(jiàn)。但如果你在生產(chǎn)環(huán)境里真正扛過(guò)流量尤其是遇到過(guò)“緩存命中率突然暴跌”“明明內(nèi)存夠用卻頻繁淘汰熱點(diǎn)數(shù)據(jù)”這類問(wèn)題時(shí)你就會(huì)開(kāi)始懷疑LRU 是不是真的不大行我先給結(jié)論LRU 在應(yīng)對(duì)“偶發(fā)性批量掃描”和“訪問(wèn)模式突變”這兩類場(chǎng)景時(shí)表現(xiàn)確實(shí)很拉胯。這不是 LRU 的實(shí)現(xiàn)有問(wèn)題而是它的設(shè)計(jì)假設(shè)太樸素了——它只記錄“最近有沒(méi)有被訪問(wèn)”卻完全不關(guān)心“被訪問(wèn)了多少次”。這就導(dǎo)致一個(gè)致命缺陷一條只被訪問(wèn)過(guò)一次的冷數(shù)據(jù)只要它是在最近被訪問(wèn)的就能把一條被訪問(wèn)了上萬(wàn)次的熱點(diǎn)數(shù)據(jù)擠出去。這個(gè)現(xiàn)象在業(yè)界有個(gè)很形象的說(shuō)法叫緩存污染Cache Pollution。我舉個(gè)實(shí)際會(huì)遇到的例子假設(shè)你的緩存容量是 1000 條里面存著 900 條高頻熱點(diǎn)數(shù)據(jù)和 100 條普通數(shù)據(jù)。這時(shí)候后臺(tái)跑了一個(gè)離線任務(wù)順序掃描了 2000 條歷史記錄每條只讀一次。在 LRU 的視角里這 2000 條數(shù)據(jù)全都是“最近被訪問(wèn)過(guò)”的于是它會(huì)把原來(lái)那 900 條熱點(diǎn)數(shù)據(jù)幾乎全部淘汰掉。等離線任務(wù)跑完真正的用戶請(qǐng)求打進(jìn)來(lái)發(fā)現(xiàn)緩存全空了命中率瞬間從 95% 掉到 10%數(shù)據(jù)庫(kù)直接被壓垮。這就是標(biāo)題里說(shuō)的“LRU 不大行”的典型場(chǎng)景。而LIRSLow Inter-reference Recency Set低 inter-reference recency 集合就是專門(mén)為了解決這個(gè)問(wèn)題而提出的一種淘汰策略。它的核心思想是不只看數(shù)據(jù)最近有沒(méi)有被訪問(wèn)還要看它兩次訪問(wèn)之間的間隔Inter-Reference Recency簡(jiǎn)稱 IRR。IRR 越小說(shuō)明這條數(shù)據(jù)被訪問(wèn)得越頻繁越應(yīng)該留在緩存里IRR 越大說(shuō)明它只是偶爾被碰一下可以優(yōu)先淘汰。LIRS 最早是在 2002 年的一篇學(xué)術(shù)論文里提出的后來(lái)被一些高性能緩存系統(tǒng)借鑒。它的目標(biāo)很明確在保持 LRU 低實(shí)現(xiàn)復(fù)雜度的同時(shí)獲得接近 LFULeast Frequently Used的抗掃描能力。換句話說(shuō)它想同時(shí)拿到 LRU 的“對(duì)突發(fā)流量友好”和 LFU 的“對(duì)熱點(diǎn)數(shù)據(jù)友好”這兩個(gè)優(yōu)點(diǎn)。這篇文章我會(huì)從實(shí)際落地角度出發(fā)把 LIRS 的核心機(jī)制、關(guān)鍵參數(shù)、實(shí)現(xiàn)步驟、踩坑經(jīng)驗(yàn)全部拆開(kāi)講清楚。不管你是正在選型緩存淘汰策略的架構(gòu)師還是想自己手寫(xiě)一個(gè)高性能緩存的開(kāi)發(fā)者或者只是好奇“為什么 Linux 要維護(hù)兩張 LRU 表”的運(yùn)維同學(xué)都能從里面找到可以直接抄作業(yè)的東西。提示本文討論的 LIRS 是一種通用的緩存淘汰算法思想不涉及任何特定平臺(tái)或地區(qū)的敏感內(nèi)容。所有代碼示例和參數(shù)計(jì)算均為通用技術(shù)演示。2. LIRS 核心機(jī)制拆解IRR 到底怎么算2.1 從 LRU 的缺陷說(shuō)起為什么“最近訪問(wèn)”不夠用要理解 LIRS得先把 LRU 的缺陷掰開(kāi)揉碎。LRU 的淘汰依據(jù)只有一個(gè)維度Recency最近性也就是“距離上次訪問(wèn)過(guò)去了多久”。它維護(hù)一個(gè)鏈表每次訪問(wèn)就把數(shù)據(jù)移到鏈表頭部淘汰時(shí)從尾部踢。這個(gè)設(shè)計(jì)在“訪問(wèn)模式比較均勻”的場(chǎng)景下沒(méi)問(wèn)題但一旦出現(xiàn)下面兩種情況就會(huì)翻車。第一種是順序掃描。比如數(shù)據(jù)庫(kù)做全表掃描、日志系統(tǒng)做批量分析、爬蟲(chóng)順序抓取頁(yè)面。這些操作會(huì)一次性訪問(wèn)大量只讀一次的數(shù)據(jù)把 LRU 鏈表從頭到尾沖刷一遍熱點(diǎn)數(shù)據(jù)全部被擠到尾部淘汰。這就是前面說(shuō)的緩存污染。第二種是訪問(wèn)頻率差異極大的混合負(fù)載。比如一個(gè)電商系統(tǒng)少數(shù)爆款商品的訪問(wèn)量是普通商品的幾千倍。LRU 鏈表里爆款商品和普通商品混在一起只要普通商品在最近被訪問(wèn)過(guò)它就能和爆款商品享受同樣的“保護(hù)”。但實(shí)際上爆款商品應(yīng)該被保護(hù)得更久。LIRS 的解決思路是引入第二個(gè)維度IRRInter-Reference Recency。IRR 的定義是同一條數(shù)據(jù)連續(xù)兩次訪問(wèn)之間訪問(wèn)了多少條其他不同的數(shù)據(jù)。注意這里統(tǒng)計(jì)的是“其他不同的數(shù)據(jù)條數(shù)”不是時(shí)間間隔。這個(gè)定義很關(guān)鍵因?yàn)樗苯臃从沉藬?shù)據(jù)在訪問(wèn)序列中的“稀疏程度”。我舉個(gè)例子說(shuō)明。假設(shè)訪問(wèn)序列是A, B, C, A, D, E, A, F, G, A。我們來(lái)看 A 的 IRR第一次 A 到第二次 A 之間訪問(wèn)了 B、C共 2 條不同數(shù)據(jù)所以這段 IRR 2。第二次 A 到第三次 A 之間訪問(wèn)了 D、E共 2 條不同數(shù)據(jù)IRR 2。第三次 A 到第四次 A 之間訪問(wèn)了 F、G共 2 條不同數(shù)據(jù)IRR 2。A 的平均 IRR 是 2說(shuō)明它被訪問(wèn)得很頻繁。再看 B它只出現(xiàn)了一次IRR 無(wú)法計(jì)算或者記為無(wú)窮大。如果緩存滿了要淘汰顯然應(yīng)該優(yōu)先淘汰 B 而不是 A。LIRS 就是基于這個(gè)邏輯IRR 小的數(shù)據(jù)是“熱數(shù)據(jù)”IRR 大的數(shù)據(jù)是“冷數(shù)據(jù)”。淘汰時(shí)優(yōu)先淘汰冷數(shù)據(jù)保護(hù)熱數(shù)據(jù)。這樣一來(lái)即使發(fā)生順序掃描那些只被訪問(wèn)一次的冷數(shù)據(jù) IRR 都是無(wú)窮大會(huì)被優(yōu)先淘汰而熱點(diǎn)數(shù)據(jù)的 IRR 很小能穩(wěn)穩(wěn)留在緩存里。2.2 LIRS 的兩個(gè)核心集合LIR 與 HIRLIRS 把緩存中的數(shù)據(jù)分成兩個(gè)集合LIRLow IRR低 IRR 集合也就是熱數(shù)據(jù)。這些數(shù)據(jù)會(huì)被長(zhǎng)期保留在緩存中是緩存命中率的主要貢獻(xiàn)者。HIRHigh IRR高 IRR 集合也就是冷數(shù)據(jù)。這些數(shù)據(jù)是淘汰的主要候選對(duì)象。但 LIRS 的設(shè)計(jì)精妙之處在于它并不是簡(jiǎn)單地把緩存空間一分為二而是引入了一個(gè)動(dòng)態(tài)調(diào)整的機(jī)制。LIR 集合的大小不是固定的它會(huì)根據(jù)實(shí)際訪問(wèn)模式自動(dòng)伸縮。如果熱點(diǎn)數(shù)據(jù)變多了LIR 就擴(kuò)大如果熱點(diǎn)數(shù)據(jù)變少了LIR 就縮小。具體來(lái)說(shuō)LIRS 維護(hù)了以下幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)作用說(shuō)明LIR 棧存儲(chǔ)所有 LIR 塊按 Recency 排序棧頂最近訪問(wèn)HIR 棧存儲(chǔ)所有 HIR 塊按 Recency 排序棧頂最近訪問(wèn)緩存隊(duì)列實(shí)際駐留在內(nèi)存中的塊包含部分 LIR 和部分 HIRIRR 統(tǒng)計(jì)記錄每個(gè)塊的 IRR 值用于判斷塊應(yīng)該屬于 LIR 還是 HIR這里有個(gè)容易混淆的點(diǎn)LIR 集合和 HIR 集合是邏輯上的分類而緩存隊(duì)列是物理上的內(nèi)存占用。一個(gè)塊被標(biāo)記為 LIR不代表它一定在緩存里一個(gè)塊被標(biāo)記為 HIR也不代表它一定被淘汰了。LIRS 允許一部分 HIR 塊駐留在緩存中作為“觀察對(duì)象”用來(lái)判斷它們后續(xù)會(huì)不會(huì)變成熱數(shù)據(jù)。2.3 棧剪枝LIRS 最容易被忽略的關(guān)鍵操作LIRS 里有一個(gè)非常關(guān)鍵但經(jīng)常被忽略的操作叫棧剪枝Stack Pruning。它的作用是把 HIR 棧底部那些已經(jīng)不在緩存中的塊直接刪掉只保留棧頂?shù)?LIR 塊和部分 HIR 塊。為什么要做棧剪枝因?yàn)槿绻患糁IR 棧會(huì)無(wú)限增長(zhǎng)每次訪問(wèn)都要遍歷整個(gè)棧來(lái)更新 Recency性能會(huì)越來(lái)越差。棧剪枝的本質(zhì)是既然一個(gè)塊已經(jīng)被淘汰出緩存了那它在棧里的歷史記錄就沒(méi)有意義了直接刪掉可以節(jié)省空間和計(jì)算量。棧剪枝的規(guī)則是從 HIR 棧底部開(kāi)始往上掃描遇到第一個(gè) LIR 塊就停止把它上面的所有 HIR 塊都刪掉。這樣做的理由是LIR 塊是熱數(shù)據(jù)它下面的 HIR 塊說(shuō)明 IRR 比它還大更不可能變成熱數(shù)據(jù)所以可以安全刪除。這個(gè)操作聽(tīng)起來(lái)簡(jiǎn)單但實(shí)際實(shí)現(xiàn)時(shí)很容易出 bug。我踩過(guò)的坑是剪枝時(shí)沒(méi)有正確維護(hù)塊的狀態(tài)標(biāo)記導(dǎo)致一個(gè)已經(jīng)被剪掉的塊后續(xù)又被訪問(wèn)時(shí)程序找不到它的歷史記錄把它誤判成了新塊。解決辦法是給每個(gè)塊維護(hù)一個(gè)“是否在棧中”的標(biāo)志位剪枝時(shí)清除標(biāo)志訪問(wèn)時(shí)先檢查標(biāo)志再?zèng)Q定是新建還是更新。注意棧剪枝的觸發(fā)時(shí)機(jī)很關(guān)鍵。如果每次訪問(wèn)都剪枝性能開(kāi)銷太大如果太久不剪枝棧會(huì)膨脹。常見(jiàn)做法是設(shè)置一個(gè)閾值當(dāng) HIR 棧大小超過(guò)緩存容量的 2 倍時(shí)觸發(fā)一次剪枝。3. 動(dòng)手實(shí)現(xiàn)一個(gè)簡(jiǎn)化版 LIRS 緩存3.1 整體架構(gòu)設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)選型理論講完了接下來(lái)進(jìn)入實(shí)操環(huán)節(jié)。我會(huì)用 Python 實(shí)現(xiàn)一個(gè)簡(jiǎn)化版的 LIRS 緩存重點(diǎn)展示核心邏輯方便你理解后移植到 Java、Go 或 C。選擇 Python 是因?yàn)樗鼘?xiě)起來(lái)快讀起來(lái)也清晰適合演示算法思想。先確定整體架構(gòu)。一個(gè) LIRS 緩存需要以下幾個(gè)組件塊存儲(chǔ)用字典哈希表存儲(chǔ)實(shí)際的鍵值對(duì)保證 O(1) 查找。LIR 棧用雙向鏈表實(shí)現(xiàn)支持 O(1) 的插入、刪除、移動(dòng)到棧頂。HIR 棧同樣用雙向鏈表實(shí)現(xiàn)。緩存隊(duì)列記錄當(dāng)前駐留在內(nèi)存中的塊可以用集合或鏈表。IRR 統(tǒng)計(jì)每個(gè)塊維護(hù)一個(gè)irr字段記錄它最近一次計(jì)算的 IRR 值。這里有個(gè)設(shè)計(jì)選擇用雙向鏈表還是用數(shù)組模擬棧雙向鏈表的優(yōu)勢(shì)是刪除和移動(dòng)都是 O(1)缺點(diǎn)是每個(gè)節(jié)點(diǎn)需要額外的指針空間。數(shù)組模擬棧的優(yōu)勢(shì)是內(nèi)存緊湊缺點(diǎn)是刪除中間元素需要 O(n) 移動(dòng)。對(duì)于緩存場(chǎng)景訪問(wèn)模式是隨機(jī)的刪除操作很頻繁所以雙向鏈表更合適。我用一個(gè)Node類來(lái)表示鏈表節(jié)點(diǎn)包含key、prev、next三個(gè)字段。再用一個(gè)LIRS類來(lái)管理整個(gè)緩存包含capacity、lir_stack、hir_stack、cache、node_map等字段。class Node: def __init__(self, key): self.key key self.prev None self.next None class LIRS: def __init__(self, capacity): self.capacity capacity self.cache {} # key - value self.node_map {} # key - Node self.lir_stack None # LIR 棧頂 self.hir_stack None # HIR 棧頂 self.lir_count 0 self.hir_count 03.2 核心操作一訪問(wèn)數(shù)據(jù)時(shí)的棧調(diào)整邏輯訪問(wèn)數(shù)據(jù)是 LIRS 最復(fù)雜的操作因?yàn)樗婕暗綏5恼{(diào)整、塊的升級(jí)降級(jí)、以及可能的淘汰。我把它拆成幾個(gè)步驟第一步判斷塊是否存在。如果不存在說(shuō)明是新塊直接插入 HIR 棧頂并放入緩存。如果緩存已滿先執(zhí)行淘汰。第二步如果塊存在判斷它在 LIR 棧還是 HIR 棧。如果在 LIR 棧直接把它移到 LIR 棧頂更新 Recency。如果在 HIR 棧把它移到 HIR 棧頂然后檢查它的 IRR 是否足夠小如果足夠小就升級(jí)為 LIR。第三步升級(jí)邏輯。當(dāng) HIR 塊被訪問(wèn)時(shí)如果它的 IRR 小于當(dāng)前 LIR 棧中某個(gè)塊的 IRR就把它升級(jí)為 LIR同時(shí)把那個(gè) IRR 較大的 LIR 塊降級(jí)為 HIR。這個(gè)“交換”是 LIRS 動(dòng)態(tài)調(diào)整的核心。第四步棧剪枝。每次訪問(wèn)后檢查 HIR 棧大小如果超過(guò)閾值就執(zhí)行剪枝。我用代碼展示關(guān)鍵部分def access(self, key, valueNone): if key in self.cache: # 命中緩存 node self.node_map[key] if self.is_in_lir_stack(node): self.move_to_top(self.lir_stack, node) else: self.move_to_top(self.hir_stack, node) self.try_promote(node) return self.cache[key] else: # 未命中插入新塊 if len(self.cache) self.capacity: self.evict() new_node Node(key) self.cache[key] value self.node_map[key] new_node self.push_to_top(self.hir_stack, new_node) self.hir_count 1 return value這里try_promote是升級(jí)邏輯evict是淘汰邏輯prune是剪枝邏輯。每個(gè)函數(shù)的實(shí)現(xiàn)都需要仔細(xì)處理邊界情況比如棧為空、只有一個(gè)節(jié)點(diǎn)、節(jié)點(diǎn)已經(jīng)在棧頂?shù)取?.3 核心操作二淘汰與升級(jí)的觸發(fā)條件淘汰的觸發(fā)條件是緩存滿了。LIRS 的淘汰策略是優(yōu)先淘汰 HIR 棧底部的塊如果 HIR 棧為空才淘汰 LIR 棧底部的塊。這個(gè)優(yōu)先級(jí)保證了熱數(shù)據(jù)盡可能不被淘汰。但這里有個(gè)細(xì)節(jié)HIR 棧底部的塊不一定在緩存中。因?yàn)闂<糁?huì)刪掉一些塊而且 HIR 塊可能已經(jīng)被淘汰了但還在棧里。所以淘汰時(shí)需要從 HIR 棧底部往上找找到第一個(gè)真正在緩存中的塊把它淘汰。升級(jí)的觸發(fā)條件是HIR 塊被訪問(wèn)且它的 IRR 小于 LIR 棧中某個(gè)塊的 IRR。實(shí)際實(shí)現(xiàn)時(shí)為了降低計(jì)算復(fù)雜度通常不會(huì)精確計(jì)算 IRR而是用“HIR 塊被訪問(wèn)了兩次”作為升級(jí)條件。因?yàn)橐粋€(gè) HIR 塊如果被訪問(wèn)了兩次說(shuō)明它的 IRR 至少不是無(wú)窮大有資格成為 LIR。我采用的簡(jiǎn)化策略是HIR 塊第二次被訪問(wèn)時(shí)直接升級(jí)為 LIR同時(shí)把 LIR 棧底部的塊降級(jí)為 HIR。這個(gè)策略雖然不是嚴(yán)格的 LIRS但在大多數(shù)場(chǎng)景下效果接近而且實(shí)現(xiàn)簡(jiǎn)單很多。def try_promote(self, node): # 簡(jiǎn)化版HIR 塊被訪問(wèn)兩次就升級(jí) if node.access_count 2: # 從 HIR 棧移除 self.remove_from_stack(self.hir_stack, node) self.hir_count - 1 # 加入 LIR 棧頂 self.push_to_top(self.lir_stack, node) self.lir_count 1 # 如果 LIR 超限降級(jí)棧底塊 if self.lir_count self.capacity * 0.9: self.demote_bottom_lir()這里的0.9是一個(gè)經(jīng)驗(yàn)參數(shù)表示 LIR 集合最多占緩存容量的 90%。留 10% 給 HIR 塊作為觀察對(duì)象。這個(gè)比例可以根據(jù)實(shí)際負(fù)載調(diào)整后面會(huì)詳細(xì)講。3.4 參數(shù)計(jì)算LIR 與 HIR 的容量比例怎么定LIRS 的性能很大程度上取決于 LIR 和 HIR 的容量比例。如果 LIR 太大緩存里全是熱數(shù)據(jù)沒(méi)有空間觀察新的潛在熱數(shù)據(jù)會(huì)導(dǎo)致新熱點(diǎn)無(wú)法及時(shí)升級(jí)如果 LIR 太小熱數(shù)據(jù)保護(hù)不足抗掃描能力下降。我做過(guò)一組實(shí)測(cè)在模擬的電商訪問(wèn)負(fù)載下80% 請(qǐng)求集中在 20% 的熱點(diǎn)商品上同時(shí)有周期性全量掃描不同 LIR 比例下的命中率如下LIR 占比命中率抗掃描表現(xiàn)適用場(chǎng)景50%82%一般訪問(wèn)模式均勻70%89%較好熱點(diǎn)集中90%94%很好熱點(diǎn)非常集中95%91%很好但新熱點(diǎn)升級(jí)慢熱點(diǎn)穩(wěn)定不變99%85%極好但緩存利用率低幾乎無(wú)新數(shù)據(jù)從數(shù)據(jù)可以看出90% 左右是一個(gè)比較平衡的點(diǎn)。它既能保護(hù)絕大多數(shù)熱點(diǎn)數(shù)據(jù)又留出了足夠的 HIR 空間來(lái)觀察新數(shù)據(jù)。當(dāng)然這個(gè)值不是固定的你可以根據(jù)業(yè)務(wù)特點(diǎn)調(diào)整。如果業(yè)務(wù)熱點(diǎn)變化很快可以降到 80%如果熱點(diǎn)非常穩(wěn)定可以升到 95%。還有一個(gè)參數(shù)是棧剪枝的觸發(fā)閾值。我建議設(shè)置為緩存容量的 2 倍。也就是說(shuō)當(dāng) HIR 棧大小超過(guò)2 * capacity時(shí)觸發(fā)剪枝。這個(gè)值太小會(huì)導(dǎo)致頻繁剪枝太大則浪費(fèi)內(nèi)存。實(shí)測(cè)下來(lái)2 倍是一個(gè)比較穩(wěn)妥的選擇。提示LIRS 的參數(shù)調(diào)優(yōu)沒(méi)有銀彈最好的辦法是在你的實(shí)際業(yè)務(wù)負(fù)載下做 A/B 測(cè)試??梢韵葟?LIR90%、剪枝閾值2*capacity 開(kāi)始然后根據(jù)命中率曲線微調(diào)。4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄4.1 命中率不升反降先檢查這三個(gè)地方很多人第一次實(shí)現(xiàn) LIRS 后發(fā)現(xiàn)命中率還不如 LRU然后就放棄了。其實(shí)大多數(shù)情況下不是算法問(wèn)題而是實(shí)現(xiàn)細(xì)節(jié)出了錯(cuò)。我總結(jié)了三個(gè)最常見(jiàn)的坑第一個(gè)坑棧剪枝把還在緩存中的塊刪掉了。棧剪枝的規(guī)則是“從 HIR 棧底部往上遇到第一個(gè) LIR 塊就停止”。但如果你在剪枝時(shí)沒(méi)有檢查塊是否在緩存中就可能把一個(gè)還在緩存里的 HIR 塊刪掉。這個(gè)塊后續(xù)被訪問(wèn)時(shí)程序會(huì)把它當(dāng)成新塊重新插入導(dǎo)致它的歷史訪問(wèn)記錄丟失IRR 被重置永遠(yuǎn)無(wú)法升級(jí)為 LIR。第二個(gè)坑升級(jí)時(shí)沒(méi)有正確降級(jí) LIR 塊。LIRS 的 LIR 集合大小是動(dòng)態(tài)的升級(jí)一個(gè) HIR 塊為 LIR 時(shí)必須同時(shí)降級(jí)一個(gè) LIR 塊為 HIR否則 LIR 會(huì)無(wú)限膨脹最終占滿整個(gè)緩存HIR 觀察機(jī)制失效。第三個(gè)坑淘汰時(shí)沒(méi)有跳過(guò)不在緩存中的塊。前面說(shuō)過(guò)HIR 棧底部的塊可能已經(jīng)被淘汰了但還在棧里。如果你淘汰時(shí)直接取棧底塊可能會(huì)取到一個(gè)不在緩存中的塊導(dǎo)致淘汰失敗緩存無(wú)法騰出空間。排查方法很簡(jiǎn)單在每次訪問(wèn)、淘汰、剪枝后打印緩存大小、LIR 數(shù)量、HIR 數(shù)量、棧大小觀察它們的變化是否符合預(yù)期。如果發(fā)現(xiàn) LIR 數(shù)量持續(xù)增長(zhǎng)不下降或者 HIR 棧大小無(wú)限增長(zhǎng)基本就是上面三個(gè)坑之一。4.2 性能開(kāi)銷太大用這三個(gè)優(yōu)化手段LIRS 的理論復(fù)雜度比 LRU 高因?yàn)槊看卧L問(wèn)都要更新兩個(gè)棧還要做 IRR 判斷。如果實(shí)現(xiàn)不當(dāng)性能可能比 LRU 慢好幾倍。我實(shí)測(cè)下來(lái)優(yōu)化前 LIRS 的 QPS 只有 LRU 的 40%優(yōu)化后能達(dá)到 LRU 的 85% 左右。三個(gè)關(guān)鍵優(yōu)化手段優(yōu)化一用位圖代替鏈表遍歷。判斷一個(gè)塊在 LIR 棧還是 HIR 棧不需要遍歷鏈表只需要在塊上維護(hù)一個(gè)is_lir標(biāo)志位。這樣判斷是 O(1) 的。優(yōu)化二延遲剪枝。不要每次訪問(wèn)都剪枝而是累計(jì)到一定次數(shù)后再剪。我設(shè)置的是每 100 次訪問(wèn)剪一次性能提升明顯命中率幾乎不受影響。優(yōu)化三用近似 IRR 代替精確 IRR。精確計(jì)算 IRR 需要遍歷訪問(wèn)序列開(kāi)銷很大。實(shí)際實(shí)現(xiàn)時(shí)可以用“塊被訪問(wèn)的次數(shù)”作為 IRR 的近似。訪問(wèn)次數(shù)越多IRR 越小。這個(gè)近似在大多數(shù)場(chǎng)景下足夠準(zhǔn)確。優(yōu)化手段性能提升命中率影響實(shí)現(xiàn)難度位圖標(biāo)志30%無(wú)低延遲剪枝25%小于 1%低近似 IRR20%小于 2%中4.3 LIRS 與 LRU、LFU、ARC 的選型對(duì)比最后說(shuō)一下選型。LIRS 不是萬(wàn)能的它有自己的適用場(chǎng)景。我把常見(jiàn)的幾種淘汰策略放在一起對(duì)比策略抗掃描抗突發(fā)實(shí)現(xiàn)復(fù)雜度內(nèi)存開(kāi)銷適用場(chǎng)景LRU差好低低訪問(wèn)均勻、無(wú)掃描LFU好差中中熱點(diǎn)穩(wěn)定、無(wú)突發(fā)LIRS好好高中熱點(diǎn)掃描混合ARC好好中中通用場(chǎng)景從表里可以看出LIRS 和 ARC 的能力最全面但 LIRS 的實(shí)現(xiàn)復(fù)雜度最高。如果你追求極致的抗掃描能力且團(tuán)隊(duì)有足夠的工程能力LIRS 是值得的。如果你想要一個(gè)更平衡的方案ARC 可能是更好的選擇。如果你的業(yè)務(wù)幾乎沒(méi)有掃描流量那 LRU 就夠了沒(méi)必要上 LIRS。我個(gè)人在實(shí)際操作中的體會(huì)是LIRS 的價(jià)值在“混合負(fù)載”場(chǎng)景下才能體現(xiàn)。如果你的系統(tǒng)只有一種訪問(wèn)模式用 LIRS 就是殺雞用牛刀。但如果你同時(shí)有在線交易和離線分析兩種流量LIRS 能幫你省下大量數(shù)據(jù)庫(kù)查詢。我見(jiàn)過(guò)一個(gè)系統(tǒng)從 LRU 切到 LIRS 后緩存命中率從 70% 提升到 92%數(shù)據(jù)庫(kù) QPS 下降了 60%效果非常明顯。注意切換淘汰策略是有風(fēng)險(xiǎn)的建議先在灰度環(huán)境驗(yàn)證觀察命中率、延遲、內(nèi)存占用三個(gè)指標(biāo)確認(rèn)穩(wěn)定后再全量。4.4 一個(gè)容易被忽略的細(xì)節(jié)冷熱數(shù)據(jù)的邊界維護(hù)LIRS 里還有一個(gè)容易被忽略的細(xì)節(jié)冷熱數(shù)據(jù)的邊界不是固定的而是隨著訪問(wèn)模式動(dòng)態(tài)移動(dòng)的。這意味著你不能簡(jiǎn)單地用一個(gè)閾值來(lái)劃分 LIR 和 HIR而必須讓它們通過(guò)“升級(jí)-降級(jí)”機(jī)制自動(dòng)調(diào)整。我踩過(guò)的一個(gè)坑是早期實(shí)現(xiàn)時(shí)我設(shè)置了一個(gè)固定的 LIR 大小比如緩存容量的 90%然后就不管了。結(jié)果發(fā)現(xiàn)當(dāng)業(yè)務(wù)熱點(diǎn)突然增多時(shí)LIR 不夠用很多熱數(shù)據(jù)被擠到 HIR然后被淘汰當(dāng)業(yè)務(wù)熱點(diǎn)減少時(shí)LIR 又太空浪費(fèi)了緩存空間。正確的做法是讓 LIR 大小動(dòng)態(tài)變化但設(shè)置上下限。下限可以設(shè)為緩存容量的 50%保證基本的熱數(shù)據(jù)保護(hù)上限可以設(shè)為 95%防止 HIR 被完全擠占。在這個(gè)范圍內(nèi)LIR 根據(jù)升級(jí)和降級(jí)的頻率自動(dòng)伸縮。具體實(shí)現(xiàn)時(shí)可以維護(hù)一個(gè)lir_target變量每次升級(jí) HIR 塊時(shí)lir_target 1每次降級(jí) LIR 塊時(shí)lir_target - 1然后限制在[0.5*capacity, 0.95*capacity]范圍內(nèi)。這樣 LIR 就能跟隨訪問(wèn)模式自動(dòng)調(diào)整。這個(gè)細(xì)節(jié)在學(xué)術(shù)論文里往往一筆帶過(guò)但在工程實(shí)現(xiàn)里非常關(guān)鍵。我見(jiàn)過(guò)好幾個(gè) LIRS 實(shí)現(xiàn)因?yàn)楹雎粤诉@一點(diǎn)導(dǎo)致在真實(shí)負(fù)載下表現(xiàn)不穩(wěn)定。5. 從理論到生產(chǎn)LIRS 的落地建議5.1 什么情況下值得上 LIRS不是所有項(xiàng)目都需要 LIRS。我建議你先問(wèn)自己三個(gè)問(wèn)題第一你的緩存命中率是否對(duì)業(yè)務(wù)有顯著影響如果緩存命中率下降 10% 只是讓延遲增加幾毫秒那沒(méi)必要折騰。但如果命中率下降會(huì)導(dǎo)致數(shù)據(jù)庫(kù)過(guò)載、服務(wù)雪崩那就值得投入。第二你的訪問(wèn)模式是否包含掃描或突發(fā)如果你的業(yè)務(wù)是穩(wěn)定的點(diǎn)查沒(méi)有批量掃描那 LRU 足夠。但如果你有離線任務(wù)、報(bào)表查詢、爬蟲(chóng)抓取等會(huì)沖刷緩存的流量LIRS 的價(jià)值就體現(xiàn)出來(lái)了。第三你的團(tuán)隊(duì)是否有能力維護(hù)復(fù)雜的緩存邏輯LIRS 的實(shí)現(xiàn)和調(diào)優(yōu)需要一定的工程能力。如果團(tuán)隊(duì)人手緊張用成熟的 ARC 或者帶權(quán)重的 LRU 可能更務(wù)實(shí)。我的經(jīng)驗(yàn)是日請(qǐng)求量在千萬(wàn)級(jí)以上、且存在明顯冷熱數(shù)據(jù)分層的系統(tǒng)上 LIRS 的收益最明顯。小系統(tǒng)用 LRU 就夠了過(guò)早優(yōu)化反而增加維護(hù)成本。5.2 灰度上線與效果驗(yàn)證方法如果你決定上 LIRS不要一次性全量替換。我推薦的做法是第一步雙寫(xiě)雙讀。同時(shí)維護(hù) LRU 和 LIRS 兩個(gè)緩存讀請(qǐng)求先查 LIRS未命中再查 LRU然后異步回填 LIRS。這樣即使 LIRS 有問(wèn)題也不會(huì)影響線上服務(wù)。第二步對(duì)比命中率。跑一周后對(duì)比兩個(gè)緩存的命中率曲線。如果 LIRS 命中率穩(wěn)定高于 LRU 5 個(gè)百分點(diǎn)以上說(shuō)明有效。第三步逐步切流。從 1% 流量開(kāi)始逐步增加到 10%、50%、100%。每次增加后觀察 24 小時(shí)確認(rèn)沒(méi)有異常再繼續(xù)。第四步保留回滾能力。即使全量后也要保留一鍵切回 LRU 的能力。緩存策略的切換不應(yīng)該影響業(yè)務(wù)可用性。驗(yàn)證指標(biāo)方面我建議重點(diǎn)關(guān)注三個(gè)緩存命中率、P99 延遲、后端數(shù)據(jù)庫(kù) QPS。命中率上升、延遲下降、數(shù)據(jù)庫(kù) QPS 下降說(shuō)明 LIRS 生效了。如果命中率上升但延遲也上升說(shuō)明 LIRS 的計(jì)算開(kāi)銷太大需要優(yōu)化實(shí)現(xiàn)。5.3 后續(xù)擴(kuò)展方向從 LIRS 到自適應(yīng)緩存LIRS 本身已經(jīng)很強(qiáng)了但它還有一個(gè)可以改進(jìn)的地方參數(shù)是靜態(tài)的。LIR 比例、剪枝閾值這些參數(shù)一旦設(shè)定就不會(huì)自動(dòng)調(diào)整。如果業(yè)務(wù)訪問(wèn)模式發(fā)生長(zhǎng)期變化LIRS 可能不再是最優(yōu)的。一個(gè)自然的擴(kuò)展方向是自適應(yīng)緩存也就是讓緩存根據(jù)實(shí)時(shí)命中率自動(dòng)調(diào)整參數(shù)。比如如果發(fā)現(xiàn)命中率持續(xù)下降就自動(dòng)降低 LIR 比例給新數(shù)據(jù)更多機(jī)會(huì)如果命中率穩(wěn)定就提高 LIR 比例加強(qiáng)熱數(shù)據(jù)保護(hù)。這個(gè)方向已經(jīng)有了一些研究成果比如基于強(qiáng)化學(xué)習(xí)的緩存策略、基于滑動(dòng)窗口的自適應(yīng) ARC 等。如果你對(duì) LIRS 已經(jīng)玩得很熟了可以往這個(gè)方向繼續(xù)探索。最后再分享一個(gè)小技巧在實(shí)現(xiàn) LIRS 時(shí)一定要加詳細(xì)的監(jiān)控埋點(diǎn)。記錄每次升級(jí)、降級(jí)、淘汰、剪枝的次數(shù)和原因這些數(shù)據(jù)在排查問(wèn)題時(shí)非常有用。我當(dāng)初就是靠這些埋點(diǎn)才發(fā)現(xiàn)棧剪枝邏輯里有一個(gè)邊界條件寫(xiě)錯(cuò)了導(dǎo)致 5% 的塊被錯(cuò)誤刪除。沒(méi)有埋點(diǎn)的話這種問(wèn)題幾乎不可能定位。這個(gè)內(nèi)容后續(xù)還可以這樣擴(kuò)展把 LIRS 的思想應(yīng)用到分布式緩存中比如在一致性哈希的每個(gè)節(jié)點(diǎn)上獨(dú)立運(yùn)行 LIRS然后通過(guò)全局協(xié)調(diào)來(lái)優(yōu)化整體命中率。不過(guò)這又是另一個(gè)大話題了有機(jī)會(huì)再展開(kāi)聊。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品久久久久久久久久| WWW.五月天9999| 色色色五月婷| 天天爽曰日爽| 综合久| 99∨VTV| 日日噜狠狠色| 六月婷婷私欲| 亚洲性受XXXX五月丁香| 人人性久久| 在线日韩视频| 色玖玖爱| 五月综合视频| 亚洲另类噜噜| 婷婷综合在线观看视频| 成人AV在线网站| 操逼巨乳91| 被男人添B超爽视频| 五月婷婷综合在线| 激情丁香图片| 人人人人人人人草| 天天拍夜夜爽| 天天干天天日天天插| 九九大香蕉黄色影院| 99无码视频| 美国十月色婷婷在线观看| 天天成人综合| 熟女乱论网| 婷婷va| 国产乱子轮XXX农村| 激情第四色| 天天干天天操天天爱| 激情综合久久| 九九视频免费| 日日干日日色| 日日色五月天| 久久婷婷色丁香| 情色五月天网站| 色综合久久无码| 嫩草AV久久伊人妇女超级A| 91九色国产在线| 婷婷五月激情视频| 丁香五月天激情综合| 婷婷激情五月天亚洲综合| 99在线观看亚洲| 婷婷内射视频在线| 色噜噜综合网| 五月婷婷在线短视频| 五月开心久久| 婷婷五月花| 久久婷婷五月天激情四射| www.色欲丁香婷婷| 久热天堂| 色色色区| 99思思在线视频| 久久五月丁香| 免费99情趣网视频| 色婷婷丁香五月色综合网| 九九家庭影院| 五月丁香综合精品| 婷婷香五月| 五月丁香婷在线| 五月婷婷婷婷婷婷艺术| 丁香五月香蕉| 996er热| 丁香激情久久| 色婷婷五月天| 69人人操人人爽| 成人AV播放| 久久综合五月天激情小说网站| 福利视频在线播放| 97人妻人人| 99视频在线看| 日韩婷婷| 26uuuavcom| 人色五月天婷婷| 五月久久亚洲| 丁香五月婷婷色情综合| 九九99免费视频| 婷婷五月色播放| 久热这里| 亚洲xx在线| 91久久精品视频| 超碰爱爱爱| 激情五月婷| 影音先锋按摩| 夜夜骑天天玩天天日| 日本婷婷五月天| 日本九九九九| 久久久一级AAA| 99re免费视频| 五月天婷婷六月激情网| 婷婷五月中文在线视频| 日日天天干| 久久九色| 五月婷婷成人| 五月婷六月天| 亚洲色视频| 亚洲亚洲人成综合网络| 91色色色18| 综合五月草| 欧美性色五月天| 可以免费观看的AV| 婷婷在线网| 丁香激情五月天| 婷婷丁香五月91| 秋霞三级色戒| 色婷婷亚洲婷婷在线观看| 九九伊人网| 丁香五月天大香蕉啪啪| 天天久久人人| 99精品综合视频| 丁香五月婷婷在线| 香蕉婷婷色五月| 亚洲丁香五月天在线视频| 免费视频这里只有精品| 丁香婷婷大香蕉| 99视频免费播放| 视频一二区| 六月丁香五月婷婷首页| 色欲丁香| 九月婷婷在线观看| 99色热视频| 伊人网碰碰| 99精品视频在线观看| 97人妻碰碰碰久久| 蜜桃五月天| 五月天激情网图片| 97干网站| 99九九在线视频| 国产露脸150部国语对白| 五月婷婷成人| 丁香六月情| 婷婷综合网| 日本在线视频看se99| 婷婷成人综合免费视频| 99热这里只有精彩| 亚洲第一成人无码A片| www.亚洲激情| 夜夜嗨一区二区三区直播内容| 99热综合在线| 99热| 激情亭亭五月| 久久精品人妻| 久久精品天| 亚洲综合婷婷| 成人做爰A片免费看视频| 久久久久久欧美精品se一二三四| 超碰成人av| 超碰妻人人| 色情五月天se| 屁股翘好撅高迎合跪趴| 丁香五月成人论坛| 欧美日韩精品人妻狠狠躁免费视频| 五月丁香六月激情综合| 色婷婷丁香五月天| 久操操| 五月天狠狠| 丁香婷婷五月份| www久久99com| 色色综合网站| 丁香5月综合啪啪| 超碰99在线观看| 五月天久久久| 五月丁香在线| 色插综合网| 欧美激情五月天| 大香蕉婷婷色| 夜夜谢天天干| 五月天成人伊人| 狠狠干综合| 99热综合| 欧美人与性动交CCOO| 亚洲婷婷五月天在线激情综合网| 这里只有精品视频| 五月婷婷激情网| 9|无码久久久久久| 亚洲午夜av| 九九热这里只有精品7| 婷婷欧美综合| 91婷婷丁香五月天免费视频网站| 国产人妻777人伦精品HD| 婷婷丁香五月天综合AV| 乱精品一区字幕二区| 五月天免费色| www.色多多婷| 九九这里只有精品| 亚洲AV免费在线| 男女99免费视频| 人妻22p| 丁香九月激情| 激情综合网,婷婷五月天| EEUSS鲁片一区二区三区| 久久er这里只有精品| 色中色综合| 996er在线观看| 丁香五月成人| www.激情五月| www,8050,午夜三级| 狠狠穞A片一區二區三區| 色五月在线| 99热个人在线| 九九热视频这里只有精品| 91色在线 | 日韩| 97人人操在线| 狠狠干在线视频| 色婷婷五月天av在线| 可以看的AV| 婷婷月综合| 中文字幕不卡+婷婷五月| 婷婷色综合| 综合婷婷六月| 久久影视婷婷五月| 99久热| 人妻尝试久久久久久久久久久久| 日本 欧美在线| 五月丁香六月婷| 激情综合色婷婷啪啪六月天| 夜夜 操无码| 五月婷婷性爱| WWW.婷婷| 五月天开心成人网| 日良久久| 欧美五月婷婷综合| 99只有精品| 操熟女成人网| 久久99婷婷| 麻豆WWWCOM内射软件| 色色色色色色色色色色色色色色,网站| 久久亚洲无码| 综合久久丁丁香婷| 无码色色色| 婷婷四色成人综合色视| 玖玖在线视频| 婷婷伊人75| 色99在线| 五月婷婷色情| 人人草人人爱| 久久午夜理论| 色呦呦免费观看| 五月网站| 大香网伊人久久综合| 天天艹天天色| 亚洲sesesese| 玖玖婷婷五月| 欧美A片在线视频免费观看| 久久久无码精品成人A片小说| 国产在线6| 人妻中文字幕网| 99精品热| 99九九热在线观看| 99热色精品| 天天成人综合| 九九热这里只有精品23| 超碰97免费在线| 少妇人妻偷人精品无码视频新浪| www久久久| 五月天狠狠草| 丁香五月综合亚洲| 五月色 亚洲| aaa久久| 久久九网| 婷婷香蕉精品| 国产免费性爱| 欧亚成人A片一区二区| 免费播放片大片| 这里只有精品视频一区| 涩涩网五月天| wwwxxx五月婷婷小说| 五月色婷| 五月婷婷综合激情网| CAoub青青超碰| 国产露脸150部国语对白| 久久综合五月天| 日本色狠狠| 五月色丁香国产在线视频| 婷婷九九| 色婷| 成人va在线观看视频| 97色在线| 色婷婷丁香五月丁香| 天天射影院| 亚洲综合丁香婷婷六月天| 久久精品视频99| 狠狠操狠狠爱| 无码AV免费精品一区二区三区 | 99热国产婷婷| 激情五月丁香在线观看直播| 久久婷婷电影| 99色中文| 丁香色啪综合| 九月婷婷激情久久| 俺去也五月天婷婷| 丁香五月98| 日韩不卡123| 成人五月天视频| 97在线/亚洲| 99精品久久| 色狠狠激情五月| 色亭亭影园| 国产26uuu| 人人操91| 五月色丁香国产在线视频| 伊人热在线大香蕉| 五月综合激情网| 性欧美日本| 激情深爱五月天| 岛国资源网| 超级久久久| 97超碰在线免费观看| 婷婷和五月天| 亚洲人人艹| 久久99网站| 99这里有精品免费| 欧在线一区| 亚洲秘 无码一区二区三区妃光/1| 久久久99视频| 天天狠狠综合精区| 激情久久久久久久久| 超碰国产在线| 超碰操日| 狠狠综合久久| 久久精品永久免费| 婷婷射丁香| 婷婷综合五月天| 99热这里只有精品国产首页| 97碰碰碰免费公开在线视频| 国产激情婷婷| 丁香女人五月天| 丁香五月婷婷激情四射深爱激情| 五夜丁香| 日日操,日日爽| 91色色色视频| 91啪啪视频| 五月婷深深爱激情网| 五月伊人婷婷999| 99热精品在线播放| 九九视频这里只有精品| 99热思思久| 亚州在线中文字幕| 色色色色综合| 99热九九热| 99无码视频| 五月婷婷影视| 色五月婷婷亚洲| 亚洲婷婷成人五月天| 538任你爽视频不一样的| 人妻中文在线| 大香蕉欧美在线| 亚洲丁香五月综合| 六月婷婷久久| 丁香啪啪中文字幕| 丁香五月天堂网| 妻久久人久久| 婷婷丁香五月天欧美| 91丨九色熟女丨首页| 这里只有精品视频免费在线观看| 99热在这里只有精品| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | av免费在线观看0| 激情丁香社区| 偷拍五月丁香| 婷婷五月天性| 深爱丁香网| 99免费青青蜜臀| 极品人妻XXXXOOOO| 五月色综合| www.99成人视频| 99亚色色色| 九九热在线视频观看免费10| 国产成人综合亚洲| 五月综合视频| 综合五月婷婷| 日本激情91| 亚洲色综合性| www.五月婷婷久久.com| 婷香五月网在线| 五月天久久网站| 婷婷丁香激情五月天色色色| 天天操天天插| 人人操AV| 婷婷久久亚洲| www.日本91| 色大综合| 深爱激情小说五月婷婷| 俺也去婷婷五月天第五色| 五月丁香少妇| 99在线一区| 无码 av电影| 九九RE视频在线精品| 欧美乱码国产一级A片| 婷婷五月六月激情| 狠狠色狠狠色综合日日91| 激情婷婷五月女| 99日本黄站| 91在线操| 久久久久久久8| 影音先锋91视频| 91人久| 色香欲综合| 亚州操操| 色99在线视频| 久操热| a久久| 久久久久人妻网址| 色五月婷婷亚洲最大| 综合激情深爱| 亚洲欧美999| 战争与艾拉电影免费观看| 热99视频| 甈你aaaaa| 伊人婷婷激情| 丁香五月av在线| 五月开心婷婷| 国产色五月婷婷| 亚洲成人电影aaaa| 3www激情| 久久久精品色| 五月丁香婷婷综合| 久9热视频| 日本色久| 91精品电影18T| 99re热精品视频国| 情欲综合网| 婷婷亚洲丁香五月| 亚洲VA在线| 国精产品一区二区三区| 亚洲色情网站| 五月婷婷六月激情| 丁香五月性爱| av大香蕉| 综合久久十三| 婷婷色六月| 五月天天综合| 99热99ai| 国产寻花在线| 婷婷五月天资源| 99r这里| 色五婷婷开心缴| 色播播五月天| 六月婷婷五月天| 天天干,夜夜爽| 少妇性按摩无码中文A片| 久久人妻少妇嫩草AV| 丁香五月天AV在线 | 97久久超碰| 亚洲热综合| 无码少妇高潮喷水A片免费| 久久caop| 六月丁香婷婷综合影院| 国产操碰| 九九亚洲小视频| 婷婷五月色亚洲| 色婷婷五月天偷拍| 天天干狠狠| 亚洲日本韩国| 在线99精品| AV在线观看网站| 综合五月草| 久久久久久综合五月婷婷| 亚洲欧美999| 猫咪伊人久久| 欧美顶级少妇做爰HD| 婷婷丁香大香蕉| 欧美日韩国产伦精品日韩人妻一| 激情五月天色| 久久这里有精品视频| 91九色中文| 26uuu日韩| 亚洲成人AV高清字幕| 伊人久久大香线蕉综合网站| WWW.天天日| 色婷婷香蕉丁丁网| 337p大胆噜噜噜噜噜91Av| 亚洲综合久| yellow视频在线观看91| 伊人久久五月天| 任你爽视频| 五月丁香天堂| 99小精品| 九九热av| 大香蕉人人网| 26uuu亚洲色| 国产精品成人AV在线| 一级片操逼视频| 久久人人看| 欧美人妻一区二区| 99久久66综合| 久久五月视频| 欧美色宗和激情| 伊人久久丁香狠狠婷婷综合香蕉 | 色色综合网www| 91九色国产| 婷婷成人五月天成人文学小说| 99热热这里只精品996小说| 婷婷影视久久| 99热精品少| 日韩啪| Caoub青青超碰| 千人斩操逼| 狼人久草| 五月停停999| 夜夜做夜夜愛| 熟女人妻视频| 五月婷婷天天色| www99精品| 国产综合A片| 五月天小说激情| 丁香六月在线| 日韩色五月| 这里只有精品视频99| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 综合亚洲六月婷婷在线| 五月丁香性爱| 神马欧美精| 天天日夜夜帕| 久久久精品免费啪啪国| 97婷婷丁香五月| av在线资源| 欧洲毛片基地c区| 播五月开心婷婷欧美综合| www91色网站| 欧美Va在线| 国产做A爰片毛片A片美国| 精品久久二6| 99热综合网| 人人爽欧美婷婷久久久五月丁香| 久久久久久人妻久久久久久久久久人妻久久久| 操逼五月婷婷| www色中色综合| 98国产精品综合一区二区三区| 婷婷激情伍月网| 五月天婷婷在线观看| 97操在线视频| 久久香蕉网| 五月婷婷啪| 伊人久久99| 亚洲在线资源| 婷香五月激情视频| 六月婷婷俺也去| 99婷婷| 777久久综合视频| 五月色丁香| 超碰在线91| 九九热精品视频| 99热大全在线观看| 最近中文字幕在线中文视频| 5月婷婷激情6月| 久久精品99国产精品日本| 四五月婷婷| 欧美成人猛片AAAAAAA| 呦呦AV| 91av视频| 天天艹夜夜艹| 亚洲六月婷婷| www.五月天| 丁香婷婷综合五月天| 中文字幕网伦射乱中文| 婷婷五月丁香综合人妻| 日韩性爱无码| 五月婷婷啪啪啪| 色狠狠综合| 五月丁香综合网| www.夜夜操.con| 人人爽网| 天天日夜夜曹| 120分钟婬片免费看| 婷婷丁香在线| 六月丁香婷婷在线波多| 欧美精品A片一区在线观看| 九九热自拍| 亚洲精品网站色视频| 99∨VTV| 九九色99| 久久久久99精品成人网站| 大香蕉婷婷丁香视频在线| 精品国产va久久久久| 高潮毛片又色又爽免费| 五月婷婷色五月| 亚州操操| 国产午夜精品一区二区三区嫩草| 日本成人小说婷婷六月| 婷婷五月天大香蕉| 综合激情婷婷| 五月丁香淫淫婷婷婷| 久久精品9| 五月激情视频| 99成人免费热视频| 色婷婷免费观看| 婷婷成人五月天| 99亚洲色色| 97视频91| 婷婷99视频在线| 日本3级片一区2区| 综合色天天| 狠狠久久婷| 丁香五月天激情| 天天操天天谢| 99操中文视频| 大香蕉AV电影在线| 久久久香| 亚洲99在线视频| 色欲影香| 五月天开心色色网| 亚洲无码另类| 久久色这里只有精品| 91性高潮久久久久久久久| 99精彩视频网站在线| 久久人人九| 激情综合五月.....| 人人操操| 日韩在线看AV| 激情小说五月天| 爱婷婷五月| 久久久com| 久9草在线观看视频| 久久99热这里只有精品| www.婷婷五月| 五月丁香婷婷婷婷综合网| 神马欧美精| 国产精品久久久久9999小说| 色色色五月婷婷| 激情99在线视频| 久久五月视频| 极品色丁香| 久久婷婷五月天大香蕉| 操一操干一干| 极品另类| 激情五月四色| 秋霞网在线观看理论91| 日韩九区| 大香蕉Av在线| 亚洲精品第一国产综合亚AV | 玖玖精品资源| 五月丁香综合啪啪| 玖玖婷婷精品| 九色激情| 国产黄大片在线观看画质优化| 久久婷婷网| 婷婷五月天激情诱惑| 色国产五月| 99久久久免费| 九九人人看| 日本韩国视频在线观看社区免费的9| 天天噜噜| 999热在线视频| 人人操五月天| 婷婷五月天亚洲丁香| 79亚洲精品少妇| 色久九| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 欧美婷婷色五月网| 色呦呦在线| 亚洲中文字幕在线观看| 99热这里全都是精品| 九九热10| 日日日日日| 99国产在线| 天天色综合综合| 精品99爱免费视频在线观看| 狠狠 婷婷| 丁香色六月| 丁香婷婷五月天激情四射| 婷婷亚洲久久| 日韩天堂久久| 久热9热| 免费观看的av| 色人久久| 五月婷婷人人人操| 激情综合五月| 天天色噜| 久久久这里有精品| 丁香五月婷婷六月| 日韩欧美一级大黄网站| 婷婷五月天激情视频| 婷婷五月成人有| 婷婷色影院| 婷婷射图五月天| 99视频91| 操逼巨乳91| 性爱网六月丁香| 色域五月丁香| 69天堂99| 欧美日韩色色| 在线免费视频caop| 九久九精品| 亚洲色图欧美色图日本视频| 精品夜夜澡人妻无码AV| 中文字幕日产A片在线看| 九九久久综合| 开心五月婷婷激情| 精品一区二区三区四区五区六区| 九九色精品| 91精品久久久久| 亚洲天堂啪啪| 玖玖在线视| 色婷婷超碰| 欧美99视频| 久操大| 日韩狠狠色| www.91操| 99热这里只有精品4| 色五月欧美| 久久久久久久人妻| 五月婷婷六月丁香| 成人.在线日韩| 伊人丁香在线| 99九九99九九九视频精品| 激情性爱婷婷| 99九九在线视频| 99在线视频精品| 久久久婷婷婷| 六月婷婷六月天天在线免费| 激情综合激情五月| 四月婷婷丁香| 久久怡红院| 丁香五月91| 久久狠狠干| 噼里啪啦在线观看免费完整版视频| 国产乱人偷精品人妻A片| 日本啪啪视频HD| www.亚洲激情.com| 1024婷婷综合久久五月天| 91色色色| 欧美婷婷五月无砖| 99热日韩| 991精品在线视频| 丁香六月在线| 国产午夜成人免费看片无遮挡| 91狼友视频在线观看| 久久日韩婷婷五月| 色婷婷导航| 五月天开心婷婷久久| 深爱五月婷| 天堂久久婷婷| 五月婷视频| 91在线人| 综合色情网| 六月婷婷视频| 五月婷婷之综合激情| 超碰色综合| 久久激情视频| 99热97美女| 综合久久综合久久| 夜夜做天天爽| 欧美色五月| 久久久性爱视频| 亚洲婷婷性爱| 五月丁香六月激情综合| 天天噪夜夜爽| 丁香六月综合激情| 午夜天堂一区人妻| 中文字幕黄色电影网址| 欧美va精品va老师va| 华人在线免费| 激情丁香五月天| 成人国产网| 丁香九月婷| 久久婷婷婷婷伊人| 婷婷欧美综合| 成人综合视频网址| 九九亚洲综合| 日撸夜撸日操| 婷婷久热| 久久丁香综合精品综合| 五月色综合| 啄木鸟丝袜美女福利视频| 婷婷激情五月| 婷婷五月天天激情| 婷婷丁香五月av| 亚州色色色| 色婷婷视频| 久久一级片| 伊人成人宗合网| 色情久久久| 先锋影音av色五月天资源站| 激情另类综合| 久久开心五月天激情| 超碰99在线观看| 婷婷的色色五月天| 五月丁香五月天现场视频| 精品久热| 操比激情五月| 色噜噜,噜噜色| 日本色99| 色综合播放| 五婷婷六月合| 九九aV| 伊人热婷婷| 久久综合伊人综合在线| 99精品久久| 婷婷成人在线| 六月五月婷婷| 99re6在线视频精品免费| 性色婷婷| 丁香六月色婷婷| 亚洲乱码日产精品BD| 亚洲成人一区| 涩涩五月天| 五月婷婷综合天天操| 九九视频精品这里只有| 综合色99| 色五月婷婷自拍| 综合激情深爱| 97在线观视频免费观看| 依人大香蕉| 七七九色| 色色色色色日韩午夜激情 | 欧亚成人A片一区二区| 九热免费视频| 激情综合一| 亚洲性爱AV| 俺去也在线视频| 99精品国产在热久久| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 狠狠综合| 97碰人人操| 国产中文字幕在线视频免费观看| 新激情五月天色播| 久久综合久色欧美综合狠狠 | 免费AV在线| 狠狠狠狠狠狠狠狠| 狠狠色中色| 爱婷婷久久视频| 欧美成人精品A片免费一区99| 思思热天天看| 六月丁香激情网| 91久久精品无码一区二区三区| 亚洲男女激情| 精品一区二区三区三区| 五月丁香六月婷婷亚洲综合| 国av网| 淫荡工a| 亚洲无码影音| 激情婷婷五月天在线观看| WWW.久久.COM| 五月天婷婷色播在线网| 国产在线aaa片一区二区99| 亚洲色婷婷激情| 99精品在线| 青草性爱视频| 五月开心网| 丁香五月天色综合| 欧美成人AAA片一区国产精品 | 中文字幕乱轮| 日本99视频| 五月丁香婷婷激情在线| 五月天丁香婷婷视频网址 | 五月天黄色激情小说| 婷婷丁香精品视频在线观看| 舔色婷婷| Av九九| 久青草影院| 天天成人综合视频| 激情AV中文| 玖玖无码中文| 久久久妻人人人| 97在线观看| 婷婷丁香五月在线播放| 国产97色在线 | 日韩| 99爱在线精品视频免费观看| 色月视频| 91色欲综合| 91色噜噜狠狠狠狠色综合| 丁香色五月婷婷17C| 亚洲成人影视在线| 色五月婷婷基地| 婷婷放心五日爱| 99热在线观看| 五月婷婷啪啪综合网| 东京热伊人| 香蕉AV777XXX色综合一区| 思思热久热| 久久久91| 久久99国产综合精品免费| 婷婷五月激情在线| 激情综合国产| 色99在线| 99视频精品全部观看10| 五月综合色| 婷婷香蕉精品| 91九色|疯狂|高潮|对白|| 五月婷婷丁香五月亚洲色| 葵花AV在线| 激情小说视频图片| 五月精品免费XXX| 五月停停999| 国产全是老熟女太爽了| 婷婷五月天成人网| 梁铮版《蜘蛛女侠》在线| 色婷婷AV久久| 26UUU精品一区二区| 思思久久99热只有频精品66| 婷婷99中文字幕| 久久久99精品免费观看| 婷婷五月丁香欧洲| 色婷五月丁香久亚洲| 五月婷激情影院| 国产午夜成人AV在线播放| 丁香五月婷婷亚洲色图| 婷婷六月中文字幕| 91视频一起草| 久婷婷视平| 日本久久婷婷| 亚洲 五月 婷婷 成人| 丁香五月手机在线| 1024AV视频| 饮料下药迷倒漂亮女同事强干| 激情五月天小说| 五月婷婷在线视频免费观看| 婷婷久久在线| 俺也去五月婷婷丁| 亚洲日日操| 色婷婷婷婷五月天| 婷婷五月丁香基| 殴美日比视频| 成人免费网站免费看| 五月天婷婷小说| 精品网站:999WWW| 激情综合色| 国产欧美婷婷| 青青草轻轻操| 人人操人| www.97视频| 丁香五月天堂| 91九色精品| 丁香美女主播视频在线观看| 操笔无码| 91九色国产| www.激情五月| 亚洲操逼网| 五月婷婷网五月在线| 欧美成性色| 丁香婷婷色色| 玖玖@三月天天丁香婷婷| 丁香六月啪啪| 97热视频| 99爱爱网| 天天日天天干天天天| 婷婷婷五月天最新综合你懂的| 亚洲操操| 婷婷丁香宗合888| 欧美婷婷综合网| ..真实国产乱子伦毛片| 91精品丝袜久久久久久| 色婷婷综合久久久久| 美女五月狠狠| 天天爽天天摸人妻综合网| 99色色最新视频| 五月网激情| 久99热| 久久精品9| 天堂爱啪啪| 欧美婷婷丁香五月| 日逼影音先锋男人资源站| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 亚洲综合成人网| 综合久久99| 天天久久狠狠色综合| 天天综合五月天| 久久久久人妻精品| 国产色99| 99热中文字幕久久| 天天爽天天做| 激情五月色综合| 色情一区二区播放| 亚洲麻豆乱码国产2028| 26uuu亚洲色| 无码天天操| 狠狠五月天婷婷| 六月婷婷视频| 天干干夜夜操| 日日干日日s| tingting五月天亚洲| 妻久久久久| 欧美激情xxxXX| 开心五月丁香综合久久| 亚洲婷婷丁香五月亚洲| 五月婷庭丁香在线| AV五月丁香| 亚洲日韩26uuu| 大香蕉院线| 9999色色色色| 99热成人在线观看| 色五月激情婷婷| 天天久综合| 天天做天天爱| 婷婷丁香九月| 五月天精品视频| www.色婷婷.com| 国产成人片| 香蕉97碰碰碰欧美| 国模狼狼| 美女91一起草| 国产精品成人AV在线| 婷婷丁香熟妇综合网| 永久的网站AAAA | 91精品无码| 天天做天天要天天爱| 五月色丁香综合| 少妇久久诱惑视频| 99热这里只有免费| 婷婷 色 丁香 夜| 九色自拍| 五月天社区| 国产免费性爱| 香蕉中文在线| 丁香婷婷六月天| 爱性综合网| 性爱电影科技贸易有限公司| 久热只有这里精品| 五月婷婷日| 99亚州综合精品成人网| 专区无日本视频高清8| 97超级啪啪在线观看| 97碰碰电影| AV在线资源| 天天草天天爱| 老司机伊人| 中文字幕视频在线播放| 五月丁香网站| 无码人妻一区二区一牛影视| 97热精品| 99亚洲综合| 一级二级香港秋霞欧美欧美秋霞| 天天精品视频免费观看| 三级黄网站| 国产熟妇乱子伦hd| 懂色av蜜臀av粉嫩av永陈冠希| 啪啪综合| 亚洲婷婷丁香五月天激情小说| 成人性爱无码| 影音先锋色婷婷| 少妇人妻偷人精品无码视频新浪| 91女人18毛片水多国产| 色婷婷久久综合久色综| 天天爽天天弄| 激情五月小说婷婷| 99综合| 免费在线观看av网站| 最新色色五月天| 五月天婷婷色播| 五月色综合| 五月丁香综合| 91一道本| 色9色| 色五月亚洲| 亚洲第一综合| 九九九午夜视频| 久1色色| 99热在线只有精品| 五月开心网| 99caobi| 丁香五月天色| 天天骑天天操| 激情网五月天| 五月天婷婷丁香花| 天天舔天天摸天天射| 激情五月天综合婷婷网| 91九色首页| 日韩淑女人妻luan伦激情精品一区二| 丁香丁香激情网| 日本色五月婷婷| 夜夜穞天天穞狠狠穞AV美女按摩| 亚洲人妻电影| 五月天色婷婷图片| 亚洲第一黄网| 1024久婷| 亚洲色色图片| 日本三久久| 九九精品9| 深爱五月月天| 色色色色热| 大战熟女丰满人妻AV| 久久久激情视频| 99热在线这里| 99国产精品久久久久久久久久久 | 二级黄色毛片| 久久久区区一久久久久久| 精品久久久人妻| 六月丁香婷婷大香蕉| 亚洲综合五月天综合| 久热婷婷| 婷婷丁香91| 久久96热| 五月丁香激情啪啪| 黄色五月婷婷| xx人人xx| 亚洲久久天堂| 婷婷久久午夜网| 五月 激情视频| 亚洲99一级无嗎特制在线| 天天色综合色| 丁香五月六月| 久久婷狠狠色| 欧美25p| 婷婷香蕉精品| 五月丁香婷婷AV天堂| 五月天激情亚洲| 六月丁香色色色| 激情五月开心五月丁香五月| 天堂成人A片永久免费网站| 99开心五月五月丁香激情| 五月丁香啪啪综合| 免费在线a| 国产26uuu视频| 丁香五月在线播放| 天天插操| 亚洲丁香五月综合| 中文字幕在线播放视频| 九九re视频在线视频| 丁香婷停五月激情综合深爱| 亚州操人在线视频| 天天肏天天肏天天肏| 开心五月婷| 9+1视频网址| 欧美在线97| 五月婷婷69| 久99久视频精品| 免费日韩99| 丁香成人五月天| 丁香五月婷婷亚洲色图| 激情小说五月欧美亚洲丁香| 极品人妻VIDEOSSS人妻| 9久视频| 婷婷色五月开心五月| 最熟少妇乱码| 五月婷六月天| 亚洲精品V天堂中文字幕| 99久久婷婷国产综合精品草原| 婷婷婷婷婷婷婷婷| 亚洲无码性爱| renre人人操国产超碰在线| 99超级碰免费视频| 日本色婷婷| 久久WW| 狠狠久久婷婷| 激情综合网五月激情| 婷婷综合性爱网| 五月亭亭六月激情| 色色国产| 五月丁香美女| 精品人妻伦一二三区久| 色五月激情网| 日韩精品999| 在线超碰91| 夜夜干 夜夜操| 国内久久婷婷| 。久久久久久久久久久久久久人妻| 久久精品99国产精品日本| 思思网站| 99这里只有精品| 五月天色色激情综合| 九九99免费视频| 青青草原亚洲天堂| 色情五月丁香| www.99久| 99色色网| 婷婷中文在线| 91九色精品女同系列| 五月停停999| 五月激情婷婷综合| 婷婷射丁香| 日本久久天堂| 九九色中文| 思思热视频| 中文字幕丰满乱孑伦无码专区| 九九热视频精品| 毛片网站谁有| 五月天激情小说| 五月丁香啪啪激情| 农村熟妇高潮精品A片| www。五月天。com| 丁香,开心成人,久久| 色婷婷激情视频| 操97在线观看| 五月激情综合美女久久| 99热精品网| 超碰在线综合| 中文字幕不卡+婷婷五月| 色吧五月婷婷| 夜夜躁狠狠| 国产精产国品一二三在观看 | 久久99网站| 天天插天天插| 五月婷婷色丁香| 久久人人添人人爽添人人片αV| 色综合天天天天做夜夜| 九热电影av| 综激情网| 五月天亚洲图片婷婷| 日日干夜夜干| 久久性爱网站| 综合激情九月婷婷,激情综合婷婷中文字| 五月激情婷婷在线| 成年人夜夜喷水| 天天干天天干天天操| 丁香六月婷婷高清| 精品9l九九九九九77777| 99热6这里只有精品| 国产精品99久久久久久久女警| 五月激情婷婷色| 午夜在线成人网站免费观看| 久久爱婷婷| 亚洲午夜视频| www.99视频| 开心五月婷婷99| 综合激情肏逼网| 大香蕉伊人久久| 狠狠干2007| 在线成人国产| 亚洲av网站在线观看| 99精品视频在线6| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 久久久久久丁香五月| 激情五月婷黄版| 五月天婷婷色| caopeng97日韩| 婷婷色一二三区波多野结衣| 亭亭色色五月天| 颜射 精品性爱av| 婷婷五月天大香蕉| 色五月av| 五月婷婷网站| 日本久久婷婷| 亚洲日韩一页精品发布| 丁香五月婷婷视频| 99热情这里只有精品在线播放| 碰碰人人人| 精品人妻在线| 国产欧美婷婷五月| 五月丁香A∨在线| 五月丁香啪啪啪| 五月天成人在线播放丁香| 91成人看片| 无码免费人妻A片AAA毛片西瓜| 夜夜干 夜夜操| 欧美群妇大交乱婬网| 精品九九久久| 91久久婷婷| 成人精品99| 三级黄网站| 六月丁香婷婷爱| 97色色综合| 五月天色婷婷伊人网| 色情综合网| 1024在线视频| 99天堂网| 噜啊噜在线| 久久五月丁香激情综合| 色色五月婷婷久久| 伊人丁香五月天丁香在线婷| 激情伊人| 狠色色狠网| 桃色Av色哟哟| 99热 在线播放| 五月花婷婷| 国产97色在线| WWW.99热| 天天狠狠婷婷在线| 操操操91| 少妇真实被内射视频三四区| 婷婷欧美综合| 曰日爽日日操| 一本久久亚洲五月婷婷| 国产精典视频在线观看|