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

ARTICLE DETAIL

資訊詳情

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

全文檢索與高頻更新沖突?三種架構(gòu)方案與選型指南

全文檢索與高頻更新沖突?三種架構(gòu)方案與選型指南 1. 先搞清矛盾根源全文檢索和高頻更新為什么天然打架幾年前我接手過一個電商后臺的搜索模塊業(yè)務(wù)方提了一個看似普通的需求商品標(biāo)題、賣點、品類路徑要做全文檢索同時價格、庫存、狀態(tài)這類字段每天會被訂單系統(tǒng)和庫存系統(tǒng)高頻更新高峰期每秒上百次修改大促時還會翻幾倍。當(dāng)時團隊的第一反應(yīng)是直接上 Elasticsearch 不就行了結(jié)果上線后第一周就出現(xiàn)了搜索延遲飆到 2 秒、CPU 頻繁打滿、段合并把寫入毛刺放大到無法接受的問題。那次經(jīng)歷讓我徹底明白一件事全文檢索和高頻更新放在一起不是加一臺機器能解決的存儲架構(gòu)必須從一開始就認真選型。先理解為什么這兩件事天然沖突。全文檢索依賴倒排索引而倒排索引為了追求查詢效率通常設(shè)計成不可變的。以 LuceneElasticsearch 的底層引擎為例一次文檔更新本質(zhì)上不是改掉那行數(shù)據(jù)而是把舊文檔標(biāo)記為 deleted再寫入一個全新文檔。這個標(biāo)記刪除 新寫入的動作落在磁盤上就是不斷產(chǎn)生新的小 segment 文件。后臺的 segment merge 線程會持續(xù)把這些小文件合并成大文件合并過程中又涉及 IO 和 CPU 的大量消耗。高頻更新對這套機制的沖擊是全方位的。你寫入越快refresh 產(chǎn)生的 segment 越多segment 越多查詢時需讀取的文件越多耗時自然上升merge 越頻繁CPU 和磁盤 IO 越緊張又反過來拖慢寫入。結(jié)果就是寫得更快查得更慢兩頭堵。更隱蔽的是被標(biāo)記刪除的文檔并不會立刻釋放空間如果你的更新頻率遠大于新增頻率索引文件會越來越大磁盤占用虛高最后連緩存命中率都跟著下降。所以看到全文檢索 高頻更新這個組合第一反應(yīng)不應(yīng)該是選某個具體數(shù)據(jù)庫而是先搞清楚你真正的更新負載是什么樣的。這決定了后面所有技術(shù)選型的方向。我這篇文章會把常見的幾種架構(gòu)方案拆開來講包括單集群調(diào)優(yōu)、主存儲與檢索層分離、更新緩沖層設(shè)計以及它們各自適用的場景和實測表現(xiàn)希望對正在做技術(shù)選型的人有實際幫助。我理解很多人看到全文檢索就直接想到 Elasticsearch但 ES 默認配置是為讀多寫少、數(shù)據(jù)基本不變設(shè)計的。它的refresh_interval默認是 1 秒意味著每秒都可能把內(nèi)存中的索引緩沖刷成一個可查詢的 segment。這對索引構(gòu)建類的場景沒問題但如果是高頻更新每隔幾秒就有一大批文檔需要更新默認配置會制造大量碎片化 segment。避免這個問題的第一步是把索引刷新周期拉開同時理解這背后可見性與寫入成本的博弈。2. 選型前必答的四個問題實時性、一致性、數(shù)據(jù)規(guī)模、運維邊界架構(gòu)選型最忌諱一上來就討論用 MySQL 還是 ES、用 CDC 還是雙寫。我在做方案評審的時候習(xí)慣先讓團隊把下面四個問題用一句話回答清楚。這四個答案基本能鎖定 80% 的選型空間。第一個問題業(yè)務(wù)允許搜索結(jié)果的延遲是秒級還是毫秒級全文檢索的近實時特性決定了它天然有延遲。Elasticsearch 默認 1 秒 refresh意味著你寫入一條數(shù)據(jù)后最多 1 秒才能被搜到。如果業(yè)務(wù)要求用戶剛修改的商品標(biāo)題必須立刻能搜到那 ES 單寫方案基本出局除非你能接受更復(fù)雜的實時性補償。反過來如果延遲 3 到 5 秒完全沒問題大多數(shù) B 端運營后臺、商品管理后臺都屬于這一類那 ES 的近實時機制反而能給你省下大量架構(gòu)成本。第二個問題更新后數(shù)據(jù)的一致性是強一致還是最終一致業(yè)務(wù)方嘴上說要一致但你要追問一句如果用戶搜到的商品價格是 3 秒前的會造成資損嗎會造成嚴重客訴嗎如果不會那就是典型的最終一致場景完全可以用異步鏈路。真正需要強一致的高頻更新場景比如秒殺庫存、銀行賬戶余額這些字段本來就不應(yīng)該放進全文檢索系統(tǒng)——它們應(yīng)該留在業(yè)務(wù)主庫或者放到 Redis 這類高性能存儲里檢索層只保存可搜索但不強一致的副本字段。第三個問題數(shù)據(jù)量級和更新比例是多少我見過一個團隊ES 集群只有 3 個節(jié)點但商品表每天有 2000 萬條記錄需要更新更新比例超過全量數(shù)據(jù)的 60%這已經(jīng)不是調(diào)優(yōu)能解決的了。你需要估算三件事全量文檔總數(shù)、日均更新文檔數(shù)、更新字段占整個文檔的比例。如果更新文檔數(shù)超過總量的 20%或者單個文檔的更新頻率達到每分鐘一次以上我都建議不要在 ES 里做原地震動更新而是考慮分層架構(gòu)。第四個問題團隊有多少精力能投入到 ES 集群運維上這是最現(xiàn)實的問題。ES 集群的坑非常深分片分布不均、堆內(nèi)存壓力、合并風(fēng)暴、冷熱節(jié)點規(guī)劃每一樣都需要專人跟進。如果團隊只有一兩個后端平時還要兼顧業(yè)務(wù)開發(fā)那就老老實實選一個運維簡單、出問題好排查的方案。比如把全文檢索放在 PostgreSQL 的 GIN 索引上或者接受用 MySQL 的LIKE %keyword%頂著——雖然并發(fā)能力差一點但至少不會半夜被 on-call 電話叫醒。這四個問題回答完之后選型就變成了一個約束求解問題。比如延遲 3 秒可接受、最終一致、更新占比 40%、運維人力有限那答案大概率是主庫 異步任務(wù)更新 ESES 只做檢索而不是死磕 ES 參數(shù)。3. 方案一單體 ES 集群硬扛調(diào)參調(diào)出第二春如果數(shù)據(jù)量不大單分片 30GB 以內(nèi)、更新頻率不算變態(tài)每秒幾百次以內(nèi)、業(yè)務(wù)能接受秒級延遲那最簡單的方案不是推翻 ES而是把 ES 的參數(shù)調(diào)到適配高頻更新的形態(tài)。默認配置是為批量導(dǎo)入設(shè)計的你需要反向調(diào)整。3.1 拉開 refresh 間隔減少 segment 碎片refresh_interval從默認的 1 秒調(diào)到 30 秒甚至更久高頻更新場景下收益非常明顯。每次 refresh 都會把 buffer 里的數(shù)據(jù)生成一個新的 segment如果每秒更新 500 條默認配置下 1 分鐘會產(chǎn)生 60 個 segment查詢時要把這些 segment 全部掃一遍調(diào)到 30 秒后1 分鐘只有 2 個 segment。PUT /your_index/_settings { index: { refresh_interval: 30s } }代價是數(shù)據(jù)從寫入到可搜索的延遲從 1 秒變成最長 30 秒。對運營后臺這類場景搜索按鈕點下去等幾秒才出現(xiàn)結(jié)果用戶完全能接受。但對 C 端搜完立刻下單的場景30 秒延遲就是災(zāi)難這條要提前想清楚。3.2 調(diào)整 translog 刷新策略減少磁盤同步次數(shù)ES 默認每次寫請求都會把 translog fsync 到磁盤這是保證數(shù)據(jù)不丟的關(guān)鍵機制但高頻更新下會變成嚴重的性能瓶頸。對可以接受丟失幾秒數(shù)據(jù)的場景可以改成異步刷盤并調(diào)大刷盤閾值。PUT /your_index/_settings { index: { translog.durability: async, translog.sync_interval: 5s, translog.flush_threshold_size: 1gb } }這里要特別提醒async意味著如果節(jié)點宕機最近幾秒的寫入可能會丟。數(shù)據(jù)庫領(lǐng)域有一句老話沒有免費的可靠性你省下的每一次磁盤同步都是用數(shù)據(jù)安全換來的。這個方案只適合丟了能重建的數(shù)據(jù)比如從主庫重新導(dǎo)一次就能恢復(fù)的檢索索引。3.3 關(guān)閉副本寫入寫完再恢復(fù)寫入期間把副本數(shù)臨時設(shè)為 0只寫主分片寫完再改回去。這樣寫入鏈路少了一半的副本同步開銷對吞吐的提升非常直接。但副作用是副本數(shù)為 0 期間一旦主分片所在節(jié)點宕機數(shù)據(jù)就沒了。實操中我會選擇在業(yè)務(wù)低峰期做這種操作并且控制窗口時間。很多團隊會在這里踩坑改設(shè)置改得爽忘了改回來之后集群一直處于無副本狀態(tài)。3.4 用 index 代替 update減少讀改寫ES 的updateAPI 內(nèi)部邏輯是讀取舊文檔 - 合并字段 - 索引新文檔比直接index多了一次讀操作。如果更新的是整個文檔比如商品詳情的多個字段一起變了直接用indexAPI 寫入完整文檔性能會好不少。如果確實只需要更新其中一兩個字段也寧可構(gòu)造完整文檔去 index而不是依賴 update 的部分字段能力。高頻場景下省一次讀就是省一次分片間的網(wǎng)絡(luò)往返。3.5 從 mapping 設(shè)計上降低更新代價把會高頻更新的字段和幾乎不變的字段分開處理。比如商品標(biāo)題、描述這種低頻修改字段正常建立倒排索引價格、庫存這種高頻字段用doc_values: false或者干脆不建索引、只做存儲。倒排索引的更新代價遠高于列存你為價格搜索這個低頻需求付出的成本會在每次庫存更新時加倍奉還。方案一適合什么情況我建議數(shù)據(jù)量在百萬級、更新 QPS 在 500 以下、團隊只有一兩個人維護 ES 的小團隊優(yōu)先考慮。它的好處是架構(gòu)簡單不需要引入額外的中間件和鏈路。缺點是天花板低只要業(yè)務(wù)增長到一定程度你早晚要面對調(diào)不動了的尷尬。我們當(dāng)時在方案一上撐了大概半年直到大促壓測時發(fā)現(xiàn) 30 秒的 refresh 已經(jīng)讓 merge 線程持續(xù) 100% CPU才下定決心做架構(gòu)升級。4. 方案二MySQL ES 雙寫用 CDC 把更新動作解耦當(dāng)更新頻率超出單 ES 集群的承受范圍或者業(yè)務(wù)主庫已經(jīng)是 MySQL/Oracle 這類關(guān)系型數(shù)據(jù)庫時最常見的升級路徑就是雙寫 異步同步。這里的核心思路業(yè)務(wù)系統(tǒng)只寫主庫ES 不再接收業(yè)務(wù)方的直接寫入而是通過 CDC 工具訂閱主庫的 binlog異步更新到 ES。4.1 業(yè)務(wù)寫入鏈路業(yè)務(wù)后端正常寫 MySQL事務(wù)提交后什么都不用管。ES 的更新由下游消費者負責(zé)業(yè)務(wù)系統(tǒng)不用感知 ES 的存在。這一步就把業(yè)務(wù)邏輯和檢索索引維護徹底解耦后續(xù) ES 集群抖動、重啟、甚至整體重建都不會影響主鏈路。4.2 CDC 組件選型MySQL 生態(tài)里最常用的是 Canal阿里開源和 Debezium。兩者的原理一致偽裝成 MySQL 的從庫讀取 binlog解析成結(jié)構(gòu)化變更事件。我用 Canal 比較多部署相對簡單配置也直觀# canal.properties 關(guān)鍵配置 canal.instance.master.address127.0.0.1:3306 canal.instance.dbUsernamecanal canal.instance.dbPasswordcanal canal.instance.connectionCharsetUTF-8 canal.instance.filter.regexproduct_db\\.product_info拿到 binlog 事件后下一步是推到消息隊列。這幾乎是必須的原因是 Canal 本身只是一個數(shù)據(jù)通道如果直接把變更事件同步調(diào)用 ES一旦 ES 抖動就會導(dǎo)致 Canal 消費積壓、延遲升高進而影響 binlog 的拉取進度。加上一層 Kafka/RocketMQ 后Canal 只負責(zé)生產(chǎn)消息消費速度由下游單獨控制天然就有了削峰填谷和故障隔離能力。4.3 消費者側(cè)的冪等與去重這是雙寫方案最容易翻車的地方。ES 的更新操作必須是冪等的——同一個文檔更新 10 次和更新 1 次最終結(jié)果一致。做法很簡單用業(yè)務(wù)主鍵作為 ES 文檔的_id消費者每次都執(zhí)行index全文檔覆蓋寫而不是update局部更新。這樣即使 MQ 重復(fù)投遞或者消費端重啟后重放也不會產(chǎn)生臟數(shù)據(jù)。消費者的偽代碼大致是public void onMessage(ProductChangeEvent event) { // 1. 根據(jù)主鍵查詢最新數(shù)據(jù)從主庫或緩存 Product product productService.getById(event.getProductId()); if (product null || product.isDeleted()) { // 2. 已刪除則從 ES 中刪除 esClient.delete(product_index, event.getProductId()); return; } // 3. 全文檔覆蓋寫入 esClient.index(product_index, event.getProductId(), buildDoc(product)); }注意第 1 步不要直接用 binlog 里的變更字段構(gòu)造 ES 文檔。因為 binlog 記錄的是這一次變更的字段不是完整文檔。如果你只用變更字段去 update遇到多個字段先后變更、順序錯亂時ES 里的數(shù)據(jù)就是缺胳膊少腿的。這也是為什么很多團隊用雙寫方案后經(jīng)常出現(xiàn)搜索結(jié)果的標(biāo)題是新的但描述是舊的這類靈異問題。4.4 對賬與補償機制異步鏈路跑久了必然會出現(xiàn)漏消費、MQ 消息丟失、ES 寫入失敗等事故。所以一定要設(shè)計定期對賬任務(wù)每天凌晨掃描一批業(yè)務(wù)主鍵比對 MySQL 和 ES 中的關(guān)鍵字段發(fā)現(xiàn)不一致就觸發(fā)重新同步。對賬的頻率取決于你對數(shù)據(jù)質(zhì)量的容忍度。我們當(dāng)時是每小時對賬一次最近 24 小時有變更的商品全量對賬放到凌晨低峰期做。4.5 這個方案的邊界和代價最大的代價是鏈路變長定位問題不再像以前那樣一條命令能解決。另外binlog 的保留時間也要關(guān)注MySQL 默認可能只保留幾天如果 MQ 消費延遲超過這個窗口就必須用全量重建的方式補齊。還要注意Canal 本身也有單點問題生產(chǎn)環(huán)境至少部署兩個實例做主備切換。方案二是我個人最常用的推薦尤其是數(shù)據(jù)量達到千萬級、更新頻率達到每秒數(shù)千次的業(yè)務(wù)。它在穩(wěn)定性和架構(gòu)復(fù)雜度之間取得了一個比較好的平衡。但這個方案的 ES 集群依然要承擔(dān)全部更新壓力只是從業(yè)務(wù)直接打變成異步批量打。如果你的更新頻率已經(jīng)高到所有商品的價格庫存每小時全量變一遍那方案二的 ES 寫入量依然是全量文檔數(shù) × 更新次數(shù)這時候就要考慮方案三了。5. 方案三ES 只做索引層把易變字段隔離出去第三個方案的思路更激進一點既然 ES 怕高頻更新那就不讓它存那些高頻變動的字段。ES 里只保存用于檢索、排序、過濾的靜態(tài)字段標(biāo)題、描述、類目、品牌等而價格、庫存、狀態(tài)這些高頻字段留在 MySQL/Redis 等主存儲中。查詢時先通過 ES 拿到命中的文檔 ID 列表再用 ID 去主存儲批量拉取最新字段做最終的結(jié)果組裝。5.1 為什么這樣設(shè)計能解決本質(zhì)問題回到第一節(jié)說的矛盾根源ES 的寫入成本主要來自倒排索引的不可變特性更新一個字段需要重寫整個文檔。如果你把價格從 ES 文檔里挪出去那一次庫存變更就不再觸發(fā) ES 的任何寫入。ES 里的商品文檔可能一個月才更新一次標(biāo)題改了、描述改了而價格庫存每天變一千次ES 全都感知不到。高頻更新壓力被完全擋在了檢索系統(tǒng)之外。5.2 查詢鏈路的改造查詢邏輯會變成兩步。第一步用關(guān)鍵詞在 ES 里搜拿到 doc id 列表和靜態(tài)字段的排序分數(shù)。第二步拿這批 id 去 Redis或者 MySQL批量獲取最新價格、庫存、狀態(tài)再在應(yīng)用層做合并。// 第一步ES 檢索只拿 id SearchResponse response esClient.search(product_index, keyword, pageNum, pageSize); ListLong ids extractIds(response); // 第二步批量回源獲取最新可變字段 ListProductPriceInfo priceInfos redisClient.mget(ids); // 第三步應(yīng)用層組裝結(jié)果 ListProductResult results merge(response.getHits(), priceInfos);這個方案的查詢延遲理論上會多一跳網(wǎng)絡(luò)開銷但 Redis 的批量讀取是微秒到毫秒級整體影響不大。而且換來的是一個寫入壓力極低的 ES 集群查詢穩(wěn)定性會好很多。實測中我們用這個方案把 ES 的寫入 QPS 從 5000 降到了不到 200段合并風(fēng)暴基本消失查詢 P99 從 800ms 降到了 120ms。代價是應(yīng)用層多了一段合并邏輯以及對 Redis/主庫的額外讀取壓力。5.3 什么字段適合留在 ES什么字段必須拆出去我按字段特征做了一個劃分需要參與倒排索引、分詞匹配的字段標(biāo)題、賣點、描述——必須留 ES。需要范圍過濾、排序的數(shù)值字段價格、銷量如果更新頻率高強烈建議拆出更新頻率低如一天一次可以留。狀態(tài)類字段上下架、審核狀態(tài)幾乎每次業(yè)務(wù)操作都會變動拆出。冗余的商家名稱、類目路徑低頻變動的可以留 ES 用于展示和過濾。這個方案的變體也很實用如果實在拆不干凈也可以保留雙份字段即 ES 里留一個用于展示但允許過期的價格查詢時用主存儲的最新價格覆蓋。搜索列表頁可以先展示過期價格占位詳情頁再用最新價大部分用戶根本感知不到。5.4 這個方案最大的坑最容易被忽視的問題是如果 ES 文檔的 ID 在主存儲中已經(jīng)不存在商品被刪了、下架了回源查詢時會發(fā)現(xiàn) ID 取不到數(shù)據(jù)。此時要在結(jié)果組裝階段過濾掉這些空文檔否則前端拿到一個沒有價格沒有狀態(tài)的商品卡片體驗很差。我們最初的實現(xiàn)就漏了這一步上線后出現(xiàn)了一批幽靈商品排查了半天才發(fā)現(xiàn)是回源時沒做存在性過濾。方案三比較適合文檔量大、單文檔更新頻率極高、更新字段集中在少數(shù)幾個業(yè)務(wù)屬性的場景。比如電商、OTA 酒店房價、招聘網(wǎng)站的職位狀態(tài)都屬于這個類型。它不是所有場景的最優(yōu)解但如果你正在被 ES 的寫入毛刺折磨這個思路值得認真考慮。6. 高頻更新壓垮 ES 的真正元兇段合并與寫入放大很多人以為 ES 寫入慢是因為每個文檔都要做分詞、建索引其實分詞的開銷遠沒有想象中大。真正吃 CPU 和磁盤的是隱藏在寫入鏈路底層的段合并segment merge。我單獨用一節(jié)來講因為這個知識點決定了你在做前三章方案時能不能想明白為什么 ES 不適合高頻更新。6.1 段合并的全過程ES 的每個分片shard底層是一個 Lucene 索引而 Lucene 索引由多個 segment 組成。寫入流程大致是數(shù)據(jù)先進內(nèi)存 bufferrefresh 時生成一個 segment 并寫盤此時該 segment 可以被查詢。隨著寫入持續(xù)進行小 segment 越積越多。Lucene 后臺線程會根據(jù)合并策略挑選一些 segment把它們讀出來、合并排序、寫成一個更大的新 segment然后刪除舊 segment。這個過程是異步的但它的 CPU、IO 開銷非??捎^合并時既要讀舊 segment 的全部數(shù)據(jù)又要寫新 segment 的全部數(shù)據(jù)等于一次全量搬運。6.2 什么是寫入放大假設(shè)你有 100GB 的索引數(shù)據(jù)不更新時 merge 只發(fā)生在初始導(dǎo)入階段。但高頻更新意味著每個 segment 里都有大量被標(biāo)記刪除的舊文檔這些舊文檔不會被立刻清理而是占著空間等 merge。后臺要不斷把含垃圾的 segment 合并成新 segment才能釋放空間。這會導(dǎo)致一個讓人崩潰的循環(huán)寫入越多 - 標(biāo)記刪除越多 - merge 越頻繁 - merge 又搶走寫入的 CPU - 寫入變得更慢 - 業(yè)務(wù)方加大寫入重試 - 更多 segment 產(chǎn)生。這就是典型的寫入放大現(xiàn)象磁盤 IO 和 CPU 消耗可能達到實際數(shù)據(jù)量的 3 到 5 倍。6.3 調(diào)優(yōu) merge 策略Lucene 默認的TieredMergePolicy把 segment 按大小分層次合并理論上效果不錯但高頻更新場景下需要調(diào)整參數(shù)PUT /your_index/_settings { index.merge.policy.segments_per_tier: 10, index.merge.policy.max_merge_at_once: 5, index.merge.scheduler.max_thread_count: 1 }這里的思路調(diào)小max_merge_at_once和max_thread_count是為了限制 merge 并發(fā)避免它在高峰期和寫入搶資源segments_per_tier控制每一層允許多少 segment調(diào)大一點可以減少合并頻率但可能會讓查詢讀取的文件數(shù)變多。這是一個在查詢性能和寫入穩(wěn)定性之間找平衡的游戲。沒有絕對正確的值只能靠自己的業(yè)務(wù)壓測去試。6.4 更治本的做法分片/索引粒度拆分如果你已經(jīng)預(yù)見到某個索引會被高頻更新不要把所有數(shù)據(jù)塞進一個大索引。按時間滾動索引比如按天建索引是最常見的解法。每天的索引獨立生成、獨立 merge不會互相拖累。配合 ILMIndex Lifecycle Management策略可以把 3 天前的索引自動切到只讀甚至 force merge 成一個大 segment徹底杜絕舊數(shù)據(jù)的 merge 開銷。這種設(shè)計下高頻更新只影響當(dāng)天那個索引其他索引的查詢和寫入穩(wěn)如泰山。6.5 冷熱分離把近期高頻更新的索引放在熱節(jié)點SSD、高 IO 配置把歷史索引放在冷節(jié)點機械硬盤、低配置。這樣即使某個熱索引發(fā)現(xiàn) merge 風(fēng)暴也不會干擾到冷節(jié)點上承載的歷史檢索和聚合報表。我們在實踐中還把冷節(jié)點的副本數(shù)調(diào)成 0進一步降低集群整體負載。這么看下來你已經(jīng)能理解為什么高頻更新 ES是一個需要嚴肅對待的組合。單純在業(yè)務(wù)代碼里調(diào) API 是沒用的如果不從底層機制上做規(guī)避性能天花板就在那里。但反過來說只要理解了段合并的運行機制前文提到的方案三把易變字段拆出去為什么能同時解決寫入放大和查詢變慢就很好理解了——ES 的寫入量直接減少了一個數(shù)量級merge 的頻率自然降下來了。7. 三套方案實測對比延遲、吞吐、成本和坑位盤點紙上談兵沒有說服力這里把我們當(dāng)時在同一業(yè)務(wù)場景下做的一組壓測數(shù)據(jù)分享出來。測試環(huán)境是 3 臺 8C16G 的云主機ES 集群 3 節(jié)點單索引 20 個分片副本 1數(shù)據(jù)量約 800 萬商品文檔。寫入負載是每秒 2000 次文檔更新其中 80% 是價格/庫存類高頻字段更新20% 是標(biāo)題/描述等低頻字段更新。查詢負載是固定的 200 QPS 關(guān)鍵詞搜索。指標(biāo)方案一單體 ES 調(diào)優(yōu)方案二MySQL CDC ES方案三ES 索引層 Redis 回源寫入鏈路業(yè)務(wù)直接寫 ES業(yè)務(wù)寫 MySQL異步同步 ES業(yè)務(wù)寫主存儲ES 幾乎無寫入更新延遲30s 后可搜到約 3s 可搜到取決于 MQ 消費速度靜態(tài)字段更新秒級價格庫存實時回源ES 寫入 QPS約 2000已接近上限約 1500Canal 消費速率限制不到 200只有低頻字段變更查詢 P99800ms350ms120ms高峰期 CPU持續(xù) 95%75%40%磁盤占用虛高大量 deleted 文檔未清理正常正常數(shù)據(jù)一致性強一致單鏈路最終一致需對賬最終一致查詢回源保證準(zhǔn)確架構(gòu)復(fù)雜度低中中高運維成本高需長期調(diào)參優(yōu)化中依賴 MQ、Canal 穩(wěn)定性高需要維護 Redis 回源邏輯適合規(guī)模百萬級數(shù)據(jù)、更新頻率每秒幾百次內(nèi)千萬級數(shù)據(jù)、更新頻率每秒數(shù)千次大文檔量 極高更新頻率、字段可拆分有幾個數(shù)據(jù)點值得展開解釋一下。方案一在 2000 QPS 更新下已經(jīng)出現(xiàn)明顯毛刺這個毛刺來自 merge 線程和寫入線程的 CPU 競爭調(diào)參只能緩解不能根治。方案二的查詢 P99 比方案一好是因為寫入從同步變成異步ES 的壓力小了但 350ms 仍然偏高——當(dāng)時的瓶頸在 MQ 消費積壓導(dǎo)致 ES 批量寫入的 wave 效應(yīng)。方案三的查詢 P99 最低但這是犧牲了價格庫存字段的索引能力換來的如果業(yè)務(wù)需要按當(dāng)前價格做搜索過濾比如價格區(qū)間查詢方案三的那些字段就無法參與這種查詢了必須回源后在內(nèi)存里二次過濾。這是方案三最需要權(quán)衡的點。成本和坑位方面方案一的人力成本最被低估。很多人以為不用引入新組件就是省錢但當(dāng) ES 成為瓶頸后你會花大量精力做索引調(diào)優(yōu)、擴容評估、段合并監(jiān)控這些隱性成本往往超過一套 MQ 加 CDC 的硬件費用。方案二穩(wěn)定運行的前提是 MQ 集群本身靠譜如果公司已經(jīng)有 Kafka/RocketMQ 基礎(chǔ)設(shè)施那方案二是性價比最高的。方案三引入了 Redis 依賴如果 Redis 抖動搜索結(jié)果會直接受影響這種查詢鏈路中的單點故障需要提前設(shè)計降級方案。8. 我的最終選型建議與幾條保命經(jīng)驗綜合這些年的實際項目經(jīng)驗我給一套可落地的選型建議姑且當(dāng)成一個決策清單來用更新頻率低每小時幾百次以內(nèi)、數(shù)據(jù)量百萬級、團隊不想引入新組件優(yōu)先方案一但必須接受秒級延遲和持續(xù)調(diào)參。更新頻率中等每秒數(shù)百到數(shù)千次、已有 MySQL 主庫、公司有 MQ 基礎(chǔ)設(shè)施方案二是最穩(wěn)妥的選擇鏈路雖長但每一環(huán)都是成熟組件。單文檔更新頻率極高每分鐘多次、價格庫存等字段占更新 80% 以上、搜索又不依賴這些字段做過濾直接上方案三ES 只做靜態(tài)檢索可變字段全走 Redis 回源。如果搜索必須支持按最新價格過濾這種需求那方案三的適用性就要打折扣。這時候我會考慮把價格字段做成獨立索引比如價格區(qū)間 上下架狀態(tài)單獨放一個輕量 ES 索引主文檔索引只存靜態(tài)信息兩個索引通過商品 ID 關(guān)聯(lián)。這相當(dāng)于一個更細粒度的拆分。最后分享幾條自己的保命經(jīng)驗。第一永遠不要只依賴一條鏈路。不管是方案二還是方案三必須預(yù)留一條全量重建退路。我們每個月會跑一次全量同步腳本把 MySQL 全量數(shù)據(jù)重新灌入 ES用新索引 別名切換的方式發(fā)布確保任何增量鏈路問題最終都能靠全量修復(fù)兜底。第二監(jiān)控不要只看集群整體指標(biāo)單索引級別的 segment 數(shù)量、merge 耗時、deleted 文檔占比這三個指標(biāo)一定要配告警。deleted 文檔占比超過 30% 時基本可以判斷更新模型出了問題該考慮拆索引或換方案了。第三線上調(diào)參一定要留變更記錄。ES 的_settings接口改起來太方便生產(chǎn)環(huán)境經(jīng)常有人隨手改掉 refresh 或 merge 參數(shù)出了問題卻不知道誰改的。至少對索引 settings 的變更走一次代碼評審流程。關(guān)于這套架構(gòu)后續(xù)還可以怎么演進我目前的計劃是在方案三的基礎(chǔ)上加入實時數(shù)倉的維度把價格庫存的歷史變化軌跡單獨存儲這樣既能做當(dāng)前價過濾又能支持價格趨勢分析檢索系統(tǒng)和高頻更新系統(tǒng)之間的邊界會更干凈。選型這件事沒有銀彈關(guān)鍵是搞清楚自己的業(yè)務(wù)屬于哪種更新模型再決定讓哪個組件承擔(dān)什么職責(zé)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99在线视频网址在线观看| 深爱女色婷婷丁香五月亚洲图区| 99在线精品观看99| 国产欧美第五十五页| 天天成人综合视频| renrencaoav| 欧美激情综合色综合啪啪五月| 国产人妻777人伦精品HD| 久久久大香蕉| 色九九九九| 欧美性丁香色色五月天| 久久视频婷婷视频| .操區COm| 他改变了拜占庭| 97操男人的天堂| 97天堂| 久青操| 亚洲婷婷乱乱丁香| 久久这里都是精品视频| 26UUU亚洲欧美| 久久五月视频| 五月婷婷与六月丁香图片激情| 99九九视频精彩在线| 就爱日五月天| 婷婷久久亚洲| 能直接看的AV网站| 这里有精品2| 色综合天天网| 五月婷婷久久网| 五月丁香美女| 人妻系列久久久久久久久久久| 狠狠爱婷婷爱| 国产婷婷色五月| 婷婷色五月激情强奸四射| 亚洲六月综合激情久久下卡| 天天综合网色欲香| 操操熟女| 久热超碰91| 色网站9| 新激情婷婷| 国产婷婷色综合AV蜜臀AV | 婷婷久久五月| 婷婷激情五月| 成人五月天综合网| 五月丁香婷婷婷激情爱爱| 中文字幕+中文在线| 亚洲狠狠色丁香婷婷综合久久| 天天天天操| 色五月丁香网| 不卡的AV网站| 六月婷婷视频| 欧美狠狠草| 九月婷婷| 黄色三级毛片中字| 久99精品视频| 色五月琪琪| 97碰碰人人| 99色综合网| 精品婷婷| 五月丁香网站在线播放| 99在线精品视频免费观看20| 日本久久婷婷| 99热这里只有精品9| 九九热精品| 亚洲亚洲人成综合网络| 99久久五月天| 色色是色N一| 日本狠狠爽| www激情网| 台湾佬天天日丁香婷婷五月天| 色婷婷综合网站| 99热这里只有精彩| 99热国产免费| www久久久久久久久久久久久久久久久| 九色视频入口91| 天久久久久| 久久婷婷激情| 激情六月一二| www.狠狠操| 婷婷十月丁香| 色丁香婷婷| 色婷婷小说网| 青青艹b| 色婷婷狠| 欧美激情-区二区三区| 综合五月天完整| 五月久久婷婷天堂视频| 精品香蕉99久久久久网站| 九热网站| 五月天婷婷六月激情网| 五月天婷婷视频小说| 成人av免费观看| 中文字幕在线观看视频www| 成人做爰高潮A片免费视频| 久草丁香婷婷1024| 九九热黄色| 五月婷婷久久开心网| 99热这里只有精品1998| 婷婷婷婷婷婷婷五月丁香| 另类少妇人与禽zOZZ0性伦| 沈娜娜av| 天天干狠狠操| 日日噜狠狠| 久久精品一区二区三区四区| 久久九九网| 婷婷丁香五月,狠狠综合| 新激情五月天天在线网| 婷婷五月天欧美图片在线播放电驴| 99视频这里有精品| 俺也去五月婷婷丁| 天天插天天狠| 97色天堂| 99资源在线| 激情婷婷内射| 噜噜五月天综合| 五月天婷婷色综合| 五月色婷婷AV| 精品人妻伦九区久久AAA片| www.久操| 丁香九月婷婷色| 婷婷综合五月天| 国产,欧美,学生妹,视频| 伊人久久大香蕉网| www.色婷婷.com| 成人在线日韩| 毛片网站谁有| 99热这里只有精品5| 激情五月婷婷啪啪| 91婷婷五月天嫩女| 五月丁香 狠狠爱| 日日日,com| 日本视频99| 91re色综合视频| www.天天干.com| 夜夜夜天天操| 四虎成人精品永久免费AV九九| 91精品久久久久久久久久| 色情五月丁香| 亚洲午夜AV| 日本人妻久久| 欧美成人性爱网| 国产成人AV| WWW,激情五月天,COM| 久久五月天婷婷| 天天日日| 狠狠色婷婷777| 丁香五月花| 国在线激情网| www.激情| WWW.桔色成人.COM入口| 久久五月婷6 9| 五月丁香六月日逼| 四川BBB搡BBB搡多人乱亂| 婷婷久久久| 91狠狠色丁香| 综合色播| 午夜色婷婷| 亚洲色啪| 97色碰| 色色热99| 九九成人电影婷婷| 五月天婷婷色综合| 69久久99精品久久久久| 久久久18| 夜夜夜夜夜操| 亚色网站小视频| 久久久97| 色5月婷婷| 成人在线观看精品| 996日日爱| 欧美一级a | 九九综合五月欧美| 激情开心五月天| 碰碰碰91| 久久这里有精品| 99re6热在线精品视频播放速度| 日韩性视频| 中文字幕九九九九| 久久曰曰| 五月天另类小说久久小说网| 月丁香久久久| 成人版视频在线观看| 中文字幕97超级碰| www.色99| 天天色综合综合| 婷婷五月天渟渟| 另类激情网| 激情性爱网站| 免费视频99| 亚洲第一色色色色| 五月婷啪啪| 99精品国产在热久久婷婷| 成人va视频| 99黄色在线视频精品熟女| 99日本精品视频热| 99爱免费在线视频| 欧日韩成人| 亚洲男女激情| 深情五月天| 丁香五月综合首页| 国产这里只有精品| 久久人人妻| 超碰激情网| 九月丁香婷婷| 成年人丁香五月| 51XX午夜影福利| 五月婷婷啪啪| www.夜夜操| 大香蕉五月天婷婷| www.色欲丁香婷婷| 久操大香蕉| α久久| 中文字幕天天干| 色色99| 久久婷婷五月激情网站| 色婷婷免费观看| 成人中文网| 婷婷六月天激情| 97视频久久| 蜜桃人妻无码AV天堂三区| 97AV人人插人人操| 热久精品| 色五月 五月婷婷| 综合亚洲六月婷婷在线| 亚洲乱啪| 国产五月视频| 婷婷五月色| 另类激情五月| 9色在线| 一本到不卡高清DVD| 亚洲视频二区| 丁香六月婷婷综合缴| 九九av| 一区操| 五月婷婷丁香六月| 激情另类综合| 欧美婷婷综合| 五月综合影院| 精品国产va久久久久久久| 99色久| 中文字幕无码人妻少妇免费视频 | 丁香五月婷婷激情蜜桃| 六月婷婷激情| 伊人91| 激情五月丁香五月| 99国产小视频| 亚洲五月综合色播| 五月丁香色婷婷伊人| 国产黄色一级片| 天天综合五月| 色六月天天激情综合网| 激情性爱五月天| 亚洲精品另类| 丰滿爆乳一区二区三区| 日本不卡一区二区三区| 九九综合色| 九九自拍网| 久久色五月天综合网| 色五月丁香五月五月婷婷| 婷婷欧美激情| 伊人三级激情| 日韩综合久| 在线看AV| 玖玖综合色区在线观看| 婷婷99狠| 大香人妻| 久久大香蕉伊人| 婷婷影院A成人| 国产激情久久| 俺也去色| 国外亚洲成AV人片在线观看| 精品夜夜澡人妻无码AV| 全部老头和老太XXXXX| 久久性爱视频网站| 99色色| 九九热免费| 97狠狠色| 五月色综合| 99精品一二三四视频| A久久| 999热在线视频| 五月天婷婷久久综合| 五月婷婷丁香伦理网| 五月丁香爱婷婷深深| 国产91视频| 亚洲婷婷91丁香| 色噜噜狠狠色综合网| 色一情一乱一乱一区9| 99精品久久久久久久久| 色五月婷婷亚洲最大| 深爱五月激情| 91人人网| 成人午夜无码视频| 久久色六月| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 狠狠精品干练久久久无码中文字幕| av大香蕉| 亚洲欧洲中文日韩久久AV乱码| 色婷婷久久| 99精品成人无码A片观看金桔| 日韩一级片| 五月婷婷深深爱| 中日韩美欧成人一区二区精品在线| 岛国在线观看91| 五月丁香在线观看国产| 99亚洲精美视频在线观看| 色99色| 色九月婷婷综合| 成人av免费观看| 天天开心婷婷丁香五月| 综合激情深爱| 九九久久99精品免费观看www| 五月丁香啪啪网| 亚洲第一综合| 色吧99| 六月婷色| 久久丁香九| 热九九精品| 中文字幕精品无码一区二区| 五月丁香花激情啪啪网| 色色色国产| Av性爱网站| 日日肏天天操| 激情久久久久久| 99爱精品| 婷五月天六| 五月丁香啪啪啪啪| 色综合综合色| 在线成人网站| 国产麻豆视频| 天天日天天插| 久久五月天丁香花| 五月天天天色| 五月丁香综合啪啪| 97在线观视频免费观看| 97黑人精品区| 久热这里精品免费| 久草天堂| 手机在线视频观看9| 99在线观看视频| 五月丁香激情综合六月涩涩爱| 五月激情六月宗合| 天天天天操| 久久免费试看120秒| 久久久中文| 天天色天天舔天天爱天天爽| 欧美在线视频99| www.丁香黄色五月天人与| 色狠狠综合网| 婷婷综合精品视频97| 午夜五月天| 日本三级日本黄色| 婷婷五月丁香五月丁香| 另类视在线| 久久精品99国产精品日本| 97综合视频在线| 婷婷色在线视频| 日韩一区二区在线播放| 思思热视频在线| 操一操干一干| 正宗黄色毛片| 婷婷四色五月| 99热这| 国产精品成人网址| 十月丁香婷婷| 婷婷五月激情图片| 97超碰9久热婷婷热| 欧美日综合| 五月丁香成人版| 丁香五月婷婷五月天| 综合五月天| 丁香婷婷性久久| 五月丁香婷婷久久| 国产 码在线成人网站| 五月天婷婷丁香成人网| 亚洲成人网无码| 丁香五月天天高清在线| www.狠狠| 久久丁香五月天| 五月婷婷激情综合视频| 专区无日本视频高清8| 亚洲无码www| 色五月开心五月激情五月| 激情久久久久久久久| 性做爰A片免费视频A片直播| 色色99| 丁香五月婷婷香| 伊人在线视频| 99热99在线| 干一干xxxx| 人人肏逼视频在线一区二区| 激情五月天开心网丁香无码| 五月天伊人| 色五月欧美| 丁香五月亚洲天堂| 国产精品久久久爽爽爽麻豆色哟哟| 91超级碰在线视频| 超碰人人99| 婷婷99视频全集高清| 综合激情开心五月| 操骚货在线| 成人中文字幕在线| 婷婷综合在线| 免费成人中文字幕| 99精吕视频在线观看了| 在线日本www| 先锋资源 996| 五月婷A V在线| 都市激情蜜桃婷婷五月天 | 2023天天日夜夜爽| 五月丁香六月婷| 超碰在线看| www.久久爱.com| 久久婷婷东京热大香樵| 五月丁香五月婷婷在线观看| 婷婷激情五月天桃花网| 丁香婷婷视频一区二区| 久久91久久精品久久| 狠狠肏综合网| 一本色综合色| 天天xxxxxx天天日| 婷婷不卡基地| 婷婷另类小说| 91肏| 五月大香蕉| 亚洲综合久| 69精品人人人人| 色五月琪琪| 五月丁香综合激情| 婷婷第六色| 婷婷五月天基地| 五月婷婷开心深| 九九色逼| 思思综合热| 一级AV片| 激情文学五月丁香六月婷婷| 婷婷激情人妻| 天天骑天天操| 五月天婷婷乱| 日韩精品电影| 九九黄色网| 九九Av| 久操大香蕉| 久色成人| 激情色情五月天| 日本色综合| 色私五月婷婷| 亚洲欧洲另类| 玖玖资源站蜜臀| 影音先锋 一区| 欧美天堂久久| 99r久久这里只有精品| 国产精品久久久爽爽爽麻豆色哟哟| 天天色,天天操,天天射| 成年视频免费观看| 欧美25p| 成人婷婷色五月天| 青青999| 超碰久热| 色五月激情基地| 操逼综合网| 另类专区在线| 五月婷色丁香| 欧美日韩国产伦精品日韩人妻一| 99∨VTV| 久久久99精品| 六月色播| 黄色热99| 婷婷丁香激情综合色情| 六月色狠狠色| 久久性刺激| 操91| 蜜臀99精品| 无码四色色色| 91AV视频| 五月婷婷综合网| 成人视频婷婷| 激情六月丁香综合| 99色免费| A片试看120分钟做受视频红杏| 思思热99在线视频| 久久欧洲久久| 九九激情视频| 99热| 狼人婷婷久久| 五月丁香六月欧美| 色五月婷婷基地| 久久涩视频| 日韩操人| www.99成人视频| 婷婷五月天影院| 久月久在线视频| 国产.亚洲.欧洲视频在线| 五月婷婷视频啪啪美女| 99热精品99| 久久人妻少妇嫩草AV| 9l视频自拍9l视频自拍九色学生| 亚洲综合色丁香婷婷六月| 五月婷婷影| 不卡在线视频| 婷婷五月丁香五月| 色噜噜狠狠色综合成人网| 99久久婷婷国产综合亚洲| 亚洲操精品| 视色综合| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 婷婷五月天AV| 超碰成人在线观看| 激情五月影院| 开心五月激情婷婷| 婷婷六月插屄激情| 色五月丁香总合网| 精品久久9| 超碰人人妻| 四LLL少妇BBBB槡BBBB| 97视频91| 婷婷五月天视频| 人人视频色| 婷婷五月俺要去| 人妻久热| 久久9热| Caoporn公开| 亚洲 在线 另类| 99色在线视频| 狠狠干无码| www.97碰碰com| 日韩在线婷婷五月天综合| 爱草视频在线| 久久综合伊人综合在线| 男人天堂亚洲综合| 国产日韩欧美性生活| 97在线/亚洲| 五月丁香六月婷婷综合| jiuse91在线| 色综合9| 五月丁小婷婷激情四射| 九九成人电影婷婷| 激情5月婷婷| 久草热8精品视频在线观看| 中文字幕在线观看视频www| 久久综合激情| 综合网亚洲| 国产67194| www999日韩精品| 丁香六月婷婷久久综合| 99九九在线精品热动漫| 久久久久激情| 天天天天天天操| 色色色国产| AV在线大香蕉| 日日噜噜夜夜狠狠久久丁香六月| 色5月婷婷| 久久综合人妻| 狠狠干2007| 丁香婷婷射| 婷婷五月婷婷五月天| 五月天玖玖狠狠色色| 天天操夜夜爱| AVDV久久| 欧美一级色| 性综合网| 91蝌蚪窝视频在线| 久久性爱激情| 9l视频自拍9l视频自拍九色学生| 婷婷丁香97| 久草婷婷| 久久婷婷五月丁香| 五月激情综合美女久久| 婷婷涩涩五月天| 另类图片天天影视在线观看| 久久五月丁香| 婷婷伊人五月天| 殴美97色| 91Chinese在线| av婷婷丁香 六月| 99色视频在线观看| 99热这里只有精品2| 丁香五月影院| 色99在线视频| 婷婷五月五月丁香| 99毛片| 丁香六月色婷婷欧美| 婷婷区日本| 79色色色色| 人人妻人人澡| 色五月激情五月| AV中文字幕夜夜操b天天摸bb | 精品亚洲国产成AV人片传媒| 亚洲视频五区| 天堂久久精品| 热99精品视频| 天天干夜晚夜操| 97色综合| 99热6这里只有精品6| 久久爱婷婷| 中文字幕成人| 色色色区| 五月婷婷久草在线视频综合| 丁香六月在线| 综合九九中文字幕| 爱草视频在线| 九九99精品视频在线观看| 婷婷五月综合色小姐小说| 五月天激情四射| 99视频这里只有精品10| 激情五月天婷婷| 婷婷五月丁香花综合| 亭亭五月激情亚洲在线| 丁香五月激情综合| 亚洲操B视频| 激情五月丁香在线观看直播| 色色色婷婷五月天| 中文字幕人妻一区二区| 久久ER视频com| 91丨九色丨丰满人妖| 五月丁香色停停啪啪啪| 这里只精品| 日本久久婷婷| 9久久网| 久久久精久人妻| 五月天综合色| 久久9久| 这里只有精品1| 4438亚洲欧美| 亚洲激情高潮| 亚洲激情另类| 丁香五月色情| 日本超碰在线| 色色五月婷婷久久| 亚洲va成人va成人va在线观看| 影音先锋91在线资源站| jiujiu无码五区| 老司机伊人| 亚洲情色一区| 五月天婷婷AV| 五月停停色| 婷婷五月天无码| 182tv992tv人之初午夜免费观看| www.91有码.com| 六月婷婷综合| 丁香五月天天哦| 99久热| 婷婷五月综合社区| 久婷| 久久亚洲婷婷| 天天日天天爽夜夜爽| 9l视频自拍九色9l视频自拍九色9l社区| 5月婷婷6月六月丁香| 97成人丁香| 伊人久久丁香婷婷六月五月综合| 色色五月婷婷狠狠| SS丁香五月婷婷| 性生生活大片又黄又| 久草五月天电影网| 日本V在线观看不卡视频网站| 日日色五月天| 影音先锋美国A| 青青草视频福利| 九九色网专区| 激情综合色播| 欧美性爱中文字幕| 51XX午夜影福利| AV在线资源| www.婷婷五月| 日日干综合| 韩国中文字幕91| 天天色综合综合| 啪啪五月婷婷| 久9久9久9久9久9久9| 99热在线精品播放| 激情五月天婷婷激情| 色色无码| 丁香五月天激情AV| 国产成人亚洲综合亚洲| 五月丁香六月激情综合| 丁香 婷婷 激情 综合 五月| 国产精品国产成人国产三级| 婷婷五月六月丁香综合| 亚洲av午夜精品一区二区| 中文字幕成人影视| 九九热99re8热免费观看| 亚洲日韩一页精品发布| 婷婷丁香五月,狠狠综合| 九九热青青草| 国产亚洲色婷婷久久99精品91| 五月丁香日本片| 江苏少妇性BBB搡BBB爽爽爽| 亚洲av骚货| 超碰在线视屏| 欧美69久成人做爰视频| 能看的av网站| 99色色热热| 国产免费性爱| 99人妻碰碰碰久久久久视| 欧美在线视频99| 国产精品美女久久久久AV超清| 婷婷五月情天| 中文字幕在线日亚州9| 丁香五月婷婷手机| 天天射美女| 国外亚洲成AV人片在线观看| 五月天成人综合| 五月丁香日本片| 色综合99色| 大香蕉啪啪| renre人人操国产超碰在线| 色色婷婷婷丁香五月天| 天天舔天天爽| av色色国产| www.天天干.com| 99ri6在线视频| 激情五月天电影| 久久99免费视频| 色色五月丁香| 色婷婷啪啪综合网| 国产激情视频在线观看| 婷婷五月天六月丁香| 26uuu.| 久色激情| 五月丁香亭亭电影久久| 激情伊人五月天| 丁香五月六月婷婷怡红院| 人妻操逼视频。| 日韩AV一区二区三区| 亚洲乱码精品久久久久.. | 综合XX网| 伊人色综在线| 夜夜骑日日操| 影音先锋毛片网站| 996re热精品视频| 欧美日韩99| 激情综合色婷婷啪啪六月天| 五月婷婷花| 99色这里| 狠狠色狠狠| 欧美激情 日韩无码 婷婷 五月天| 日本狠狠色| 五月久久婷婷天堂视频| 永久地址 色| 天堂婷婷五月在线| 91碰在线| 91热网址| 五月婷中文娱乐综合| 欧美精品中文字幕亚洲专区| 99热首页| www,久久久| 五月天婷婷丁香| 99热这里只有精品一区| 狠狠另类视频| 五月丁香六月婷婷综合在线| 性视频久久| 99热在线中文字幕| 婷婷丁香五月综合网上 | 五月天五月婷五月激情网| 思思热闹这里只有精品| 中文字幕,综合,91| www.刺激色网站www.| 人人操9| A片试看120分钟做受图片| 99热这里只有精品8| 天天噜日日噜综合无码| 青青草轻轻操| 五月丁香婷婷爱| 色色亚洲视频| 久久金品黃色| 婷婷精品性视频| 天天日日综合| 精品成人a v无码内射| 99愛国产| 亚洲色模骚货| 激情五月丁香六月| 色色色色av色色色色| 可以观看的AV| 激情丁香五月天图片| 五月丁香六月婷婷综合网缴情| 色婷五月天网站| 丁香五月婷婷激情123| 午夜九九电影| 米奇影视资源777狠狠色婷婷五月天激情网 | 久久视9精| 日本eVa一区=区视频| 91妻人人爽人人看片| se色婷婷视频| 亚州欧美黄色电影| 中文字幕精品推荐免费在线观| 人妻免费网站| 色五月中文字幕| 色播五月天婷婷老师| 日韩在线99| 99热老网站| 去干网av| 五月丁香婷婷激情久久| 天天天天天天天操| 五月丁香六月婷婷亚洲综合| 色99视频| 超碰在线国产| 99热这里是精品| 日韩成人精品中文字幕电影| 婷婷酒色网| 热九九九九| 琪琪色五月天| 五月天国产成人| 九九久久99| 夜夜干天天干| 在线观看中文字幕亚洲| 五月天激情丁香| 成人精品视频99在线观看免费| 国产黄色在线观看| 51XX嘿嘿午夜无码| 狠狠爱综合| 色五月在线| 婷婷色av| 欧美精品99| 99精品偷自拍| 秋霞少妇AV网站| 91精品久| 日韩操逼大片| 第2色五月婷| 九九久久99| 99成人免费热视频| 人妻视频在线| 五月婷婷五月天| 色色色色欧美| 国产黄色av| 亚洲无码播放| 色五月 五月婷婷| 亚洲视频一区| 国产一级黄色影片,| 超碰精品国产首页| 操99| 五月天色五月天| 五月天激情社区| 九九色播五月丁香| a网站免费观看| 亚洲在线网站| 超碰成人在线观看| 开心五月激情站| 丁香五月激情啪啪| 久久五月综合| 深夜婷婷 丁香| www久久久久| 色婷婷狠狠| 五月丁香六月花| 激情五月婷婷| 色婷婷成人做爰A片免费看网站| 婷婷六月香| 色播婷婷大香蕉| 五月丁香网中文字幕| 五月婷婷天天| 天天色播| 免费看片操逼| 影音先锋女人av鲁色资源网小说免费| 天天色综合网1| 亚洲成人一区| AV色色天堂中文| 亚洲免费99| 五月天婷婷导航| 成人一级片| 欧美搡BBBBB摔BBBBB| 五月丁香综合中文| 极品色丁香| 最新丁香六月婷婷| 人人草人人爱| 一婬一伦一区二区三区| 99这里只有精品国产| 日韩啊啊啊| 色婷婷小说| 丁香五月婷婷av| 色噜综| 婷婷五月无码| 久草网大香视频| 色综合爱综合| 成人 在线 日韩| 亚洲韩国日产综合AV| 色五月婷婷久久爱| 欧美日比视频| 丁香五月伊人| 天天爽天天日人人爱| 人人草人人爱| 婷婷六月丁香五月图区| 色婷婷丁香五月| 色99在线视频| 成人超碰网| 天天做天天爱天天搞| 人人摸人人| 成人免费黄色短视频| 色播五月丁香| 99久超碰| 激情婷婷。| 夜夜操少妇| 这里只有精彩视频| 激情文学第四色婷婷丁香五月| 婷婷五月噜噜| 三人荫蒂添的好舒服A片| 色欲天天综合网| 丁香五月天狠狠| 天堂久久久久天堂网| 狠狠色婷婷7| 99久热在线精品| 五月丁香色综合| 久久33视频| 婷婷开心综合人妻小说网址| 亚洲成人免费在线| 中文无码婷婷| 久草a片| 亚洲AV永久无码影院黑人| 99re26视频| 亚洲V国产V欧美V久久久久久| 婷婷天堂站| 狠狠爱五月婷婷| 毛片蕉地一二| 99色最新在线视频网站| 777精品久无码人妻蜜桃| 五月丁香久久| site:901-07.com| 丁香婷婷五月天成人| 天天成人综合| 99久热| 久久婷婷五月天激情四射| 五月丁香视频色色| 天天激情| 色婷婷玖玖影院| 人人草人| 九九综合88| 激情五月天开心总和网| 毛片蕉地一二| 五月天六月婷婷| 免费AV在线网址| 婷婷色无码| 91精品综合久久久久久五月天| 九九色影院| 99ri精品在线| 久久久久久丁香五月| 婷婷在线观看五月天在线视频| 欧美在线视频9| AA片在线观看视频在线播放| 九九色欲网| 四色AVwww| 在线五月色播| 97久久人人| 91久久免费| 狠狠爱成人综合网| 色五月综合| 超碰人人超碰| 亚洲激情五月| 久久五月婷天天干| 电影蜘蛛女| 9|无码久久久久久| 欧美婷婷综合网| 最新无毒无码AV| 久久婷婷热| 8区视频在线| 韩国激情五月天综合网| 亚洲色vA| 久久狠色噜噜狠狠狠狠97| 成人片在线播放| 亚洲天堂无码| 九月大香蕉| 97人碰人操| 国精产品一区一区三区免费视频| 91丨九色丨东北熟女| 色婷婷精品视频| 久久视频这里有精品99| 天天色天天舔天天爱天天爽| 伦乱美欧| 天天日天天舔天天摸| xxxx久| 亚洲免费av观看| 狠狠色噜噜色狠狠狠综合色 | 婷婷五月天亚洲综合| 9色免费网| 中文字幕不卡网站| 五月丁香色欲| 亚洲综合网在线| 日本精品人妻无码77777| 99热这里| 五月激情小说| 婷婷深爱五月天| 久久99综合| 色欲天天综合网| 婷婷无码视频| 五月婷婷色综图片| 伊人网大香| 色婷婷888| 婷婷五月天堂| 综合AV在线| 五月丁香激情综合啪| 丁香花五月天激情| 97干免费视频| 婷婷无码视频| 99热9999| 91丨九色丨大屁股| 亚洲sesesese| 丁香五月六月久久综合| 婷婷五月四狠狠| 五月丁香六月激情综合网| 激情丁香五月天综合| 那里有AV网址| 婷婷激情五月天天天开心| 婷香五月网在线| 99热精品在线播放观看| 色婷婷国色天香综合| 亚洲九九九九| 蜜桃婷婷丁香| 99re鈥哸鈥唙| 激情深爱五月天| 99热丁香| 久久激情五月| 丁香五月性| 国产乱妇无乱码大黄AA片| 亚洲精品久久久久久久久久飞鱼| 99ER热精品视频| 五月丁香婷婷欧美色图视频五月丁香777电影 | 夜夜资源站| 久99热| 久久99综合| 98国产精品综合一区二区三区| 亚洲偷| 五月丁香婷婷色播无码| 九九综合网色全集 | 99热观看| 91九色小视频| 色婷婷电影网| 婷婷激情综合无月| 亚洲综合狠狠艹| 色五月天在线观看| 99在线视频精品| 中文字幕 中文字幕明步| 日本精品久久久久中文字幕| 影音先锋五月婷婷| 91视频久久久| 91碰碰碰| 天天综合天天玩夜夜玩天天玩夜夜玩 | 九九热10| 开心五月综合| 99这里只有精品| 六月综合婷婷开心伊人| 国产五月视频| 激情亭亭五月| 天天激情5月天亚洲| 操日本人妻视频| 五月婷婷丁香婷婷| 亚洲精品大片| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | av网站不卡在线| 色婷亚洲五月丁香| 九九热这里只有精品556| 精品成人无码A片观看香草视频| 中文字幕永久免费| 婷婷五月情色| 深爱激情五月网| 五月婷婷丁香五月| WWW色色色COM| 一逼色综合| 99久久综合精品五月天| 婷婷九月在线| 九九热精品视频在线观看| 99操网站| 欧美色五月| 另类综合网| 五月天啪啪视频| seav天堂| www.99热在线观看| tingtingzonghewang| EEUSS鲁片一区二区三区| 亚洲va成人va成人va在线观看| 午夜成人av在线| 中文激情网| www.激情五月天| 99热最新| 北条麻妃伊人| 九九色中文| 九九视频这里有精品| 婷婷婷婷婷婷婷五月丁香| 伊人喵咪a V| 色5月婷婷| 激情丁香六月| 久久激情综合| 日本在线观看91| 深爱 五月天| 99热在线观看免费精品| 深爱五月婷婷| 五月久久婷婷天堂视频| 狠狠操.COM| 中文字幕在线免费观看视频| 丝袜熟女一区二区三区| 色热久资源| 99综合| 日韩欧美不卡| 欧美色婷婷| 日本婷婷| 亚洲成人AV高清字幕| 久久婷综合| 天天日夜夜曹| 亚洲乱码日产精品BD| 婷婷永久在线| 丁香五月Av| 666555。COm毛片| 五月婷婷色| 超碰人人91| 丁香六月婷婷激情| 色婷婷五月天激情久久| 婷婷五月综合色拍| 热久91| 婷婷五月天亚洲天堂| 激情五月天视频| 久久九九婷婷| 激情婷婷综合五月少妇| 丁香五月天啪啪| 色五月天激情| 日本视频99| 五月狠狠| 99热这里只有精品55| 六月婷婷日| 大香蕉婷婷丁香天堂AV| 两性婷婷丁香五月| 久久奄也去色色网站| 99久久久久| 2014天天爽| 天天影院色| 影音先锋按摩| 色五月六月| 97人人射| 99精品在线| 婷婷五月综合在线| 色一情一乱一乱一区91Av| 91久久久久久久久久久| 成人av在线电影| 99热在线精品播放| 99热综合网| 国产精典视频在线观看| 色婷婷亚洲| 婷婷综合五月天| 在线99热| 综合亚洲六月婷婷在线| 久久激情网| Xx色综合| 99热精品免费| 欧美久久五月婷婷| 伊人在线视频| 九九操综合网| 99久久综合狠狠综合久久| 99日这里只有精品| 五月婷婷综合色啪首页| 美女五月天| 99视频在线观看网址| 六月撸婷婷| 久月婷婷| 天天爽天天操| www.夜夜夜| 亚洲日韩久久婷婷伊人| 另类激情网| cao久久| 天天噜日日噜综合无码| 思思99热这里只有精品| 97色婷| 另类图片 五月激情| 9九九久久精品无码专区| 色五月丁香网| 991国产精选视频在线播放下载| 99热国产精品| 密黄站| 国产,欧美,学生妹,视频| 日本久久爱| 国产精品电影网| 九九这里都是精品| 激情五月丁香色婷婷| 亚洲va久久久噜噜噜久久天堂| www.minyis.com【JT】实力收量可预付QQ2101460746 | 玖玖色综合网| 热九九精品| 五月丁香五月天现场视频| 久久丁香婷婷色情综合| 182TV大香蕉| ay2区| www五月婷婷88导航| 深爱婷婷网| www色婷婷| 国产乱子轮XXX农村| 天天做天天爱天天要| 五月丁香 啪啪| 亚洲视频一区| se影音资源在线观看| 久久免费9| 香蕉久久av一区二区三区| 色婷婷激情五月天| 91人人操.COM| 亚洲日韩一页精品发布| 久久黄色片| 久色网| 久久婷婷老| 九热视频在线精品15| 99这里只有精品视频在线| 丁香操逼| 91综合在线| 久热AA| 欧洲综合色| 超级碰碰碰碰视频| 九九成人| 天天日,天天射,天天舔| 日韩在线视频网站| 亚洲精品又粗又大又爽A片 | 婷婷五月色天| 天天舔夜夜操www com| 热婷婷久| 婷婷激情六月| www.久久av.com| 国产精品大香蕉| 久久五月丁香综合| www久久久| 少妇人妻综合色6699| 亚洲色综合| 偷拍99在线视频观看| www,天天干| 五月天天爽| 99热热九九| 青青草原伊人网| 极品人妻VIDEOSSS人妻| 欧美色九| 丁香五月网在线观看| 激情性爱五月天| 婷婷五月综合社区在线| 中文字幕 中文字幕明步| 久久黄色片| 99在线观看精彩视频| 大香AV| 91中文狠狠综合| 久久激情综合| 精品亚洲VA网站| 9999热精品在线免费播放| 成人视频在线免费播放| 成人五月丁香花| 九月色婷婷| 精品色| 午夜九九电影| 91热爆在线| 9热在线视频精品| 99色爱| 热99在线| 国产亚洲精品久久一区二区三区| 婷婷激情六月中文| 九九碰九九爱97超碰| 久久嘟嘟丁香| 天天干在线播放| 开心激情婷婷| 影音先锋91| 无码网站视频| 97色五月天| 丁香五月亚洲激情婷婷射| 97婷婷丁香五月天激情图片| 国产一级视频a| 天天撸夜夜爽| 五月天激情综合网俺也去| 成人一区在线观看| 色网五月婷婷| 99久热| 久久五月丁香婷婷| 天天色天天操天天射| 国产片色| 色日本丁香婷婷| 国产免费一区二区在线A片视频| 激情综合在线播放| 五月天大香蕉婷| 久久艹 五月天| 婷婷六月天| 六月丁香五月婷婷|