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

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| 九九激情网| 噼里啪啦完整版中文在线观看| 丁香 婷婷五月| 婷久久高清| 中文av网| 六月色五月天天婷婷| 五月丁香最新| 丁香五月激情综合| 日韩高清成人| 999影院成人在线影院| 97久久草草超级碰碰碰| Av在线资源| 天天狠天天叉| 亚洲、热| 亚洲俩性性爱图片久久第六页| 97碰碰叉| 俺也去五月婷婷丁| 日本一级特黄大片AAAAA级| 人人草成人视频| 五月婷婷亚洲天堂97色婷婷| 日本欧美成人片AAAA| 色五月婷婷影院| AVV黄| 婷婷六月色| 欧美在线视频免费播放| 深爱五月网| 久久只有精| 超碰京东热av男人的天堂| 婷婷丁香五月亚洲| 久9热| 一本综合丁香日日狠狠色| 丁香五月另类色婷婷麻豆| 青青草免费公开视频| 色播播五月天| 97色啪| 狠狠操.COM| 深爱五月月天| 久久久久久久综合狠狠综合| 综合激情五月丁香| 国产精品久久久99视频| 金桔一区二区ab地址| 综合亚洲AV| 少妇被躁爽到高潮无码文| 97色97干| 中文字幕在线日亚洲9| 丁香五月激情综合啪啪| 啪到高潮激情丁香五月| 婷婷操婷婷干婷婷射| 天天成人综合视频| 天天综合干| 97人人干| 丁香婷婷人妻综合网| 中文AⅤ大全| 粉嫩AV久久一区二区三区| 99∨VTV| 丁香色婷婷| 激情九九这里只有精品| 99色亚洲| 97人人操| 五月婷婷六月丁香| 色偷偷五月天| 国产精品18久久久| 久久九九热38| 欧美色必爱| 丁香六月婷婷久久综合| 色婷婷丁香五月| 天天拍天天操| 影音 五月 婷婷 久久| 色五月情| 密视AV综合在线| 大鸡巴伊人网| 五月色婷婷影院| 在线99精品| www.com任你艹| 婷婷狠狠操| 激情久久 婷婷| 超碰人人99| av最新在线| 色色色色色色色色色色色色色五月天| 色色五月天网站| 色五月成人| 久久五月婷| 青青草性爱视频| 五月丁香婷婷六月| 97高清国语自产拍| 色欧美影院| 丁香五月色网| 婷婷五月开心中文字幕在线| www.五月天。com| 79精品视频| 婷婷丁香色无五月| 久热这里| 99精品视频推荐| 9l视频自拍9l九色成人| 天天摸天天高潮天天爽| 亚洲综合草草| 国产午夜成人免费看片无遮挡| 婷婷丁香激情五月天色色色| 色婷婷9| 99热这里只有精品10| yazhouzonghesese| 天天精品视频免费观看| 九月av在线| 色欲九区| 婷婷十月激情综合网| 97人人做| 991自拍视频| 色婷婷伊人激情在线观看| 99婷婷色| 婷婷色色网| 五月丁香六月色| 婷婷五月成人有| 婷婷五月激情的图片| 色狠狠色综合| 欧美激情性做爰免费视频| 婷婷丁香六月天激情四射网| 五月天·www·com| 九热精品| www.五月婷婷.com| 五月天婷久精视频| 激情综合文学| se99高清无码| 天天操B| 国外亚洲成AV人片在线观看| 色噜噜狠狠色综合网| 婷婷丁香六月影视| 婷婷丁香18| 日韩AV成人电影| 九九九精品视频免费观看| 深爱激情网五月天| 偷拍丁香九月激情| 五月天影院婷婷在线观看| 操日视频| 国产精品人妻在线网址| 深爱激情婷| www五月| 日韩高清成人| 亚洲啪啪网| www.色五月.com| www.91五月| 日韩中文欧美| 色六月婷婷| 三级大香蕉网| 精品一区久热| 天天色,天天日,天天做| 色播激情| 五月天婷婷激情综合| 第四色五月婷婷| 丁香五月AV| 538任你爽视频不一样的| 五月激情精品视频| 无码免费人妻A片AAA毛片西瓜| 超碰人人操在线| 狠狠草综合网| 爱狠射| 森林影视大全,最好看的2019年视频 | 日韩无码成人电影| 五月婷在线视频免费播放| 丁香六月天| 欧美va精品va老师va| 亚洲日日日| 在线中文字幕免费视频| 色99网站| 日韩一区二区A片免费观看| 蜜臀A∨在线水帘洞| 五月婷婷中文字幕| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 99热午夜精品| 99热在线精品播放| 午夜丁香| 婷婷视频网| 亚州色婷婷| 综合婷婷五月天| 亚洲婷婷久久综合| www.夜夜操| 五月天快乐开心激情网| 亚洲岛国电影| 亚洲成人AV在线播放| 亚洲综合视频网| 97久久草草超级碰碰碰| 思思热在线视频观看精品| 99ri视频| 六月丁香婷婷在线波多| 日本三级日本黄色| 人人澡玖玖一| 丁香五月综合高清在线| 91性交在线播放| 丁香婷婷六月在线资源观看| 99人人干人人| 国产精产国品一二三在观看| 五月婷婷亚洲| 欧美激情xxxXX| 99超超碰| 色色婷婷丁香| 五月婷婷说| 亚洲啪啪网| 九九热视频这里只有精品| 五月丁香婷婷AV天堂| 成人国产欧美大片一区| 人妻激情综合| 丁香色综合| www.com亚洲网站在线免费| 午夜免费试看| 欧美人人草| 99热这里有精品首页10| 97干干干丁香| 婷婷五月六月| 婷婷区日本| 丁香五月很很肏| 色色亚洲五月天| 99热99这里有免费的精品| 区啪精品| 99精品网| 狠狠色婷婷777| 丁香婷婷久久老熟女综合网| 五月婷婷无码| 婷婷五月天AV在线| 一区操| 婷婷激情四射| 婷婷五月丁香超碰| 久久人妻在线| 99ri精品| 激情婷婷九月| 九九热这里只有精品9| 六月色播| 久久色亭亭五月天| 人人爽欧美婷婷久久久五月丁香| 欧美熟女乱又伦| 成人婷99最新| 国产成人在线不卡AV| 亚洲国产精品VA在线看黑人| 久久草中文日韩欧美| 激情婷婷五月黑人| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 无码色色| 丁香五月综合福利视频导航| 伊人婷婷青青cao| ou洲色吧| 超碰在线个人观看| 9热超碰| 99A片| 午夜九九九九九九九九九九九九九| a69在线视频| 丁香婷婷色| 九九热青青草| 亚洲免费电影2| 日本熟妇乱妇熟色A片蜜桃| 天天色综网| 五月天六月婷婷| 人妻内射麻豆视频| 97福利视频| 一二区成人电影| 国产AV成人精品| 亚洲精品久久久久AV无码| 久99久热| 99九九精品| 丁香五月婷婷基地| 久久色五月| 99热8| 日本成人噜噜噜| 久久久久思思热| 精品久久久久久久久久久久人妻| 热99只有里视频| 五月激情偷拍婷婷| 99成人小视频| 天天色视频| 五月激情啪啪| 人色五月天婷婷| 五月婷婷六月丁香综合| 色9999日韩国产| 亚洲综合一区二区| 激情AV| 欧日韩成人| yellow视频在线观看91| 婷婷五月天受日本法律保护| 九九综合九九| 成人必爱视| 亚洲色色在线| 婷婷精品综合| 亚洲啪啪视频| 久草热久草在线视频| 五月激情在线| 中文不卡av| 欧美熟女视频 色婷婷| 婷婷狠狠综合网入口| 婷婷五月天 丁香五月天 裸体| 亚洲三A| 婷婷丁香综合网| A久久| 九九热免费视频| 成人做爰黄A片免费看直播室男男 A片试看120分钟做受图片 | 五月天sesese| 日韩野外 无套| 无语停婷丁香网| 超级97碰碰| 色偷偷人人| 69精品人人人人人人| 2020日日干| 婷婷久久五月天| 五月天色婷婷视频| 中出内射的人妻视频| 天天舔天天摸天天透| 五月激情六月综合| 天天做天天爱| 五月丁香婷婷啪啪网| 思思99久久| 亚洲国产色婷婷| WWW五月婷婷| 激情婷婷丁香色五月| 99热8| 性综合网| 97碰成超视频免费视频| 丁六月激情| A色色| 亚洲成人AV在线播放| 91九色首页| www99精品在线观看| 大香蕉久久久| 五月婷婷开心综合| 婷婷丁香六月天| 色播五月丁香综合| 青青草婷婷综合五月| 亚洲色婷婷五月天| 影音先锋自拍网| 丁香婷婷五月综合影院| 巴基斯坦粉嫩无码视频| 91狠狠综合久久久久久| 色吊操色妞| 色五月婷婷婷婷婷婷婷婷婷婷| 亚洲综合在线丁香五月| 久久婷婷色| 九九中文字幕九| 综合激情五月综合激情五月激情1 天天爱天天做天天舔 | 97婷婷狠狠久久综合9色| 97人人看一| 国产伊人五月天| jiZZdr| 日日影院 | 91尤物九色在线| 久色网五月| 97五月天| g00d人体西西| 色小说五月天| 久久九九99.www| 久久五月人人摸| 色婷婷888| 久久久色情| 日本综合久久| 日本精品99| 国产熟妇乱子伦hd| 色99综合视频| 一本大道伊人AV久久综合| 丁香九月婷婷综合| 欧美影院婷婷| 激情九月婷婷| www色色com| 99热99操| 欧日韩成人| 色吊丝中文字幕| 26UUU在线观看| 狠狠色狠狠| 性爱五月婷婷| 无码动漫av| 牛牛色av| av网站中文| http:色情日本com| 五月丁香婷婷综合在线| 五月激情小说| 91久久婷婷| 97操操操| 色欲婷婷夜夜| 五月丁香六月片| 九九色99| 五月丁香趴趴| 久久精典| 久久婷婷五月国产色综合激情| 9久久精品| 99操99| 国产亚洲在线观看| 亚洲激情 久久| 色色色999| 激情六月丁香综合| 综合久久丁丁香婷| 丁香色婷婷| 婷婷综合另类| 91一起操| 欧美va| 熟女强人妻一区二区三区四区无| 午夜美女人啪最红院| 极品少妇XXXX精品少妇偷拍| 亚洲天码视频www蛋播视频| 色色色丁香| 欧洲亚洲精品| 偷偷操99| 婷婷五月色色| 97在线综合| 另类专区在线观看| 亚洲精品国产精品乱码不99| 亚洲有码在线视频| www.狠狠操| 丁香五月婷婷成人综合| 97操| 欧美韩国日本| 思思热在线观看| 99色色热热| 人妻丰满精品一区二区A片| 欧美久久婷婷| 激情AV| 极品人妻VIDEOSSS人妻| 六九色综合婷婷五月天| 另类五月婷婷| 婷婷成人在线| 思思热精品在线| 五月天激情日色在线| 九月av在线| 99爱爱| 六月天六月婷| 婷婷伊人网| 免费看欧美成人A片无码| 丁香婷婷色五月| 色情五月丁香| 久色大香蕉| 亚洲免费婷婷| 狠狠高潮精品亚洲1| g00d人体西西| 日韩艹比| 99欧美| 婷婷色激情五月天| 欧美日比视频| 成人视频免费观看高清完整版在线观看| 五月丁香欧美综合| 99这里有精品视频视频| 99视频这里有精品| A一级操| 欧美日本97| 婷婷五月影院| 色情五月婷婷| 国产精品美女| 天天操夜夜橾| 人妻VideOssS人妻| 天天在线久久综合| 亚洲激情亚洲激情| 色综合久久88色综合天天99| 自拍视频在线观看9| 亚洲综合九九| 色色色综合网| 性欧美日本| 色情综合网| 婷婷伊人久久| 操日本三片99| 亚洲精品**不卡在线播he| 91一起操| 激情五月天影院| 这里只有精品视频一区| 五月丁香综合精品| 五月婷婷色男女| 色99视频| 99热欧美| 婷婷丁香社区网| 久99久视频免费观看| 31色区视频免费看| 亚洲婷婷综合视频| 色婷婷小说| 另类激情中文| 久色资源| 婷婷五月在线观看| 久久综合五月天| 久久精品人妻| 色五月五月婷婷| 色色五月丁香| 天天色天天| 99色性爰网络| 99日韩| 丁香五月成人社区| 亚洲色婷婷| 婷婷丁香五月激情| 五月婷婷中文网| 日日干干天天干| 色婷丨日丨天丨综合久久| 性爱动图国产麻豆一区二区三区| 五月天婷基地| 五月丁香成人| 天天草比天天爽| 五月丁花六月丁香综合| 欧美日本黄色| 色9999日韩国产| 婷婷99狠狠躁天天躁| 五月天大香蕉| 99综合五月免费视频色婷婷| 国产精品岛国片在线观看免费| 激情婷婷网| 丁香五月最新地址| 色七色九九| 欧洲激情五月天| 五六月丁香激情视频| 午夜电影网VA内射| 99色热视频| 影音先锋777xfplay色资源网站| 激情综合激情五月一起草| 99免费在线| 91免费看片| 九九久久网| 国产又黄又爽又色的免费| 九九XX视频| 五月婷婷九九久久| 久久er这里只有精品| 五月丁香999| 国产精品日韩十五区| 久久综合五月天| 丁香五月婷中字幕| 狠狠搞狠狠操| 九九无毛| 丁香五月在线人妻| 激情99在线视频| 色玖玖综合网| 五月丁香本色在线观看| 天堂色婷婷| 狠狠色丁香99| 婷婷97碰碰| 日本三级韩三级99久久| 久久国产高清| caopeng超碰| 天天做好综合色| 日日操日日撸| 9九九久久精品无码专区| 97热九九| 婷婷激情五月综合丁| 天天操中文字幕| 四川BBB搡BBB搡多人乱亂| 九热视频精品| 精品久久久久久久久久久久人妻| 国产欧美第五十五页| 草了bav视频在线观看| 成人在线日韩欧美| 五月丁香色婷婷熟女| 婷婷五月天奸女| 99丁香婷婷综合网| 再次出发二| 五月天婷婷综合| 日本人妻伦在线中文字幕| www久久艹| 精品人妻久久久久久久| 99热这里都是精品| 九九99热| 四色AVwww| 欧美成人精品三区综合A片| 第四色网婷婷| 狠狠干综合网| 大色鬼综合| 激情五月综合网| 婷婷日欧美在线观看| 超碰在线观看三级片| 一级黄色操B| 成人网站在线观看视频| 色五月丁香伊人五月| 超碰碰碰碰| 91久久精品无码一区二区三区| 天天谢天天操| 久久婷婷五月综合| 丁香五月激情综合| 国产 亚洲 在线| 超碰在线网站| 五月婷六月| 天天操夜夜操| 九九九九国产| 99视频精品全部观看10| 国产婷婷色综合AV蜜臀AV| 婷婷久久免费| 在线观看av网站| 少妇婷婷五月天| 亚洲欧美999| 天堂二区| 色久五月天| 任我干视频在线观看| 五月丁香激情综合网官网| 丁香五月伊人| 影音先锋xfplay资源男人网| 99碰碰| 天天日日人| 亚洲热综合| 精品无码av丁香五月激情| 欧美色色色色色色色色色色| 六月撸婷婷| 天天综合五月天| 狠狠久久婷婷| 五月婷婷啪啪网| 99re视频在线播放| 俺去也婷婷| 五月丁香成人| 欧美色五月| 99 色色吧| 亚洲亚洲人成综合网络| 另类国产综合| 91超级碰人人操| 国产亚洲色婷婷久久99精品91| 九九偷拍网| 婷婷操超碰| 思思热天天看| 色色色色欧美| 亚洲婷婷免费| 久久婷婷五月| 狠狠插.com| www.亚洲激情| 99熟女啪啪视频| 久久性爱视频| 先锋男人99资源| 男同色五月开心五月激情五月| 色播激情五月天| 嫩草视频。| 超碰在线观看9| a色色片| 成人在线精品| 狠狠色五月| 久久图色4| 91欧美| 狠狠色狠狠鲁| AV网址大全在| 开心激情综合| 五月天成人综合| 婷婷五月色花丁香社区| 啪啪操操| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 五月天婷婷在线AN| 色综合综合网| 国产成人在线精品| 欧美情色电影一区二区| 久久久天天啊| 五月婷婷色丁香| 亚洲九N| 九九色播五月丁香| 操逼在线视频| 色V狠狠的干| 日韩综合成人| 99热啪啪| 99性色| 五月丁香啪啪啪啪| 色五月婷婷丁香凹凸| 色激情综合| 婷婷亚洲五月丁香综合在线| 色哟哟www| 蜜臀久久99精品久久久久久酒店| 大香蕉婷婷色| 激情丁香五月天图片| 婷婷中文综合网| 538在线精品| 色色AV色色色东莞| 青青草六月丁香| 激情AV| 五月激情综合性爱| 99色在线观看视频者| 欧美交换配乱吟粗大25P| 九月婷婷久久久| 日本色五月婷婷| 久热这里只有精品视频免费观看| 色婷婷丁香五月天激情综合网| 久久66er久久| 思思99热热热99| 狠狠爱综合| 亚洲视频操| 一级二级色大片| 五月色丁香婷婷综合| 久久99人人| 亚洲欧洲中文日韩久久AV乱码| 色五月六月| 超碰亚洲天堂| 色色网站在线| www久久99| 久久婷婷五月天| 这里只有精品免费视频| 欧美婷婷五月丁香| 97人人操人人干| 天天综合精品| 五月婷婷激情综合| 国产欧美精品AAAAAA片| 日本不卡一区二区三区| 变态 另类 在线| 青青草青青草五月天| 精品一区久热| 超碰京东热av男人的天堂| 色开心五月丁香| 99草视频在线观看| 大香蕉五月天婷婷丁香91| 一区二区免费看| 欧美久久婷婷| 国产阿姨日皮艹逼内射视频| 日韩六六久久电影| av人人干| 五月丁香色色网| 东京热免费视频| 97色五月婷婷在线| 色五月婷婷激情基地| 九洲一级A片| 久鲁鲁色网| 91啪级电影| 91精品久久久久久综合五月天| www.婷婷五月天.com| 欧美影院婷婷| 国产古装妇女野外A片| 婷婷99狠| 超碰在线人人| 翔田千里无码| 丁香六月激情| 久久婷五月天| 成人视频免费观看高清完整版在线观看| 婷婷久久影院| www。88热在线视频免费观看| 婷婷五月天男人影院色色网| 99碰网站| 久久人妻少妇嫩草AV| 超碰色天堂| 五月婷丁香花| 色色色网站| 婷婷五月色花丁香社区| 五月综合六月婷婷| www.99久| 99热在线极品极品| 激情综合五月天| 激情二色月| 91丨九色丨熟女|老版| 国产69久久久欧美黑人A片| 天天婬色综合| 欧美日韩一a.无| 六月婷婷久久大全| 亚洲色婷婷| 亚洲视频1区| 99热99成人| 99热久| 99久在线精品99re8热| 亚洲视频在线网| 激情五月天综合网站网站网站| 黄色激情五月天| 玖玖婷婷五月天| 日韩久综合| α久久| 国产激情视频在线观看| 一本九九色| 99re这里只有精品视频6| 高清无码网址| 91九色偷拍| 99丁香五月婷| 九九RE视频在线精品| 中文字幕av网站| 这里只有在线精品| 五月天婷婷基地| 婷婷影院欧美| 久久开心五月婷婷| 国产人妻人伦精品一区二区| 成人AV免费观看| 深爱五月婷婷| av五月丁香| 亚洲一区二区无码蜜乳av| 人人播| 久操大| 日本丁香五月| 黄色短视频在线观看| 天插天啪天啪天啪| 777影视理论片大全在线观看| 色综合激情| 99在线免费视频| 久久九九婷婷| 泰州成人视频| 色色丁香五月天社区| 这里只有精品视频在线看| 免费观看全黄做爰的视频| 9九热视频| 婷婷六月啪啪| 99视频超级精品| 婷婷色五月天在线| 99久久精| 天天日天天爽| 久久婷婷丁香五月一二三| 无码任你操| 99热9| 五月婷婷影| 成人av免费观看| 色色五月丁香婷婷| 97中文在线| 色综合色| 五月丁香爱婷婷深深| 99爱在线视频| 综合狠狠伊人| www色婷婷| 婷婷的五月天另类视频| 538在线精品| 久色网五月| 亚洲9久久精品| WWW.婷婷| 日本一级特黄大片AAAAA级| 九九re精品视频在线观看| 九九99九九99九九99视频网| 超碰AV在线| 激情六月丁香综合| 电影91久久久| 国产精品色婷婷AV综合色色| pom538精品视频| 中文字幕在线免费| 五月婷六月综合在线观看| 99在线精品免费视频| 亚洲、热| 色色日本欧美| 久久这里只有精品8| 色狠狠伊人久久五月丁香| 亚洲亚洲人成综合网络| 全国最新疫情| 大胆伊人久久| 久久99网站| 五月亭亭激情综合| 丁香色五月AV在线| 色色A| AV国产有码| 午夜丁香六月婷| 色五月婷婷五月| 欧美综合激情五月| 色五月婷婷影院| 婷婷99狠狠| 亚洲激情精品| 色婷五月| 色婷婷很很十八禁| www,色婷婷| www.精品99| 丁香五月激情欧美| 啪啪啪综合网| 丁香色五月天| 日本本土色网第一区| 国产黄色大片| 狠狠干,狠狠操| 婷婷五月天在线观看第二页| 午夜色婷婷| 中文字幕人妻一区二区| 超碰chaompinm| 六月婷婷国产| 婷婷九月| 99热精品网| 日产精品久久久久久久蜜臀| www.色五月| 亭亭色天香| 九九热av| 九九精品婷| 免费视频WWW在线观看网站| 九九激情| 色色亚卅| 婷丁香久综合| 123草逼网| 狠狠色综合五月人人| 成人AV在线电影| 成人丁香婷婷| 亚洲无码成人性爰网| 亚洲综合色色| 狠狠九九婷婷韩| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 婷婷丁香91| 无码AV免费精品一区二区三区| 5月婷婷6月六月丁香| 婷婷丁香一月| 五月色在线| 99玖玖在线视频| 国产九月婷婷| 八戒青柠影视剧在线观看| 久热综合| 五月狠狠| 天天爽,夜夜爽| 日夜夜天天| 五月丁香六月情| 青草五月天| 激情五月婷婷在线| 丁香五月宝贝激情网| 欧美激情综合| 成人综合AV| 婷婷亚洲久久| 丁香五月天社区婷婷| 91精品激情9| 五月丁香久久| 久久久久9999| 国产精品久久久久久白浆色欲| 五月丁香婷婷综合| 色婷婷五月在线| 日日夜夜小色哥| 婷婷五月丁香基| 99热成人精品| 婷婷日在线观看| 久久久网站| 亚洲av免费在线| 香蕉狠狠爱视频| 天天综合网91| 国产操碰| 色吧综合网| 99 热国产在| 精品久热| 成人深爱丁香五月| xxxx五月| 啄木鸟黑丝一区二区| 日韩一区二区三区无码| 激情伊人五月婷婷久久| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 99成人精品六| 亚洲瑟瑟精品在线| 第一区久久网站| 伊人婷婷五月天av| 午夜做爱影院| 射久久丁香五月| 亚洲AV网站在线观看| 欧美日韩123| 四色永久成人网站| 五月天激情网图片| 做爰丰满少妇1313| 久久人人添人人爽添人人片αV| 热99视频精品在线| 日韩有码一区| 九九久久高清| 五月丁香婷婷色色| 天天操夜夜夜夜爽| 婷婷六月天激情影院| 久久婷婷六月综合| 亚洲AV日韩无码| 99re6久热只有精品6在线直播| 久久免费精彩视频| 丰滿爆乳一区二区三区| 岛国资源站| 97久久久| 99爱最新免费视频在线观看| 婷婷五月天成人小说| 色天堂在线| 性色播| 天天日天天做天天操| 五月丁香婷婷欧美| 夜夜爽天天爽| 九热网站| 99热在线精品播放| 丁香婷婷少妇| 色婷婷六月| 夜夜爽天天爽| 婷婷色网址| 97色片| 五月丁香六月色情网欧美| 激情99在线视频| 97操操操| 97色精品视频| 久久综合爱| 丁香五月婷婷骚视屏| 婷婷激情九月| 亚洲 在线 另类| 国产三级片91| 五月丁香激情综合六月涩涩爱| 爱草人视频| 99色在线观看| 日本欧特黄色刺激一区影视久精品无码| www激情| 丁香五月亚洲| 九九这里有精品| 久久日曰| 日韩成人五月天| 婷婷狠狠97| 91男人操女人视频| 99ri国产| 五月天综合在线观看| www久| 99超碰在线观看| 丁香五月激情六月| 亚洲AV网站| 亚洲天堂有码| 亚洲久久婷婷丁香五月天| 五月天婷综合| 中文字幕不卡网站| 久久欧洲久久| A在线观看| 91精品刘玥| 99色看这里只有精品| 婷婷五月香蕉| 色婷婷色和| 亚洲无码成人性爰网| 五月色影院| 婷婷五月天中文字幕| 五月综合影院| 国产精品色色| 91精品婷婷国产综合久久| 激情五月天伊人av| 午夜天天精品视频| 台湾综合丁香五月蜜桃| 色婷婷AAA| 婷婷狠狠97| www,av好吊操| 乱乱av| 婷婷亚洲五月丁香综合在线 | 99热色精品| 九九99精品视频| 激情五月丁香亭亭| 影音先锋91视频| 亚洲偷| 综合逼五月激情婷婷| 激情五月天 婷婷| 婷婷五月AV| 99在线免费视频| 婷婷久久色| 99青青草| aaa久久久| 亚洲女婷婷五月基地综合久久久| 婷婷精品| 五月天天天操天天爽夜夜操| 五月天婷婷激情在线色图| www.91.com黄| www.99婷婷| 97香蕉久久超级碰碰高清版| 色色日本欧美| 久久婷婷五月激情综合| 开心激情网五月天| 久久99三级在线视频| 人。妻久久| 涩 五月 婷婷 狠狠| 99热这| 色九月综合网| 青青草五月天| 婷婷丁香五月天影院 | 91精品久久久久久久| 亚洲AV日韩无码| 97在线综合| 99精色| 丁香五月网络网络| 夫妇交换刺激做爰| 色小说五月婷婷| 在线观看视频1区| 国语精品探花| 中文网婷婷字幕婷| 91成人电影| 日韩婷婷| 五月丁香色婷婷| 婷婷天天综合| 丁J香六月首页| 狠狠操天天干| 婷婷激情性爱| 色狠狠综合| 丁香婷婷偷拍| 99天堂在线观看免费视频| 亚州操人在线视频| 久久99精品久久久久久噜噜| 丁香六月综合激情| 色综合播放| 色爱爱综合网| 五月天综合激情网| 91精品电影18T| 欧洲综合一区| av在线激情| av婷婷丁香 六月| 亚洲无码影音| 婷婷五月天网址| 丁香六月婷婷一区| 大香蕉久久综合网| 色欲久久久久久综合网综合网| 亚洲综合激情五月久久| 538在线精品| 99re8在这里只有精品| 婷婷色导航| 午夜伊人大香蕉| 色五月五月天色婷婷色五月| 99视频这里只有免费精品| 人人妖人人97| 久激情网| 色五月婷激情| 亚洲操逼片| 26uuu另类亚洲欧美日本一| 97碰碰视频| 97天堂| 精品乱码久久久久| 五月天婷婷基地丁香| 色9999综合久久| 九热视频| 国产VA亚洲VA96| 99这里有精品久久97| 激情五月天.色网| 亚洲六月色| 色爱五月天| 97色色色视屏| 激情图片99| 爱爱网址9| 成人亚洲精品| 免费视频这里只有精品| AV大香蕉| 99re视频在线| 国产熟妇的荡欲午夜视频| 九九在线视频| 色婷婷五月综合在线| 99 re视频一区| 五月激情婷婷偷拍| 超碰国产在线| 六月丁香啪啪啪| 99热在线观看精品| 99热成人精品| 色碰碰| 日本丰满久久| 曰韩少妇内射免费播放| 丁香九月婷| 五月天婷婷社区| 天天日天天做天天操| 激情桃色网| 色婷婷av在线| 美国不卡视频| 丁香五月婷婷av影院| 丁香在线视频| 色综合久久88色综合天天99| 色五月第四色| 激情五月丁香在线观看直播| 婷婷五月天成人导航| 国产成人在线不卡AV| 4399在线观看免费高清毛片| 亚洲电影在线观看| 欧美操人| 天天日天天插| 色色99| 丁香色六月婷婷| 五月丁香亭亭| 婷婷婷婷婷开心无码播放| 日韩AV色色色| 伊人国产婷婷五月天| 亚洲激情免费久久| 金桔一区二区ab地址| 婷婷五月激情图片| 在线资源av-超碰中文在线-成人AV| 麻豆忘忧草午夜| 久久婷婷丁香花综合网| 天天射影院| 丁香五月天视频| 99超级碰免费视频| 激情六月婷婷| www狠狠| www色色com| 色色色欧美| 久久激情综合| 操人91| 五月婷婷激情| 国产美女无遮挡裸体毛片A片| 激情小说五月天| 99热这里只有精品9| 久热久| 性av| 丁香激情综合| 日本在线观看aaa 99| 97操碰日本女人| 超碰在线播放免费观看| 69久热| 丁香五月AV| 超碰91av| 婷激情五月天视频导航| 国产日韩欧美性生活| 婷婷五月情色| 婷婷深爱五月丁香网| 无码色色| 丁香五月婷婷六月丁香| 色99日韩| 精品人妻一区二区| 欧美性猛交 XXXX 乱大交| 天堂伊人干| 丁香婷婷综合喷| 182TV大香蕉| 97色碰| 亚洲欧洲自拍图片专区五月天| 婷婷五月天手机版视频| 婷婷综合色播网| 天堂综合久| 免费亚洲婷婷| 成人网在线观看视频| 九九精品re免费视频| 久久婷婷丁香| 久久婷婷激情五月天一区二区| 色五月久久成人婷婷| 婷婷五月天六月| 99热这里只有精| 99免费| 三级av在线| www狠狠com| 久久婷婷五月国产激情综合片| 99视频精品全部免费观看| 97色色色| 蜜臀A∨在线水帘洞| 成人精品99| 免费婷婷| 大战熟女丰满人妻AV| 久久日韩婷婷五月| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 在线观看免费人成视频无码| 97人人操人人拍| 婷婷五月色综合| 婷婷色无码| 色婷婷五月天激情在线观看| 九月丁香| www.色色色com| 免费亚洲婷婷中文字幕| 开心五月婷婷在线视频免费观看| 99热只有| 国产精品久久久久久久久久| 色色影院黄大片| 77799热| 五月开心久久| 免费看欧美成人A片无码| 日本一级大片| 久久99激情五月天| 狠狠综合网| 色婷婷基地| 天天综合网~91| site:wpjngj.com| 丁香成人五月天| 精品国产乱码久久久久夜深人妻| 婷婷黄色五月| 久色视频首页| 日本激情91| 日韩中出视频| 久久五月视频| 亚洲无码yw| 久久婷婷原创视频| 激情五月天婷婷激情| 99热这里只有精品9| 91男同视频| 五月色情婷婷| 综合性爱网| 婷婷五月天综合久久日| 日韩欧美一区二区三区四区| 人人摸人人| 婷婷五月丁香综合网| 欧美婷婷六月丁香综合色| 天天综合精品| 婷婷六月成人| 丁香久色| 久久久免费精彩视频| 九九色天堂| 日韩十国产极品久久| 精品国产AV色一区二区深夜久久| 色玖玖综合网| 无码99| 97亚洲精品| 激情狠狠丁香月| 五月婷婷无码| 另类视频在线| 婷婷九月亚洲| 久久大香蕉伊人| 久热网站| 久热99中文字幕| 色五月婷婷开心| 99视频只有精品| 五月婷婷激情刺激| 久久9久| 久久狠狠干| 久99久99精品免| 操操操91| 婷婷五月天精品| 五月色亭丁香| 久热A| AV亚洲在线| 五月丁香欧美在线| 丁香婷婷天堂| 新激情五月开心五月婷婷五月丁香五月| 久久久97| 久久五月天激情婷婷| 色婷婷网| 丁香五月婷婷啪| 中文字幕在线日亚洲9| 久久综合激情五月天| 六月天婷婷| 欧美成性色| 狠狠干,狠狠操| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 婷婷色情五月| 久久ri精品| 狠狠色噜噜| 亚州色综合| 色婷婷在线视频|