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
返回資訊列表
伊人网大香| pom538精品视频| 丁香五月激情综合啪啪| 久久这里只精品66| 六月丁香综合| 丁香婷婷午夜| 182无码| 色五月天综合网| 五月婷精品| 蜜桃人妻无码AV天堂三区| 五月丁香六月婷婷的女人| 一起草无码| 激情六月婷婷| 99久热这里只有精品| 九色色| www.久久| 色欲av伊人久久大香线蕉影院| 少妇AB又爽又紧无码网站| 日本三级中国三级99| 五月丁综合在线观看| 69久久99精品久久久久婷婷| 伊人狠狠色婷婷综合丁香一区| 97人人干| 日本狠狠干| 丁香五月天堂网| www.五月天性.com| 色婷婷精品| 国产精品第一国产精品| 射婷婷中文字幕| 激情五月色婷婷| 天天插天天日| 五月婷婷色播| 五月丁香婷婷色色| 五月天com| 日本激情91| 色婷婷小说| 久久99久久99精品免观看软件| 色色色色色色色综合| 日本精品人妻无码77777| 91超碰九色| 久久精品系列| 99精品热| 日韩在线观看网址| 日本在线观看99| 99re在线观看| 99国产精品白浆在线观看免费| 五月丁香六月激情在线| 人妻久久久| www.99在线| 久久99久久99精品免观看粉嫩| 丁香色婷婷| 色噜噜狠狠插综合| 成人婷99最新| 97色碰| 大香网伊人久久综合| 影音先锋噜一噜| 五月丁香操婷逼| 久热 91| 狠狠色噜噜狠狠狠狠综合| 偷拍91九色| www.婷婷五月| 婷婷在线播放| www.色色色com| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 激情五月开心五月在线视频| AV 3P| www,五月天激情| 久久婷婷操| 亚洲色色色色| 九热精品| 无码成人播放器| Av免费网站在线| 久久香视频| 久久五月天激情婷婷| 人人操操| 亚洲精品操一操、噜一噜、摸一摸、爽 | 欧美三级巜人妻互换| 亚洲欧美在线观看| 亚洲成人网站在线| 亚洲国产成人裸舞| 97婷婷狠狠| 五月天成人综合| 五月丁香婷婷基地| 色一情一乱一乱一区9| 天天综合网~91综合网| 西瓜美女a片| 婷婷丁香18| 婷婷色在线观看| 激情综合亚洲| 99操免费视频| 99成人小视频| 天天爽天天爽| 夜夜大香蕉婷婷丁香| 五月香婷婷| 婷婷五月精品在线| 在线只有精品| 日韩人妻无码精品| 亚洲激情免费视频观看| 国精产品一区一区三区免费视频| www.91九色| 性 色 婷婷| 天天色宗合| 久久婷婷激情| 国产a视频| www.主妇. com| 丁香婷婷色五月天| 99精品偷自拍| www,五月天com| 五月天成人小说网| 一级视频网址| 国产精品色色色色| 婷婷综合网站| 亚洲激情av| 色婷婷丁香五月色综合网| 成人AV免费观看| 97碰碰久久| 色狠狠五月天| 丁香色五月天| 97色婷婷| 天天爽天天操| 丁香五月婷婷综合视频| 深爱激情五月网| 9伊人网| 色色aⅤ網| 99色综合| 97色干| 婷婷久久丁香| 欧美日韩五月婷婷| 99在线免费观看| www.色多多婷| 五月天婷婷色播在线网| 久久久久久人妻久久久久久久久久人妻久久久| 亚洲蜜桃精久久久久久久久久久久| 大香蕉久久婷婷| 天天免费日日夜夜夜夜| 亚洲AV成人精品网站在线播放| 色五月丁香总合网| 五月天婷婷基地| 狠狠久久婷五月| 人。妻久久| 97日本在线播放| 激情精品久久| 爽tv | 这里只有精9| 婷婷五月电影院| 激情骚五月| www.五月天。com| 丁香六月婷婷| 久久只这里有精品| 久久久噜噜噜操操操| 婷婷六月丁香色| 九九无码| 色五月婷婷久久| 午夜在线成人网站免费观看| 久久久这里有精品| 9久久婷婷国产综合精品性色| 五月丁香婷婷爱| 丁香 久久| 情色五月天网站| 亚洲综合1024| 亚洲亚洲人成综合网络| 五月天综合色| 成人短视频在线免费观看| 久热在线观看视频9| 五月丁香免费看| 丁香激情五月天| 丁香婷婷视频| 国产激情AV| 激情五月婷婷五月| 六月久久狠狠| 婷婷久久网| 激情综合亚洲| 婷婷五月在线视频| 夜夜躁狠狠| 欧美性猛交XXXX乱大交极品| 天天五月天综合网址| 亚洲激情五月| 婷婷五月天综合网| 中文av网站| 午夜爱爱网站| 久久性综合| 99爱在线观看视频| 亚洲国产精品成人免费一区久久久在线观看AAAA | 六月婷五月丁香| 日本不卡高字幕在线2019| 婷婷五月激情在线| 丁香九月婷婷| 97超碰在线观看免费| 99精品在线观看视频| 久久香蕉影院| 五月天激情黄色网址| 超碰在线观看99| 国产成人AV人人爽人人澡Va| av操一操| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 国产av第一专区| 五月婷婷六月丁香玖玖玫瑰91| 久热九九| bukadeavzaixian| 色色色999| 婷婷 激情 五月| 亚洲不卡123| 久久婷婷五月综合色奶水99啪| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 婷婷综合在线观看视频| 色9999日韩国产| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 久久婷婷五月天懂色| 五月丁香六月欧美综合| 超碰九九热| 中文字幕无线久必| 久久久天堂国产精品女人| 色综合99| 六月 丁香 视频| 99噜噜噜在线播放| www.91操| a九九热www| av一级棒av| 日本三级中国三级99| 色 五月俺去也| 99爱99操| 色婷网| 1024在线观看免费视频| 北条麻妃九九九国产精品视频| 五月丁香婷婷色色| 免费播放片大片| 天天干天天射色综合| 美女va| 精品女人九九九| 婷婷五月天成人视频| 激情五月婷婷五月| 天天爽夜爽| 91操片| 天天激情| 五月天婷婷丁香基地在线观看| 丁香婷婷人妻综合网| 97福利视频| 婷婷丁香www视频日本韩国| 99热在线观看| 国产AV一区二区三区最新精品 | 97精品人人A片免费看| 久久总和99| 天天精品视频免费观看| 色色色色色综合| 五月丁香激情欧洲啪啪| 五月婷婷性| 淫荡综合网| 婷婷五日b| 天天色天天爱天天舔| 久久婷婷五月国产激情综合片| 色在线99| 天天综合网、天天综合色| 狼人婷婷综合| 综合亚洲色色| 亚洲狠狠狠色婷婷综合激情久久久| 九九Av| 五月综合色| 五月天久久婷婷| 啪啪激情综合| 天天做天天爱天天爽在| 欧美成人精品老美女噜噜噜| 天天干天天插| 99热97| 天天插天天爽| 成人做爰黄A片免费看直播室男男 A片试看120分钟做受图片 | 热99热9| 天天爽夜夜爽| 91成人看片| www.99热在线观看| 丁香激情网| 色色五月婷婷| 婷婷久久欧美| AV九九| 2014天天爽| 第二色AⅤ| www.夜夜操.con| 日日婷婷不卡| 色婷婷的五月天| 色婷婷精品视频| 九九色人| 国产,欧美,学生妹,视频| 色五月 婷婷, 大香蕉| 99热亚州综合| 99久久精彩视频。| 开心婷婷五月天激情网| 婷婷五月丁香五月| 人碰人人人玩91| 婷婷黄色五月| 久鲁鲁色网| 天天干-天天日| 79精品视频| 99久久婷婷五月综合| 婷婷五月天久久| 中文字幕无码人妻少妇免费视频| 日本久久精品18| se99高清无码| 熟美女麻豆| 色婷婷情片| 欧美激情丁香五月| 久久九九色| 五月婷婷色| 婷婷丁香成人色综合| 五月天停停日日| 激情综合自拍五月婷婷色五月| www,婷婷五月天,com| 婷婷五月花| 91色呦哟| 久久五月视频| 久草视频一,二三四| 伊人综合网站| 色五月激情网| 丁香婷婷色五月激情综合| 狠狠五月天| 狠狠色综合久久久久| 无码色色色色色| 天天夜夜爽| 天天爽天天日| 99激情网| 操九色| chaopeng在线人人| 婷婷五月天视频小说| 国产综合婷婷| 七七色色综合| 色五月激情| 专区无日本视频高清8| 九草性爱| 激情五月天开心| 婷婷五月色播天| 天天日天天舔| 五月丁香花激情综合网| 五月天婷婷视频小说| 超pen个人视频97| 免费播放片大片| 99re这里有精品手机在线| 26UUU欧美| 五月丁香六月婷婷综合| 亚洲第一精品成人999久久精品| 99热啪啪| 毛片网站谁有| 99在线免费视频| 婷婷中文无码| 久久99精品九九久久久婷婷| 婷婷射丁香| 99热免费观看| 丁香五月情| 99性爱视频| 超爽内射| 丁香六月天| 综合婷| 婷婷久久亚洲| 超碰97久久| 日日夜夜天天综合| 毛v一区二区视频| 日日夜夜小色哥| 另类在线免费视频| 婷婷五月天在线观看免费| 成人五月天综合网| 色色COm| 99热在线播放精品| 丁香婷五月天开心六月| 久艹大香蕉| 大香蕉久热| 久操福利| 丁香九月婷婷| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | www.九月婷婷丁香.com| 天天久| 人人操碰| 色五月婷婷在线| www.日本91| 日本3级片一区2区| 国产噜一噜天天噜| www.第四色99| 成人五月天丁香婷| www.av视频xx999.com| 丁香六月啪啪| 99久久免费精品| 奇米四色五月天| 亚洲五月停停| 精品九九在线观看视频| 夜夜嗨一区二区三区直播内容 | 熟女人妻一区二区三区免费看| 婷婷丁香五月激情图片| 99热在线网站| 天天操人人干| 六月色国内综合| 五月丁香综合网| 色七七九九| 九九国产精视频| 天天色粽合合合合合合合| 色综合开心五月深爱五月| 久久五月婷天天干| 久久92| 国庆精品久久| 超级97碰碰| 97精品自拍视频| www.狠狠| 日韩精品电影| 做爰丰满少妇1313| 日本五月天激情| 色欲天天综合网| 国产精品一区在线观看你懂的| 99性爱精品| 狠狠爱婷婷| 国产99久久久国产精品免费看| 五月丁香无码视频| 六月婷婷五月丁香首页| 婷婷色吧| 亞洲自怕| 色婷视频| WWW,五月| 中文字幕色色色| 狠狠五月激情丁香六月| 成人久碰| 久久久18| 亚洲色碰| 青青草成人网| 久久九九在线视频| 日本婷婷网| 超碰国产AV| 亚洲精品一区无码A片| 五月丁香久久| 婷婷激情五月天在线| 五月婷婷在线丁香| 五月婷婷啪啪网| 好吊兆人妻| 色五月亚洲| 五月婷婷在线免费观看 | 四色五月婷婷| 婷婷射图| 婷婷国产成人| 夜夜骑天天玩天天日| 五月天激情综合首页| 五月天激情图片网| 91在线精品一区二区| 色狠狠综合| 五月婷中文字幕| 欧美成人网99网| 夜夜爽日日躁| 久久国产精品乱子伦_靑青草…| 九月婷婷激情| 91九色视频在线观看| 五月天久久小说| 亚洲亚洲人成综合网络| 色播五月丁香| 99热免费| 婷婷丁香六月| 99精品成人无码A片观看金桔| 99热这里只有精品3| 五月丁香色婷婷久久| 嫩草乱码一区三区四区| 99国产在线| 久8色色| 亚洲日韩26uuu| 天堂AV三级| 无码se| 九九九日本熟女| 丁香久久综合| 五月丁香啪啪网| 91ncom.色| 五月激情综合网| 婷婷月综合| 丁香五月最新地址| 婷婷丁香五月综合| www。狠狠干。com| 狠狠干狠狠干狠狠干狠狠干| 99热这里有精品24| 色五月首页| 99热无码| 婷婷久久综合| 91色色色| 国产精品18久久久| 狠狠婷婷日韩| 2013AV天堂| 精品综合爱| 六月婷婷九月丁香| 婷婷丁香色五月亚洲| 色很很96| 99色看| 热成人网| 翔田千里 50岁 无码| 婷婷五月天AV| 免费观看18视频网站| 精品一二三区久久AAA片| 九色综合网| 97伊人综合婷婷| 性生活视频98791| 噜噜噜噜噜在线| 日韩五月婷婷| 桔色成人在线| 99思思| 伊人综合网站| 99婷婷五月天激情| 激情宗合哪里能看| 亚洲热久久| 五月天激情四射网站| 99视频这里有精品| 亚洲天堂AV综合网| 快乐激情五月色婷婷| 五月色欧美| 99网| 中文字幕人妻熟女在线| 久久嘟嘟丁香| 欧美五月丁香在线观看| 另类图片激情五月| 爱操天堂| 五月婷婷开心亚洲无| 亚洲狠狠狠| 综合狠狠干| 亚洲精品又粗又大又爽A片| 亚洲av综合在线| 99热99干| 79精品视频在线观看,| 五月激情六月综合| 亚洲AV无码成人精品区电影网| 激情四射五月天偷偷看婷婷| 日日噜噜夜夜狠狠久久丁香六月| 国产做A爰片毛片A片美国| 日韩无码乱轮| 五月天欧美激情| 97人人搞| 九九精品re免费视频| 激情丁香婷婷六月天| 四色99久久| 色婷婷久久| 五月婷婷色色网址| 五月婷婷乱| 婷婷五月丁香基地| 手机在线日韩视频中文字幕| 天天日夜夜帕| 欧美久久一级内射wwwwww.| 色v综合网| 丁香五月五月婷婷五月天激情四射| 79精品视频在线观看,| 成人片在线免费看| 天天综合影院| 97五月婷| 思思热精品免费视频| 婷婷色在线观看| 2021日韩无码| 无码网站视频| 久婷婷视平| 乱女乱妇熟女熟妇综合网站| 久热超碰| 欧美一级色| 婷婷久月| 九九色院| 色婷婷日本| 69精品无码一区二区三区| 色青青视频| 日本色色网| 成人做爰A片免费看网站找不到了| www.狠狠| 97超级碰碰碰| 人人草人人爱| 无码橾| 思思热视频在线观看| 99在线视频观看| 亚洲久久婷婷丁香五月天| 午夜一区| 中文字幕簧片| 亚洲精品一二三| 色婷婷色情| 亚洲无AV在线中文字幕| 99热九九在线| 激情电影五月婷婷| 99热这里全都是精品| 综合99在线| 色情婷婷五月天| 九九九九中文字幕| 色九九九九| 婷婷射综合| 中文字幕AV网址| 五月婷婷久久大香蕉| 五月丁香激情四射| 五月婷婷六月丁香免费| 精品一区二区三区四区五区六区| 激情综合网,五月| 亚洲网综合在线| 天天综合网亚洲网站| 影院久久久| 天天干,夜夜爽| 97视频91| 免费看欧美成人A片无码| 天天草天天舔| 色婷婷AV久久| 中文无码婷婷| 夜夜爽日日躁| 丁香五月大香蕉AV| 成人AV在线电影| 久久激情综合| 黄色AAAAAAA| 狠狠狠狠狠狠色| 区区久久妻| 国产看真人毛片爱做A片| 日韩精品无码99| 人人操操| 亚洲操逼网| 99热精品免费在线观看| www.91九色| 国色天香成人网| 亚洲精品激情| 五月丁香久人妻中文| 免费黄网不卡AV| jiZZdr| www,8050,午夜三级| 久久se 综合网| 香蕉人在线香蕉人在线 | 人妻中文在线| 久艹久| 夜夜撸天天操| 天天日天天草| 色国产五月| 色原狠狠综合| 天天日夜夜爽| 久99久精品视频| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 碰97 久| 97色在线观看视频| 天插天啪天啪天啪| 伊人碰碰碰| 狠狠精品干练久久久无码中文字幕 | www狠狠爱com| www.色五月| 五月天亚洲综合网| 亚洲无码成人性爰网| 怡春院久操| 日本黄色三级片内射| 日本色图综合| 色在线视频网2025| 色五月婷婷丁香婷婷| 久久婷婷五月丁香网| WWW.HENHENL.| 中文字幕在线免费看线人| 五月天堂婷婷| 五月综合激情| 99热这里只| 五月丁香六月色婷婷| 五月丁欧美| 天天干天天操天天射 | 夜夜涩涩涩| 99资源在线视频| 色色五月天 亚洲| 婷婷五月丁香五月| 色99网站| 日韩啪啪网| 99精彩视频| 日本熟女内射| 思思热在线视频99| 婷婷五月天成人动漫 | 成人在线网| 激情五月天在线视频| 色五月天网| 噜噜噜噜噜日本视频| 六月丁香婷婷五月天| 丁香婷婷五月色成人网站| 欧美月久久| AV片在线观看| Www.久久| 成人网站高清无码| 色色影院黄大片| 丁香婷婷老司机久操| 日韩av在线播放综合网| 综合网精品99| 日本A片一区| 91操女| 综久久久| 激情久久 婷婷| 色久一| 99婷婷色| 成人短视频在线免费观看| 狠狠色综合网站久久久久| 中文网婷婷字幕婷| 亚洲碰碰碰| 9人人操人人看| 婷婷综合精品| 丁香六月激| 激情五月婷婷网在线观看| 99热这只有| 五月丁香六月色婷婷| 色综合日日| 综合激情站| 99热成人| 欧美成人A片AAA片在线播放| 色墦五月丁香| 丁香婷婷狠狠97| 婷婷97C| 91 原创 在线 九色| 99热综合在线| 色亚洲视频| www开心激情网| 色丁香婷婷| 激情五月久久| 久久免费精彩视频| 男人的天堂婷婷色五月| 91亚洲天堂| 综合久久综合| 俺也去综合| 激情网婷婷五月天| 五月天大香蕉| 69久久久| 在线播放中文字幕| 爱婷婷久久视频| 五月丁香婷婷深深爱| 26uuu精品一区二区| 天堂成人A片永久免费网站| 嫩草视频。| 丁香婷婷五月六月久久| 五月婷婷中文网| 亚洲无码色色| 可以免费观看的AV| 九月婷婷在线观看| 少妇丁香婷婷| 精品久久久人妻| 丁香六月欧美| 成人一区在线观看| 91热er| 五月丁香综合影院| 女人被躁到高潮嗷嗷叫小| 91在线日本| 天天综合干| 五月婷婷丁香啪啪| 男同91| 色五月五月婷婷| 五月丁香婷婷中文网| 久久综合影院 | 一区无码| 婷婷六月色丁香视频在线观看| 婷婷噜噜| 亚洲亚洲人成综合网络| 六月丁香啪啪啪| 婷婷开心激情五月激情网| 日本va欧美va国产激情| yazhochengrenavwang| 五月激激网w'w'w| 激情婷婷丁香五月天| 色99久草在线| 丁香五月天天日| 玖玖综合网| 五月婷婷国产| 色婷婷丁香中文在线播放| 九九热只有精品| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 婷婷九月丁香中文| 六月婷五月丁香| 激情五月天丁香| 99免费偷拍视频| 日韩乱玛久久| 成人做爰高潮A片免费视频| 色婷婷久久| 日本99在线| 五月天伊人久久| 色久免费| 久久精品一区二区三区四区| 九九蜜臀精品| 伊人五月天在线| AV在线免费网站| 亚洲va综合va国产va中文| 超级久久久| 99久久九九| 九九9久九9国产视频| 五月天播播综合| 九九综合久久| 激情五月天在线观看色婷婷| 26uuu亚洲| 婷婷五月天堂| 丁香五月综合婷婷| 大香蕉婷婷久久| 国产激情在线| 9福利性视频欧美| 99熟女啪啪视频| 六月婷婷啪啪| 九九热自拍| 婷婷五月天激情小说| 丁香婷婷五月色成人网站| 97人操人免费视频| 日本综合久久| 六月丁香啪啪| 婷婷五月天网| 深爱丁香激情| 婷婷情色五月| 熟女激情五月天| 1024欧美日韩精品久久久| 色婷婷六月| 日本系列_4页_777FP| 日韩综合天堂| 九九人妻福利| 久久综合久色欧美综合狠狠| 婷婷丁香激情五月天色色| 亚洲天堂青草| jiqingliuyuetian| 国产小网站| 91九色精品| 丁香五月综合高清在线| 99噜噜噜在线播放| 丁香五月激情鲁| 久热在线观看视频9| 丁香五月婷婷综合精品素人| 丁香五月久久| 丁香激情五月| 五月婷婷基地| 伊人久久婷| 久久99综合| 久久九九在线视频| 色吧婷婷| av九九| 2025年最新亚洲在线欧美| 久re热视频| 欧美这里只有精品| 亚洲 五月 婷婷 成人| 欧美丁香五月| 婷婷偷拍网| 国产午夜精品AV一区二区麻豆 | renrencaoni| 97人碰人操| 婷婷丁香花五月天| 天天婷婷操| 99啪视频在线观看| 久久这里有精品| 五月婷婷激情综合视频| 欧洲亚洲免费视频9| 做爰丰满少妇1313| 香蕉人在线香蕉人在线 | 五月天激日本色情在线| 六月丁香啪| 丁香五月六月| 激情www| 久久五月天合网| 在线综合91| 99热97| 激情五月婷婷开心网| 国产色色在线| 停停六月 综合| 国产这里只有精品| 看全色黄大色大片| 九九九成人在线视频| 99热主页日本| 99热色综合| 五月婷婷激情| 色婷婷五月色| 久久99免费视频| 草操AV在线| 91凹凸在线| 婷婷丁香大香蕉| 天天干天天做| 久久看婷婷| 六月久久狠狠| 天天狠狠插| 97碰在线| 少妇婷婷五月天| 超碰只有精品在线| 婷婷五月天色色| 午夜成人网站在线观看| 丁香五月婷中字幕| 五月丁香啪啪啪啪| 99热99ai| 五月婷啪| 久久婷视频| 久久五月婷综合网| www.婷婷com| 五月丁香| 六月丁香五月天| 欧美成人va| 五月婷婷天| 婷婷五月天亚洲精品| WWW.激情| 人人爱干人人爱草| 99久在线视频| 粉嫩av蜜桃av蜜臀av| 亚洲99热| 日日夜夜爽| 中出内射的人妻视频| 色色色99韩| 色婷婷综合久色AV五色最新| 亚洲激情婷婷| 久艹大香蕉| 先锋资源91| 五月开心啪啪| 丁香五月天堂亚洲社区| 色婷婷丁香社综合| 五月丁香婷婷钟和色图| 国产毛片精品一区二区色欲黄A片| 色色网站在线| 91久久婷婷| 丁香五月欧美激情| 色综合久久44| www久久99| 五月婷婷激情久久| 免费黄色片子| 天天爽天天| 极品少妇高潮啪啪AV无码| 天天插天天插| 91精品激情9| 色噜噜丁香| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 99久久极情精品一区| 五月婷婷第四色| 婷婷五月天美女21p| 五月婷婷激情| 大香蕉九操| 丁香色婷婷| 天天插天天射| 成人做爰高潮A片免费视频| 亚洲宗合激情| 久草婷婷视频| 色天堂A| 99精品激情| 激情六月五月婷婷综合网| 五月丁香婷婷激情在线| 色日本网| 丁香五月天.com| 久久曰曰| 五月天婷婷基地| 99久久欧美| 成年视频免费观看| 99色在线视频| 色婷婷色久综| 久草热视频在线观看| 亚洲va综合va国产va中文| 丁香六月婷婷综合| 亚洲精品V天堂中文字幕| 激情五月婷婷色色| 婷婷天堂综合| 久久五月婷婷开心网| 丁香五月天啪啪| 五月丁香人妻| 激情五月天。| 991精品在线视频| 婷婷成人综合免费视频| 中文在线视频久1| 成人精品在线| 九九九激情综合| 97婷婷在线视频| 激情网站五月| 久久婷婷六月综合| 九九视频这里只有精品| 亚洲黄色网址| 色五月婷婷操逼| 天天婷婷操| 丁香五月天.com| 成人做爰A片免费看网站找不到了| 五月婷av| 五月婷婷色播视频| 激情图片五月天| 欧美日韩成人| 欧美日韩成人在线网站| 91婷婷五月天综合视频| 激情久久久久久久久久| 亚洲三A| 香蕉狠狠爱视频| 国色天香伊人狠狠色| 另类天堂| 日日操夜夜操中国无码| 26uuu四色| 香蕉人在线香蕉人在线 | 被强行糟蹋的女人A片| 天堂综合久| 婷婷丁香五月天小说| 在线成人网址| 五月丁香花激情啪啪网| 再次出发二| 成人婷婷| 欧美激情 日韩无码 婷婷 五月天| 丁香婷婷综合精品六月初| 激情五月天婷婷丁香| AA片在线观看视频在线播放| 四虎成人精品永久免费AV九九| 五月婷婷丁香狠狠撸久久| www.天天干| 久久婷狠狠色| 婷婷五月天电影网| ztEJj| www天天干| 久久这里只有精品99| 九伊人网| 天天色综网| 色婷婷8| 激情欧美婷五月| 99这里都是精品6| 亚洲久久日| 深爱五月日韩| 日韩在线观看网址| 激情五月婷婷欧美极品| 99视频在线精品| 91seav| 色域五月婷婷丁香| 欧美伊人9| 五月在线| 日本欧美999久久久三级片| 婷婷五月天亚洲精品| 婷婷丁香一月| 激情99| 色就是色婷婷五月亚洲激情| 婷婷五月丁香综合| 九九精品综合| 九九这里是免费的视频5| 亚洲一区二区无遮挡A片| 久久只有18视频| 操操综合网婷婷| 79色色免费| 色五月,com| AV国产有码| 色色色激情网| 激情五月婷婷中文字幕| 丁香六月丁香婷婷激情| 久久人妻高清中文| 超碰69天堂| 啪到高潮激情丁香五月| 秋霞网在线免费基地五月婷婷丁香| 五月激情五月婷婷五月天在线| 色综合综合综合| A A色色| 亚洲AV成人精品网站在线播放| 天天精品视频在线观看视频| 亚洲岛国电影| 日本色色色| 亚洲AV无码影院| 日本色色网站| 丁香大香蕉| 99久视频| 2020久久婷婷五月| 婷婷五月天 丁香五月天 裸体| 五月天伊人手机在线播放AV| 五月丁香A片| 色丁香五月婷婷| 97超碰人人操| 婷婷午夜| 免费视频这里只有精品| 99久高清视频| 色综合九九| 99热这里只有精品亚洲| 丁香花大香蕉婷婷综合| 26UUU欧美| 嫩草视频在线观看| 伊人五月天| 成人丁香婷婷五月天| 丁香婷婷婷五月综合色情| www色五月| 亚洲综合网激情小说| 久久3级片| 久99视频在线观看| 五月婷婷狠天天色综合| 色爱爱综合网| 久9久9久9久9久9久9| 天天爽—爽| 日本熟女啪啪| 五月色婷| 开心五月激情五月丁香五月婷婷| 91日综合欧美| 99亚洲精品视频| 精品成人无码A片观看香草视频| 啪啪色激情五月天| av中文在线| Www.婷婷五月| 强伦轩人妻一区二区电影| 色色婷婷丁香| 九九婷婷网五月天| 5月激情天| 九九99偷拍视频| 免费黄色视频网址| 激情九九这里只有精品| 五月停亭六月,六月停亭的英语 | 99热在线播放| 久er7久热| 欧美WW在线网| 国产AV国片偷人妻麻豆| 国产视频婷婷| 五月婷婷天天色| 成人免费在线电影| 亚洲日本韩国| 色吧五月婷婷| 天天擼久久擼在线| 婷婷色中文字幕| 大香人妻| 国外亚洲成AV人片在线观看| 在线中文亚洲| 亚洲噜色| 五月开心婷婷极品激情| 综合99在线| 无码日本精品XXXXXXXXX| 久久久久亚洲AV无码网影音先锋| 99er在线观看| 婷婷五月天AV| 色色网91| chaopengdaxiangjiao| 深爱开心激情| 91超级碰在线| 天天爽天天做| 激情综合五月.....| 久久99婷婷| 色婷婷最新域名 | 色九九九九| 精品成人在线| 色五月婷婷色| 97热视频| 夜夜久久综合网| va婷婷| 六月婷婷影院| 性 色 婷婷| 亭亭五月丁香综合欧美| 99热热这里只精品996小说| 99操网站| 婷婷99视频全集高清| 91chinese在线| 婷婷亚洲色| 在线观看中文字幕亚洲| 亚洲国产99| 99亚州综合精品成人网| 色婷婷视频综合| 五月天色在线| 婷婷五月天99| 久久与婷婷| 日韩一区二区在线播放| 久热9| 色色色999| www.99婷婷| AV在线中文| 色射影院| 超碰亚洲天堂| 粉嫩av蜜桃av蜜臀av| 成人av在线网址| 久久九九精彩| 成人在线日韩欧美| 9 1在线视频| 99在线视频女女视频| 久草丁香婷婷五月天婷| 99在线小视频| 98热精品| 久久九九婷婷| 超碰在线观看成人视| 综合九九久久| 国产精品国产| 人人综合久| 色婷婷AAA| 99国产小视频2013| 久一这里有精品国产| 五月www| 色色色色色色色色色999| 色婷婷五月天在线| http://www.sd-xiangsu.com/| 五月天婷婷在线播放免费| rr天天操| 成人版视频在线观看| 欧美99热| 六月丁香五月婷婷| 成 人片 黄 色 大 片| 影音先锋91在线资源站| 日韩五月婷婷久久| 77777亚洲午夜久久| 99网址在线看| eeuus五月婷| 1995年关宝慧版蜘蛛女| 五月丁香亚洲婷婷| 狠狠操狠狠插| 婷婷五月天色色| 超碰在线91| 99热10在线高清播放| 人妻无码精品一区| 91亚洲视频| 99啪啪网| 婷婷精品| 99这里只有精品在线观看| www.五月天社区| 99这里热| 高清无码网址| 久久综合五月天激情小说网站 | 天天插天天爱| www.狠狠| 亚洲黄色网址| 偷拍91九色| 久久视频这里都是精品| 婷婷丁香色情五月天| 91viP在线看| AⅤ网站在线看| 五月天婷综合| 色天天综合天天综合频道。| 操熟女成人网| 欧美三级欧美一级| 亚洲乱码日产精品BD| 91九色欧美| 五月婷婷久久激情| 丁香六月五月天| 国产在这里只有精品| 大鸡巴伊人网| 亚洲AV免费在线| 久热精品视频| 五月激情啪啪| 色色六月| 思思99热热热99| 超碰1999| 99热66| 久婷久婷激情肉| 亚洲爱爱无码婷婷色五月| 五月婷丁香| 日韩av变天就操逼不卡区| 伊久久婷婷| 亚洲色婷婷五月| 97综合在线| 性热视频99精品| 五月婷婷久久网| 日本三级大片| 久久一级免费黄色片| 开心婷婷五月花| 五月天丁香综合| 九九色黄色| 妻久久久久| 日韩性视频| 99九九99九九九视频精品| 性爱在线播放av| 99ri国产在线| 久久色吧| 人人射av| 五月丁香六月天| 五月婷婷色综图片| www.五月天激情| 成人国产欧美大片一区| 97久久人人| 丁香五月影院| 色综合中文综合网| 婷婷五月天亚洲天堂| 日日天天干| 丁香五月综合激情啪啪| 精a品a| 性爱技巧五月| 五月丁香五月激情综合色综合| 91蜜桃婷婷狠狠久久综合9色| 六月丁香成人| 婷婷五月色亚洲| 国产又色又爽又黄又免费| 超碰九色| 亚洲国产成人在线| 97日在线视频| 亚洲操b| 五月丁香狠狠爱婷婷综合| 天天操天天操天天操| 婷婷六月色| 五月丁香爱婷婷深深| 五月激情视频| 五月婷六月| 操逼三区| 操97免费超级视频| 天天狠狠六月婷丁香影院| 亚洲殴洲精品Av在线| 玖玖资源天天无码| 婷婷丁香无码专区| 只有久久精品免费| 男同91 | 国产九九一区二区三区| 色婷婷丁香五月在线观看| 亚洲成人精品三区| www色婷婷com| 91婷婷丁香五月亚洲| 99久久精品视频女神1| 99色在线观看视频者| 狠狠操狠狠做| 欧在线一区| 99热激情| 五月天激情网址| 久超超碰| 色色色综合色| 婷婷亚洲天堂| 色色网站免费在线视频| 久久久久久久人妻| 亚洲色婷婷激情| 婷婷五月天桃花网| 国产精品香蕉|