免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
99热日本| 人人妻人人澡| 超碰在线91| 国产婷婷色综合AV蜜臀AV | 另类五月激情| 丁香色五月婷婷91桃色| 久久亚洲色导航| 五月天婷婷色色首页| 五月激情视频| 97超碰在线免费观看| 五月天激情播播网| 中文字幕在线日亚州9| 日韩丰满少妇无码内射| 91啪啪视频| rr天天操| 激情开心五月天婷婷基地丁香社区| 中文人妻AV久久人妻18| 成人精品在线观看| 激情av| 色性五月天| 爱久综合| 女性自慰系列第五页| 丁香五月婷婷少妇| 亚洲国产另类av| 伊人99热| 五月天色色无码| 丁香五月Av| 九九视频在线观看| 久久丁香综合| 亚洲成人av在线| 5月婷婷五月天| 97涩涩丁香五月天| 婷婷五月婷婷五月| 五月久久丁香| 色五月婷婷丁香五月| 天天 青草 丝袜制服 在线| 欧美成人Va| 夜夜久久综合网| a性生活久久无| 婷婷五月花| 五月丁香六月激情在线| 99久久九九视频| 激情五月婷婷| 久久这里只有精品视频15| 99噜噜噜在线播放| 99视频在线看| 成人电影AV在线观看| 91人人爽人人操| 日逼影音先锋男人资源站| 69精品人人人人| 亚洲综合婷婷| 色色五月婷婷网| 性爱久久| 青青草Avb在线| av一区免费看| 色色色色综合网| WWW.99热| 狠狠色激情综合| 婷婷成人五月天一区| 大功率国产在线| 乱女乱妇熟女熟妇综合网站| 五月丁香六月婷婷手机无线| 色99自拍| 成人超碰网| 日本精品人妻无码77777| 亚洲婷婷五月天| 午夜天堂一区人妻| 五月丁香毛片| 激情伊人五月天| 色欲日日躁| 99啪在线视频| 色玖玖爱| 精品少妇蜜臀91| 婷婷五月天香蕉| 思思热这里只有精品| 亚洲五月天激情| 五月天播播中文字幕| 色色亚洲| AV在线不卡播放| www天堂99| 91操在线| 激情网第四色| 综合色五月天| 久久婷婷艹| 日本三级毛片| 翔田千里无码| 日本99久久| 大香蕉啪啪网| 综合99久久天天综合| 五月激情丁香五月| 成人va在线播放| 色色色成人网| 欧美久人人| 婷婷久久五月天丁香| 九九亚洲视频| 亚洲色优| 天天肏视奸| 丁香五月婷婷偷拍| 亚洲色综久久五月| 九九热免费视频| 91人无码久久久久久| 婷婷激情性爱| 激情綜合W W W,激情五月天| 久久丁香| 丁香五月影院| 日韩成人电影在线播放| 就去色色五月丁香婷婷久久久| 五月综合视频| 五月丁香六月香香蕉| 五月婷婷激情四月| 大香焦A∨| 欧美噜噜噜草| 99色综合网| 色日本颜射| www.91操| 成功精品影院| 9久操| 久久久久久久综合狠狠综合| 99热亚洲精品| 天天综合色丁香| 激情综合网,婷婷五月天| 色5月婷婷色| 婷婷五月天 丁香五月天 裸体| 香蕉99网| 丁香五月天BBw| 九九热在线观看视频| 在线超碰精品| 成人丁香五月天| 大地9中文在线观看免费高清| 精品五月花| 26uuu美女三级视频| 婷婷五月丁香伊人| cao视频,现在观看| 很很干夜夜干| 久久婷婷激情久久| 噜噜噜久久| 97成人操| 天天夜夜爽| 99人妻碰碰久久久禁片| 我要射综合| 成人精品一区日本无码网| 91要啪| 五月的色婷婷高潮| 综合视频久久| 五月天色丁香| 婷婷五月天视频小说| 99色视频| Www.婷婷五月| 視频福利乱色| 色色五月丁香婷婷| 蜘蛛女免费观看完整版高清电影| 啪色综合| 亚洲中文字幕网| 成人网址在线观看| 丁香五月亭亭六月综合激情网| 天天操婷婷| 色婷婷av综合网| 婷婷五月天成人基地| 老师的粉嫩小又紧水又多A片视频| 丁香五月人妻| 97色色婷婷| 五月天婷亚洲天综合网综合| 一区二区三区四日本| 婷婷成人丁香色情基地30| 最近中文字幕2019视频1| 涩涩涩婷婷| 五月天婷a在线| 亚洲激情丁香五月基地| 五月婷婷综合性爱噜噜| 色综合婷婷| 九九家庭影院| 大香蕉久久久久久久久| 婷婷99狠狠躁天天躁| 2050人人操免费工开爱| 99热人人操人人操| 中文字幕在线日亚洲9| 另类视频在线| 亚洲黄网在线| AV电影在线播放| 另类激情五月天。| 新激情五月天色播| 亚洲色图五月丁香| 婷婷五月在线影院| 99操视频| 狠色色狠网| 久9无码视频| 久久久97| 五月天桃色深爱网| 激情婷婷五六月天| 91精品综合久久婷婷九色| XX色综合| 九九無妻| 一二三区视频韩国| 一级性感黄色内射视频| 五月婷婷香蕉视频| 五月丁香激情综合| 影音先锋偷偷色男人站| 另类图片 五月激情| 色约约视频一区二区三区四区五区 | 99热这里有精品| 婷婷五月天第四色| 免费黄色视频网址| 精品亚洲日韩99欧美片| 五月美女婷婷风骚| 欧美色色色色色| 亚洲人人操BD| 久色视频首页| 99色综合| 婷婷的久久网站| 日本一級黃色一級片| 影音先锋91资源站| 亚洲成人va| 亚洲乱码在线观看| 26uuu亚洲精品国产| www.9797国产| 狠狠色综合无线观看| 大香蕉久久| 99re最新地址| 五月综合精品| 亚洲一区先锋影音| 99 色色吧| 99人人操人人操人人精| 久久一级免费黄色片| 人人草人人爱| 五月大香蕉| 激情丁香五月天图片| 五月丁香久久综合| 天天情天天狠天天透| 91精品丝袜久久久久久久久粉嫩| 色五月婷婷丁香五月| 99热99干| 久色五月| 亚洲色婷婷视频| 色国产五月| 丁香六月激情综合| 婷婷色中文字幕| 亚洲AV电影美洲AV电影| 99伊人婷婷在线| 日韩丁香涩| 99亚洲天堂| 人人操日| 日日噜噜夜夜狠狠久久丁香五月| 五月丁香婷爱在线| 婷婷综合五月天亚洲综合| 婷婷五月激情六月丁香| 五月婷婷综合色啪| 99色视频| 青青青在线视频国产| 99热国产精品| 五月天激情视频| 天堂久久婷婷| 思思精品视频| 青草青草视频2免费观看| 国产成人av在线| www.五月丁香| 狠狠综合久久| 俺也去色| 九九99偷拍视频| 欧美综合激情| 五月天AV大香蕉| 久热伊人在91| 9色在线视频| 丁香五月AV| 99久久新视频| 激情深爱综合| 99热只有这里才是精品| 丁香色婷婷| 婷婷 色 丁香 夜| 日韩黄色电影| 男女啪啪做爰高潮无遮挡| 99热在线观看| 成人片在线免费看| 永久无码色| 人妻射精AV| 激情啪啪五月天| 美女五月激情| 噜噜色噜噜网| 色婷婷丁香五月天| 91精品刘玥| 中文字幕成人日韩| 欧美色图45678| 五月丁香综合久久| 第五色婷婷| 五月天婷婷色色网| 专区无日本视频高清8| 嫩草AV久久伊人妇女超级A| 国产精品天天狠天天看| 九九综舍久久| xx色综合| 九热免费视频| 日韩黄在免| www.色色com| 综合色影| 玖久精品视频9| 天天久| 亚洲区视频| 99精品偷自拍| 婷婷爱爱蜜臀天天操| 九九九九毛片| 丁香五月婷久久| 99视频久久| 国产偷人爽久久久久久老妇APP| 天天日天天爽| 日韩AV中文字幕在线| 天天射综合网站| 天天干夜夜b| 亚洲婷婷五月天| 激情五月天色播| 人妻在线观看视频| 第二色AⅤ| 天天狠狠六月婷丁香影院| 欧美日韩99| 五月久久丁香| 亚洲色色图片| 色五月天婷婷| 天天色丁香| 操逼123网| 9色视频在线| 婷婷干| 日韩色色网| 婷婷爱五月天| 九一九九黄色| 九九精品在线网| 99啪啪视频| 成人在线视频一区| 激情五月少妇| 免费看欧美成人A片无码| 婷婷六月啪啪| 五月丁香无码| www.色综合.com| 五月激情婷婷女| 婷婷五月天色色| 97干欧美| 婷婷精品免费久久| 玖玖色综合网| 天天噜日日噜综合无码| 伊人玖玖精品| 综合久久久| 丁香婷婷久久五月天| 日本女va| 色综合久久888| www.精品99| 五月天综合久久| 操日本99| 999热在线视频| 情欲禁地| 精品成人无码A片观看香草视频 | 91精产一区三区免费观看| 五月丁香六月婷婷a v| 丁香婷婷网| 激情綜合網址| 六月色播| 大香蕉伊人久久| 久久五月网| 天天综合色丁香| 五月婷婷激情视频| 婷婷丁香五月色偷偷| 五月婷激情| 伊人超碰在线| 丁香六月婷婷色播| 久热超碰| 99精品偷自拍| 四月婷婷丁香| 国产免费av在线| 色婷婷五月中文字幕在线dvd| 99色免费观看全部| 欧美黑人巨大猛烈cuckold| 性做久久久久久久免费看| henhencao国产在线| 久久久久人妻| 武汉美女啪啪视频免费一级片 | 少妇激情五月天| 九九综合色| 久热免费| 人人人va亚洲视频在线| 热五月婷婷| 久久亚洲激情五码| 五月天玖玖狠狠色色| 九色在线五月婷婷网址| 激情五月丁香亭亭 | 亚洲日日日| 99婷婷| 女人天堂AV| 天堂婷婷五月色| 天天射天天插天天干| 久色五月| 丁香五月影院| 久久综合五月情| 综合成人小说婷婷| 色99视| 婷婷视频在线碰| 久热免费| 亚洲精品乱码久久久久久综合| 亚洲美女高潮久久久久久69| 婷婷九月激情网| 1024在线观看免费视频| 天天艹夜夜艹| 激情綜合W W W,激情五月天| 激情五月天在线观看色婷婷| se.久久视频在线观看| 激情四射网| 青青草搞屄视频网站| BlACKEDRAW视频一区二区| 亚洲精品99| 五月婷婷开心亚洲无| 五月综合激情啪啪啪啪啪| 99无码视频| 久久er这里只有精品| 最新高清无码专区| 色综合大香蕉| 深爱激情69热| 婷婷激情五月天天天开心| 久久久久久久91| 99精品自拍| 狠狠搞亚洲| 亚洲激情综合| 日本久草福利| 9999热免费视频视频| 亚洲成人网站在线观看| 五月天综合视频| 蜜臀A∨在线水帘洞| 丁香色情五月综合激情| 夜精品无码A片一区二区蜜桃| 五月丁香六月激情网| 日本操片| 最新婷婷五月丁香| 无码99| 亚洲五月天另类小说图片| 亚洲婷婷月丁香五月| 九热视频精品| 五月深情久久| 任你搞免费视频观看| 日本五月婷婷| 色婷婷影视| 婷婷五月天天爽| 5月丁香六月婷婷| 五月情丁香色| 丁香六月婷婷缴情欧美| 天天干天天色综合| 奇米色大香蕉| 日韩性爱AV| 超碰在线观看99| 色五月天在线观看| 五月丁香在线看| 人妻videos人妻高清| 婷婷精品免费久久| 久久免费丁香| 性爱激情小说AV五月丁香花| 婷婷九九色| 超碰97在线操| .青娱乐天天操B| 五月天精品| 亚洲精品99| 伊人久久99| 五月婷婷色播| 五月久久婷婷| AVDV久久| 国产精品久久久久久久久久久久| 婷婷五月天成人综合网| 五月网网站| 五月婷婷深爱六月| 婷婷丁香五月天中文字幕| 婷婷六月丁香色| 同性gv国产精品一区二区| 最新日本A片| 亚洲性受XXXX五月丁香| 亚洲国产精品成人免费一区久久久在线观看AAAA | 欧美激情伊人| 久热99热| 亚洲国产成人在线| 视频这里只有精品| 色五月天天| 毛片新网地| 五月天深爱激情网| 五月在线| 中文av网站| 五月天偷拍| 亚洲无码色| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 日本狠狠爽| 人人爱天天摸摸天天爱| 手机AVAV天堂看网| 五月色天情| 婷婷五月天色播| 日本啪啪网| 九九Av| 综合五月天| 丰滿爆乳一区二区三区| 99视频网址| 99久久婷婷| 五月婷高清视频| 五月丁香六月香综合激情| 五月色婷婷综合| 亚洲欧洲国产精品| 小香蕉av| 26UUU欧美激情一区二区| 五月丁香综合啪啪啪啪啪| 婷婷激情六月综合| 免费观看2018www黄色操逼网站| 香蕉久久国产AV一区二区| 日韩乱轮AV| 久久久jd| 亚洲色综合性| 日狠狠| 全部老头和老太XXXXX| 91女人18毛片水多国产| 午夜激情婷婷| 这里只精品热在线18| 91久久电影| 日日夜夜干| 婷婷五月综合色中文字幕| www.色综合| 激情婷婷五月天在线观看| 国产毛片精品一区二区色欲黄A片| 日韩在线aaa| 日本五月婷婷| 六月婷婷网| 亚洲婷婷丁香五月天激情小说| 日日想日日夜日日操| 激情都市丁香婷婷| 精品影院| 国产67194| 日日操,夜夜爽| 91狠狠综合久久久| 久久丁香九| 开心婷婷五月天电影院| 乱码操操| 天堂综合久| 甈你aaaaa| 狠狠丁香| 色www.con| 天天射天天射一道本日本社区 | 丁香五月婷婷AV在线| 99热精品在线观看| 99自拍视频网站| 激情开心五月亚洲| 天天干天天爽| 噜综合| 五月丁香久久网| 超碰无码老师| 日本欧美国产| 91无码色色| 激情六月丁香综合| 99视频在线| 色激情五月| 色五月女| 97碰操| 丁香五月在线视频黑人| 乱岳熟女50岁| 欧美色播综合在线观看| 日本天天操| 午夜成人AV在线| 噜噜噜久久| 美女xx不卡| 夜夜撸日日骑| 五月天天综合网色婷婷| 69色色视频| 激情图片亚洲| 99日韩网站| 2050人人操免费工开爱 | 婷婷久久色| 天堂婷婷综合| 丁香六月无码| 伊人超碰在线| 久久六月天| 亚洲啪啪自拍| 97五月天| 9|无码久久久久久| 九九色中文| 激情视频网址| 華人性愛AV在線| 婷婷五月激情五月激情| 婷婷久月| 人人操av| 玖玖资源天天无码| 色原狠狠综合| 色综合久久99色| 综激情网| 天天做天天爽| 色丁香婷婷美女视频网站| 日本一級黃色一級片| 激情五月色综合国产精品| 亚洲网在线观看| 九九久热| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 色婷婷五月综合在线| 国产精品人成A片一区二区| 五丁香激情综合| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 久久91久久91色欲精品| 五月丁香婷婷综合| 亚洲色色在线| 久久婷五月影院| 少妇人妻人伦A片| 黄网网站在线播放| WWW.久久.COM| 免费看欧美成人A片无码| 91久久综合| 伊人在线视频| 狠狠狠夜夜夜| 五月丁香亚洲校园欧美| 婷婷香草网| 亚洲激情另类| 美妞av| 精品热九九| 超碰a女人的天堂| 九九热这里有精品视频| 激情五月天.色网| 99精品一二三四视频| 五月香蕉综合| 草草影院爱爱| 国产露脸150部国语对白| 色五月婷婷五月| 亚洲人成网亚洲欧洲无码久久| 91热在线| 激情五月,激情综合网| 97碰在线| 丁香五夜激情四射夜夜夜| 色播五月婷婷| 丁香婷婷影院| 九九视频精品视频精品| 九九亚洲综合| 精品综合网在线| 91综合在线| 99爱视频在线播放| 日本乱子人伦在线视频| 天天干,天天日| 天天上天天爽| www.五月天婷婷| 久久AV无码精品人妻系列试探| 欧美性爱特黄一级aaaassss| 国产精品社区| 久久五月情| 免费无码毛片一区二区A片| 婷婷五月天成人网| 99热99这里免费的精品| 小视频aaa久久久| 人妻视频在线| 色婷婷性爱| 色五月婷婷7777| 亚洲色另类| 五月天婷婷乱论小说| 日日鲁鲁夜夜爽爽| 99色6爱9热| 久久 婷婷 五月天| 97干婷婷| 婷婷五月激情五月丁香五月| 伊人99久久| 免费观看的av| 天天色粽合合合合合合合| WWW.桔色成人.COM| 综合久久99| 婷婷久久亚洲| 亚洲国产色色| 丁香五月天啪啪激情综和网| 森林影视大全,最好看的2019年视频 | 久久玖玖综合| 五月天婷婷影院| 亚亚州久久高潮| 天天干天天色天天干| 丁香五月婷婷五月天在线| 久久网日本| 99玖玖在线视频| 99久操| 丁香五月www| 亚洲啪啪精品| 婷婷欧美激情| 91久久色| 成人短视频在线| 91vip在线观看| 激情六月婷婷| 五月婷婷另类| 五月天激情综合网站| 97天堂| 五月天无码| 五月丁香婷婷网网网网| 久鲁鲁色网| 色色影院aaaav| 色综合色欲综合天天免费| 五月天自拍网| 热思思| 亚洲激情另类| 人人爱操| 少妇性按摩无码中文A片| 色色色网站| 狠狠精品干练久久久无码中文字幕| 日本在线视频播放91| 99操免费视频| 丁香色婷婷五月天| 精品无码久久久久久久久| 欧美叉叉叉BBB网站| 色呦精品| 婷婷久久影院| 99免费视频久久| 亚洲九九九九| 99在线免费视频| 色色丁香| 99干日日干| 婷婷色基地在线看| 激情色播| 开心五月天激情| 天天舔天天摸| 日日夜夜狠狠| 五月丁香综合久久夜夜| 91超碰在线观看| 亚洲激情久久| 秋霞av吧| 欧洲亚洲免费视频9 | 激情床戏| 国产成人精品一区二区三区视频| 九九亚洲| 五月丁香九九| 99re这里只有精品国产99| 人人人人人人人草| 伊人99热| 99热99日天天干| 黄色AV日韩| 五月天激情日色在线| 天天人人人人人人人人人人人| 舔色婷婷| 被强行糟蹋的女人A片| 久久青草国| 99色色热| 久热免费| 成人午夜视频精品一区| 最新AV在线观看| 99热欧| 久久久人妻| 色欧美一级| 99ri在线观看视频| 青青草激情网| 国产SUV精品一区二区6| 99热青青草| 婷婷五月天成人网站| 五月天啪啪啪| 日本99色| 色五婷婷| 欧美色一级色| site:901-07.com| 丁XX 成人| 9视频在线成人网站| www色色com| 色播播五月| av婷婷六月丁香社区在线观看| 五月亭大香蕉| www.色擼擼.com| 玖玖精品视频| 成人中文字幕在线| 天天久综合| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品| 狠狠爱婷婷爱| 五月天激情视频| 99色人| 色999五月色| 激情五月天婷婷五月天| 丁香五月手机在线| 高清无码网址| 超碰97色| 99久久极情精品一区| 人碰人人人玩91| 天天天天天操| 粉嫩AV久久一区二区三区| 99欧美| 久久久久久久97| 五月天狠狠色| 日本色色网站| 婷婷五月天激情电影| 五月婷婷亚洲色视频| 91久久人人操| 九九热视频精品| 久草免费福利视频| www.成人婷婷综合| 狠狠色狠狠色综合日日91| 亚洲久热无码| 婷婷丁香综合色AV| 狠狠做婷婷| 色五月中文字幕| 婷婷丁香五月天激情| 久草网大香视频| 婷婷激情图片| 黄色成人网站在线播放| 婷婷五月丁香久久| 色5月婷婷| 婷婷五月色播| 综合色五月天| 性爱111111| 激情五月小说婷婷| 六月婷基地| 大香蕉网站,大香蕉综合| 丁香色色色| av在线资源| 狠狠色丁香99| 亚洲啪| 色色a| 亚洲另类婷婷综合| 五月天激情小说| 中文无码精品一区二区三区| 久久视9精| 天天做天天爱| 噜噜噜噜婷婷五月天| 丁香五月激情综合| 欧美精品熟女一区二区| 六月丁香狠狠爱| 午夜色婷婷| 深爱激情九九五月天| 岛囯综合激情网| 综合99视频| 丁香五月婷婷婷婷欧美综合| 久久激丁香| 九九热这里| 99热超碰在线| 久久久久久久久久久久久久久久一道本| 91操色| 色欲色欲久久宗合网| 人人操五月天| 久久中文人妻系列| 婷婷五月综合中文字幕| 99热99极品观看| 亚洲 25P| 午夜成人在线免费视频| 亚洲精品色| 成人超碰Av| 97操操| 色啪久| 久久九区| 97色色色视频| 第四色激情网| 免费在线观看av网站| 激情综合网五月丁香| 狠狠肏综合网| a色婷婷| 北京熟妇搡BBBB搡BBBB| 丁香五月成人婷婷| 日日天天操| 九九人人自拍| 五月丁小婷婷激情四射| 国产激情综合| 五月婷婷六月丁香色| 日日夜夜狠狠婷婷色| 日韩啪啪自拍| 99综合网| 日本一道久久| 五月久久婷婷成人网| 噜噜噜噜噜日本视频| 二级黄色毛片| www.99精品日操伊人乱碰在线| 色五月天成人| 亚洲色婷婷激情| 色婷婷大香蕉| 97操| 亚洲超碰中文字幕| 国产成人片| 成人AV在线网站| 色五月人妻| 这里只有精品视频一区| 色色色精品无码区| 久久视频婷婷视频| 色婷六月| 91AV视频| 99ri精品在线观看| 国产精品扒开腿做爽爽爽A片唱戏| 色欲久久久久| 婷婷五月天影视| 五月天婷婷日日爱| 色999五月色| 天天综合色丁香| 成人VAV视频在线观看| 五月婷婷香蕉| 日韩一本操| 国产精品国产成人国产三级| 在线日韩视频| 色一情一乱一乱一区91| 丁香五月婷婷大香蕉| 五月婷婷色激情| 色婷婷在线视频综合| 激情六月五月婷婷综合网| 天天综合情| 婷婷99狠狠| 精品人人操| 久久总和99| 九九 激情 网| 久久丝袜婷婷| 色婷婷久久综合久色综| 九月婷婷色色| 一级性感黄色内射视频| 久久人人九九| 亚洲综合色色| 色5月婷婷| 色婷婷XXXXX| 99思思在线视频| 五月天丁香啪啪综合| 欧美欧盟性爱网| 天天爽天天爽天天爽天天爽天天爽| 91啪啪啪啪| 99狠狠操一| 大香蕉人在线65| 曰曰久久| 婷婷国产综合| 99热成人精品| 久香草视频在线观看| 五月婷六月丁香| 人人人操97| 色五月婷婷影院| 婷婷娌伦网| 婷婷五月花| 色99在线| 不卡在线中文字幕无| 国产精女同一区二区三区久| 大香蕉伊然在亚洲90| 欧美丁香五月| 欧美婷婷六月丁香综合色| 激情深爱婷婷网| 五月婷婷精品视频| 丁香五月天激情视频| 激情六月丁香| 99精品在线| 天天激情站| 久久婷婷六月综合综合| 九热久| 人人澡天天色天天做| 日日想日日夜日日操| 99亚洲无码| 五月婷婷狠狠干| 97精品人人A片免费看| 婷婷久久爱| 午夜激情婷婷| 伊人六月无码视频| 丁香五月激情婷婷婷婷在线观看| 天天操天天爱天天玩| 99热这里只有精品55| 亚洲综合五月天婷婷| WwW色婷婷| 99操免费视频| 一个色的综合| 五月婷婷在线视频观看| 色婷婷综合网| 午夜AV网| 五月大香蕉| 久久综合天天综合| 超碰成人免费| 色婷婷精品视频在线播放| 大香蕉婷婷五月| 狠狠999| 五月激情综合网| 婷婷五月天av| 久久最新色| 激情二色月| 亚洲成人av在线| 成人五月丁香花| 在线色色| 九九热视频精品| 色婷婷基地| www.久久爱.c n| 狠狠干五月丁香| 97碰| 色色色色色色色五月| 色九月| 激情图片五月天| 一本大道熟女人妻中文字幕在线| 日本在线播放97| 99色婷婷视频| 第四色婷婷丁香五月| 丁香激情五月| 亚洲另类婷婷综合| 深爱激情丁香五月| 久久精品国产一区二区三区四区| 99久久国产综合精品五月天喷水\| 久久婷婷桃花五月天| 婷婷六月丁香开心深深爱| 另类小说五月天| 日本三级日本黄色| 人人添人人| 丁香五月婷婷五月| 亚洲乱码在线观看| 激情五月色播五月| Blackedraw视频一区二区| 婷婷激情五月| 激情99热| 亚洲AV免费国产电影| 五月四色婷婷| 99re6在线视频精品免费| 99热最新| 久超超碰| 亚洲另类av| 五月激情小说网| 26uuu色五月| 五月天激情AAAA| 香蕉久久国产AV一区二区| 婷婷五月综合激情| 97av在线视频| 婷婷成人综合| 久久大香蕉同僚| 91日韩美女被插视频| 五月婷婷综合在线视频小说| 婷婷五月丁香基| 五月天激情婷婷五月天久久| 五月天开心网| tingtingjiqingwuyue| 欧美25p| 久久9精品| 九九色图| 久热伊人| 另类天堂| 五月丁香婷婷无码中文| 91久久久久久久久18| www.婷婷五月天,com| 五月婷婷六月丁香在线| 91日韩在线| 久久人人妻| 综合亚洲五月天| 五月婷婷色| www.夜夜夜| 99热网精品| 婷婷五月天激情影片| 九九热精品在线| 五月婷婷天堂| 五月丁香综合激情| 99色在线视频| 大香蕉婷婷丁香天堂AV| 欧美六月| www久久99| 天干干夜夜操| 国产内射婷婷| 亚洲成人五月天| 婷婷五月天精品| 丁香六月啪啪啪| 思思热闹这里只有精品| 欧美交换配乱吟粗大25P| a v色婷婷| A短视频免费在线观看| www夜夜操comwww| 国内久久久精品99| 99热99色| 国产综合激情五月久久| 中文AⅤ大全| 久久五月天网| 天天人人综合| 色五月丁香com| 五月丁香六月婷婷啪啪| www激情| 亚洲视频一区| 色五月婷婷久久| 中文字幕AV网址| 91丨九色丨国产打屁股| 天天干天天操天天爱| 一二区成人电影| 亚洲va综合va国产va中文| 色五月激情基地| 日本乱论99| 狠狠色婷婷7777久| 激情五月视频在线婷婷| 色欲丁香| 国产婷婷婷| 夜夜爱伊人| 日日鲁鲁夜夜爽爽| 大香蕉人在线65| 亚洲综合成人网| 91精品综合久久久久久五月丁香| 9色91视频| 欧美色频| 五月天自拍网| 大香蕉久久婷婷| 丁香五月综合| 色综合色色色| 99这里只有免费的精品| 日韩精品一区二区刘| 色婷婷电影网| 四色99久久| WWW,激情五月天,COM| 五月婷婷 自拍| 99久视频| 婷婷五月天成人网| 六月丁香婷婷网| 91成人视频| 亚洲人成网站999综合| 六月婷婷色综合| 人妻啪啪啪| 婷婷 亚洲图片 丁香| av在线激情| 五月婷婷欧洲| 六月丁香啪啪| 9久国产精品| 欧美激情-区二区三区| aaaaa不卡| 亚洲黄3级片网站欧美| 婷婷综合中文| 色情五月丁香| 激情AV在线| 99热中文字幕久久| a69在线视频| 久久久WWW| 99久久五月丁香野外| 综合狠久久| a在线观看| 九九aV| 色综合天天| 岛国AV网| 色播丁香婷婷五月激情| wwW天天干| 99久久久久| 六月婷久久| 一婬一伦一区二区三区| 99九九这里有免费视频| 激情六月天| www.夜夜操| a网站免费观看| 五月丁香婷婷婷激情爱爱| 手机免费福利视频| 五月天婷婷乱| 99re这里只有精品视频6| 九九99久久| 热久久91| 久99视频在线观看| 婷婷五月天亚洲综合| 天堂久久大香蕉| 丁香八月综合激情| 五月天婷婷狂暴白浆| 午夜69成人做爰视频| 色噜噜狠狠色综合日日| 婷婷丁香五月综合| 99色视频在线| 久草热在线视频| 无码色色色| www.色99| 五月丁香| 大陆极品少妇内射AAAAAA| 99色视频| 丁香五月av| 亚洲爆乳无码精品AAA片蜜桃| 香焦网五月天| 热久久这里只有精品| 人人草人人看| 夜色综合网| 伊人久久婷| 日韩啪啪视频| 99精品在线| 五月丁香综合| 嫩草AV久久伊人妇女超级A| 免费无码毛片一区二区A片| 免费观看全黄做爰的视频 | 亚洲激情久久| 五月丁香久| 大香蕉520| 日韩视频99| 99激情视频| 成人综合视频网址| 九色综合五月天婷五月| 大香蕉啪啪啪啪啪啪| 五月天停停日日| 五月天久久综合| 伊人久久婷婷| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 国产毛片操B| 丁香五月婷婷影视先锋| a片在线免费观看一区| 99九九热视频免费| 手机在线日韩视频中文字幕| 天天色播| 99高级会所久久| 亚洲综合在线丁香五月| 这里只有精品在线观看视频| 熟女网站久久| 欧美日韩91| 日韩精品呦呦va| 偷拍91九色| 婷婷,五月天,丁香,第一| 五月丁香色狠狠干大屄| 九九热这里| 婷婷五月综合激情| 五月开心播播网| 国产AV不卡福利| 天天草人人摸| 婷婷激情啪啪| 亚洲乱码w在线观看| 天天干天天拍| 九月婷婷人人操人人舔人人爱| 五月停性愛| 久大香蕉| 亚洲激情五月婷婷日日| 亚洲视色| 色色热| 亚洲欧美成人在线观看| 久综合色| 色婷五月天网站| 91超级碰在线| 99ER热精品视频| 激情视频综合| 色播五月丁香婷婷| 日韩黄色电影| 色五月激情五月| 99热性色| 五月激情久久综合| WWW.婷婷五月天.COM| 色色色色欧美| 色五月天堂| 婷婷五月综合视频| 激情综合色网| 97超级碰碰碰久久久| 好好干Av| 五月天婷婷小说| 99干日日干| 超碰人人操人人干| 婷婷日日夜夜| 色婷婷激情| 成人 视频免费观看网站| 五月精品免费XXX| 五月天婷婷久久视频| 久久99久久久| 美女激情婷婷| 色播五月丁香| 亚洲第一av| 五月丁香久久呀| 婷婷五月色| 99在线公开视频| 色色网五月激情| 熟女少妇内射日韩亚洲| 久久激情综合| 婷婷五月在线观看| 亚洲成人丁香花| 色婷婷在线视频久| 天天肏夜夜肏| 伊人玖玖婷婷| 婷婷精品性性性性性性性| 99久热| 色色五月婷| 激情爱爱网站超大免费| 婷婷五月天福利| 五月丁香花开综合网| 丁香婷婷激情| 婷婷射丁香| 五月激情小说| 色婷婷精品视频在线播放| 亚洲色五月天是什么| 色综合色色| 原琪琪色影院| 五月天婷婷AV| 久久香蕉婷婷| 无码任你操| 大香蕉伊然在亚洲90| SS丁香五月婷婷| 婷婷综合性爱网| 岛国资源网| 精品无码久久久久久久久| 玖玖伦理电影| 亚洲婷婷五月天| 五月开心婷婷极品激情| 五月婷网| 超碰九九热| 色五月综合在线| 女同激情久久av久久| 久久3p| 91疯狂操操操操| 婷婷丁香六月| 91凹凸在线| 婷婷人人操| av在线免费播放| 丁香婷婷五月综合色情| 粉嫩av蜜桃av蜜臀av| 九九色影院| 五月丁香六月婷| www.婷婷.com| 99热大全在线观看| 久热9| 色婷婷色久综| 色图亚洲91| 99精品亚洲|