免费国产精品自在自线-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
返回資訊列表
色优久久| 丁香婷婷久久| 免费无码毛片一区二区A片| 人人噜天天上| 丁香五月天av| 亚洲熟妇AV综合网五月丁香伊人| 色色激情网| 综合久久激情久久| 国产欧美日韩综合精品一区二区| 夜夜谢天天干| 九九热在线视频观看| 婷婷激情网五月天| 婷婷婷五月天最新综合你懂的| 超碰人人操人人干| 中文无码婷婷| 久9热视频在线观看| 97超碰色| 99精品综合在线| 九九在线视频| 婷婷五月在线视频| 欧美日韩精品人妻狠狠躁免费视频| 五月综合丁香婷婷| 熟女网站久久| 99热偷拍| 99热在线播放| 天天干天天爽| 国产SUV精品一区二区883| 91婷婷色五月| 天天色宗合| 五月婷婷丁香六月| 五月天激情四射网站| 九九热这里只有精品在线观看| 激情六月丁香综合| 日日噜噜久久婷婷五月天| 婷婷色九月| 五月婷婷婷| 99er这里只有精品视频| 色欲一区二区三区精品A片| 天天玩夜夜操天天爽| yazhouzonghesese| 国产一二三四五六七八视频| 综合网亚洲| 婷婷五月成人色综合| 激情综合色婷婷啪啪五月天| 五月天另类激情在线| 五月婷婷五月色| 五月激情基地| 99精品小视频| 日韩操逼大片| 久久婷婷影院| 婷婷五月天综合久久日美女| 正宗黄色毛片| 久久丁香五月| 欧美性生交A片免费看| 国产XXXX搡XXXXX搡麻豆| 成人无码髙潮喷水A片| 婷婷免费视频| 超碰在线日夜| 啪啪黄页网| 欧美日韩国产一区| 这里有精品99| 99热青青草原| 狠狠综合网| 狠狠操狠狠插| 大香蕉五月天婷婷| www婷婷色| 91久女| 人人肏逼视频在线一区二区| 99久久五月丁香野外| 青青草五月天| 婷婷丁香色五月亚洲| 九九热色视频| 婷激情五月| 五月婷天天搞视频| a网站免费观看| 这里只有精品视频免费在线观看| 九色综合网| 色五月婷婷丁香凹凸| 激情五月天福利| 天天操五月天| 色波激情五月天| 天天干,噜噜色,狠狠色| 五日激情综合| 午夜青草资源| 五月婷婷六月丁香在线视频| 六月激情婷婷| 99超级超级超级碰| 激情五月黄色小说| 色婷婷久久综合久色综| 亚洲综合色婷婷| 夜夜嗨一区二区三区直播内容| 婷婷中文综合网| 五月婷啪啪| 开心 五月 综合| 天天色天天色天天色天天色天天色| 九九热这里只有精品在线观看| www.夜夜操| 色五月婷婷久久| 丁香五月开心七月| 日韩成人电影AV| 色情激情五月| 深爱婷婷网| 黄色av网站在线免费播放| 久久婷婷五月综合啪| 婷婷丁香77777| 色五月婷婷激情| 色99网站| 色情久久久| 色亚洲视频| 婷婷深爱五月丁香| 大地9中文在线观看免费高清| 91九色在线观看免费| 色色色色色热| 色五月婷婷大香蕉| 91jiuseshunv| 天天肏天天爽夜夜爽| 五月婷婷深深爱| www.超碰97| 五月丁香激情综合啪啪| 五月天开心激情综合网| 99燥99日| 欧美日韩大黄| 丁香五月综合| 婷婷她六月天| av中文在线| 欧美色偷偷大香| 丁香六月婷婷缴情欧美| 日本丁香五月| 操碰91| 婷婷狠狠操| 最近免费中文字幕大全高清大全1| 另类激情五| 久久丁香五月婷婷| 九色综合网| 性色欲情 网站| h在线看免费版在线看| 久久人妻熟女一区二区| 婷婷深爱五月天在线| 欧美精品999| 五月天大香蕉AV| 国产精品噜噜在线视频| 99久久婷婷国产综合精品草原| 久久在这里99| 九九AV在线| 丁香五月婷婷欧美成人色图| Www.狠狠| 9久热在线精品| 思思re最新视频| 91啪啪视频| 综合成人小说婷婷| 日本久久9| 人妻操在线看| 国产首页在线| 五月激情偷拍| 婷婷久久女人| 狠狠99| 婷婷五月娱乐在线| 色五月婷婷小说亚洲中文字幕组 | 五月天丁香色色| 欧美激情丁香五月| 内射人妻视频国内| 久久99久久99精品免观看软件 | av色婷婷| 丁香五月天婷婷在线视频| 五月丁香福利| 97自拍视频在线| 丁香五月另类色婷婷麻豆| 婷婷五月天AV在| 99热精品中文字幕| 欧美天堂久久| 五月丁香综合啪啪| 婷婷综合五月色播| 99人妻碰碰碰久久久久| 五月天堂婷婷| 日日操夜夜操狠狠操| 五月天婷婷丁香| 深爱五月月天| 亚洲亚洲人成综合网络| 五月丁香人妻| 五月激情啪啪啪| 久久婷婷国产| 天天上天天爽| 婷婷丁香六月天激情四射网| 久久婷婷五月综合| 国产欧美日韩性爱| 欧美激情综合五月色丁香| 久久aaa| 99视频| 激情五月六月丁香| 高清国产AV| 婷婷激情人妻| 99这里只有免费的小视频在线观看| 五月婷丁香| 影音先锋 婷婷| 丁香五月影| 久久这里只| aaa9区免费在线观看| 午夜成人综合| 26uuu欧美亚洲日韩| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 天天爽天天做| 六月丁香啪啪啪| 国产欧洲欧洲精品久久| 婷婷五月天成人网站| 精品视频网| 9l视频自拍九色9l视频在线观看| 人人色人人摸人人看| 99精品偷自拍| 精品人妻伦一二三区久| 亚洲久久视频| 亚洲色图81p| 欧美精品999| 色色综合日韩| 久久婷婷色综合| 99色| 丁香五月婷婷基地| 五月婷婷丁香五月亚洲色| 婷婷五月丁香亚洲| 中文字幕 中文字幕明步| 五月天欧美 另类小说| 99热色综合| 婷婷五月丁香啪啪| www.99热. com这里只有精品| 另类伊人婷婷| 好吊兆人妻| 亚洲天堂热| 色五月开心开心五月激情五月| 婷婷影院欧美| 亚洲精品无码99热| 婷婷六月丁香五月| 天天草天天爽| 俺去啦综合网| 亚州激情网站无码| 婷婷涩五月| 成人做爰高潮A片免费视频| 日日操夜夜骑| 天天射综合网夜夜操| 人人摸人人操人人爽| 九月激情婷婷丁香| 天天日夜夜| 中文AV网| 日韩十国产极品久久| 五月婷婷黄色| 99人人操人人爱久久久| 996黄色片| 思思久久99| 99re思思久久| 色婷婷六月天在线| 五月丁香六月婷婷免费| 婷婷五月激情四月综合| 97热精品| www.久久婷婷| 五月色激情综合网| www.99精品日操伊人乱碰在线| 夜夜干夜夜操| 99精品在线观看视频| 人妻操操色| 91精品久久久久久77777| 精品九九久久| 亚洲欧洲美女在线观| 激情綜合W W W,激情五月天| 99自拍视频网站| 五月天久久综合婷婷丁香| mmm1717.6dbm人人爱人人操| 五月丁香色婷婷伊人| 2020日日干| 亚洲av另类在线观看| 大香蕉人妻| 久久大香蕉同僚| 激情VA视频| 亚洲99手机免费看视频| 色狠狠综合网| 五月欧美色色五月| 99亚洲色| 伊人AV五月婷| 五月天色婷婷成人| 五月丁香在线看| 激情五月丁香在线观看直播| 99aese| 色A网| 深爱婷婷基地| 夜夜人妻五月天| 色五月综合网| 思思热99er在线视频| 色情综合网| 超碰在线免费| 性色人人爽| 国产激情久久| 狠狠夜夜五月丁香| 久久一二三视频| 五月丁香亚洲五月| 第四色26uuu| 99视频在线观看欧| 激情五月天激情综合网| 色色色色网站| 99热国产精品| 婷婷五月天社区| 激情色播| 五月天婷婷色综合| 99爱爱网| 婷婷在线综合| 欧美精品999| 国产这里只有精品| 超喷97免费在线视频| 成人无码精品1区2区3区免费看| 狠狠狠狠狠| 日本乱子人伦在线视频| 狠狠ri| 久久丁香综合精品综合| 午夜爱爱网站| 七七九九色色| 激情五月婷婷丁香| 婷综合| 久久这里只有精品8| 日日杆天天| 开心五月深爱五月| 香港九九六区八区99| 五月婷婷丁香五月| 成片免费观看视频大全| 久久九九99字幕| 婷婷五月丁综合| 欧美丁香五月夫妻天| 91色涩| 激情综合网激情五月天| 一级视频网址| 色色婷| 色婷婷综合五月| 99热在线观看这里只有精品| 婷婷性爱网| 五月天开心网| 久热精彩视频98| 日韩在线观看亚洲| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 精品在线| 婷婷瑟瑟五月天| 久久人人九| 日本高清久久| 久久日曰| 亚洲色五月天是什么| 激情婷婷五月天日本系列| 色五月激情网| 国产AV国片偷人妻麻豆| 日本婷婷在线| 五月婷婷乱| 日本天堂爱爱| 狠狠操狠狠色| 综合激情开心五月| 色色五月天丁香婷婷| 公的粗大挺进了我的密道| 亚洲a片免费观看| 欧美在线操| www.狠狠干com| 26uuu丁香婷婷五月| 欧美在线| 久久色婷婷| 99久久免费精品| 激情五月天丁香| 色五月婷婷丁香凹凸| 久久ww| 看久久性爱视频| 日本三级中国三级99人妇网站| 性爱网五月婷婷| 在线成人网站| 九色啦蜜臀| 欧美性猛交99久久久久99按摩| 一起草aV| 五月天五月婷五月激情网| 婷婷综合色| 伊人久久丁香狠狠婷婷综合香蕉| 国产乱码久久| 九九aV| 二区成人视频| 色狠狠综合| 久久人人看| 97五月婷婷| 战争与艾拉电影免费观看| 五月在线| 婷婷五月天综合网| 日韩 中文 欧美| 丁香五月亚洲综合| 三十路磁力链接| 五月在线| 色婷婷五月天中文字幕| 日韩九区| 色婷婷综合成人| 99亚洲日韩| 国产暴力强伦轩1区二区小说| 99热在线观看精品| 午夜九九九九九九九九九九九九九| 国内精品99| 激情精品久久| 高清一区二区三区日本久| 影音先锋一区二区三区| 97影院一级片| 91九色国产在线| 五月激情站| 九九久久9 9在线观看| 美妞av| 婷婷天天日婷婷| 国产精品视频| 色综合天堂| 六月色激情| 色五月六月| 激情精品久久| 亚洲精品激情| 丁香色影院| 成人丁香婷婷| 大香蕉七区| 超碰1999| 色五月婷婷91| 久久婷婷精品| 久久人妻久久久久| 成人看片网站| 人妻五月天激情开心网| 久久大国产香蕉| 日日夜夜爽爽| 1024在线视频| 少妇人妻人伦A片| 超碰人人操| 五月丁香激| 九九亚洲综合| 欧洲色色| 襙逼网| 五月停停大香蕉| 婷婷亚洲五月色综合| 亚洲成人AV电影在线| 久久成人精品视频| 色色色五月| 久热免费视频| 超碰三级秋霞| 欧美97超碰| 五月婷婷中文字幕| 久久9精品| 91人妻PORNY九色大屁股| 亚洲精品国产成人AV在线| 婷婷丁香五月天激情| 色八月婷婷| 白人荫道BBWBBB大荫道| 五月丁花六月丁香综合| 日本一级一片免费视频| 搡BBBB搡BBB搡18| 五月天基地| 亚洲成人无码免费| 日韩AAAAA| 九九草热在线观看| 中文网婷婷字幕婷| 日本欧美成人片AAAA| 欧美毛片www| 噜噜五月天综合| 毛片新网地| 精品少妇蜜臀91| 亚洲欧洲色色| 国产,欧美,学生妹,视频| 俺去啦综合网| 久操人妻| 开心色色五月天综合| 激情综合五月开心狠狠| 狠狠操天天操| 香蕉中文在线| 婷婷五月天在线观看| 精品久久久久久久人妻| 97碰| 爱穴久久| 九九热超碰| 女力报到正好爱上你| 日本一级特黄大片AAAAA级| 99九九久久| 色播激情五月天| 久久98| 天天色中文字幕女优AV| 久久色情| 免费五月婷婷网| 99久久9| 亚洲va久久久噜噜噜久久天堂| 日韩色久| 色婷婷裸体色性在线| 99爱爱| 色天使久久综合| 日韩亚洲视频| 激情婷婷啪啪| 色婷五月丁香久亚洲| 激情 婷婷| 色婷婷基地 | 狠狠插狠狠插| 精品无码99| 久久这里这里有精品免费视频| 色婷婷AV久久| 性按摩玩人妻HD中文字幕| 久久婷婷五月综合激情国产| 久久性爱视频这里只有精品| 六月色狠狠色| 激情网战码亚洲A| 欧洲区自拍| 97在线观视频免费观看| 五月丁香色综合| 俺去也综合| 玖玖九九99| 色性综合| 丁香六月婷婷开心| 天天婷婷色六月| 就爱操www com| 日本va欧美va欧美va精品| 91精品国产色猫| 欧美激情综合五月色丁香| 99热婷婷| 国产在线中文字幕| 婷婷丁香亚洲色综合91| 欧美色色色色色| 天天成人丁香美女AV| 丁香五月六月久久综合| 五月天久久婷婷| 久久婷婷资源| 停停六月 综合| 日韩精品一区二区三区,四区,五区视频| 69精品人人人人| 五月 成人 婷婷| 99热这里只有精品16| 丁香五月 六月婷婷首页| www久久99com| 五月色婷婷在线观看| 男人天堂99| 婷婷色五月开心五月| 婷婷丁香先锋资源网站| 色婷九九九| 久久中国毛毛片爱久久| 久久久精品99| 99久久.www| 狠爱婷色| 夜色综合网| 99精品视频推荐| 久久机热探花| 婷婷综合影院| 97精品自拍| 丁香五月手机在线| 亚洲高清在线| 久色视频在线| 色亭亭五月天网扯| 超碰renrenai| 婷婷五点亚洲| 这里只有精品视频在线| 超碰色综合| 五月丁香婷婷综合网| 在线成人网站| 九九热免费视频| 超碰在线99| 99爱视频| 久久这里只有精品视频15| 色欲AVV| 中文超碰视在线| 色五月婷婷久久| 直接看的AV网站| 婷婷开心激情| 亚洲综合网 665566| a网站免费观看| 囯产精品久久欠久久久久久九大| 成人免费120分钟啪啪| 中文字幕视频色婷婷| 婷婷六月偷拍| 日本久久性| 99综合色色色| 丁香六月天堂| 日本99在线| 噜噜视频| 丁香六月天婷婷色| 久久视频婷婷| 亚洲五月天综合色| 国精产品一区二区三区| 日韩淑女人妻luan伦激情精品一区二| 五月天婷婷色| 激情综合网激情五月俺也去| 99碰视频| 五月人人丁香婷婷五月人人丁香| 思思国产99| 婷婷99视频精品| 操人91| 日比视频91| 婷婷五月激情欧美| 久久A热| www.com五月天| 任你爽视频| 丁香六月在线综合| 婷婷久久五月天丁香| 日本天天综合| 激情综合五月天| 精品人妻一区二区| 婷婷94s| 日本色色色| av在线色五月丁香婷区久| 啪色综合| 激情操逼婷婷| 成人午夜无码视频| 婷婷基地爱| 婷婷五月天AV| 四季AV综合网| 亚洲五月天狠狠| 97丁香婷婷| 婷婷最新地址| 五月天无码| 色视频五月天| 六月丁香婷啪射| 五月色综合网| 欧美槡BBBB槡BBB少妇| 91狠狠色丁香| 五月丁香花激情综合网| 可以看的av网站| 丁香五月婷婷婷桃花影院| 成人va在线观看视频| 五月天成人小说| 国产精品色| 久久久久久久久久久97| 天天操夜夜爱| 无码人妻少妇色欲AV一区二区 | 亚洲婷婷综合视频| 婷婷成人丁香色情基地30| 无码人妻电影| 成人丁香五月| 激情网第四色| 丝袜人妻| 久久一伦| 怡红院AV亚洲一区二区三区H| 99无码黄色视频| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 丁香五月婷婷视频| 亚州激情网站无码| 久久久久久久8| 国自产拍偷拍精品啪啪一区二区| 啪啪操超碰| 婷婷五月丁香基| 亚洲乱码在线观看| www.99热精品99.com| 亭亭五月丁香五月天激情| 天天日夜夜拍| 五月婷婷干| 国产日产成人亚洲欧美国产VA| 五月丁香婷久久| 狠狠狠狠狠| 日韩操逼大片| 色婷婷婷婷| 99视频精品8 | www.久久久久| 超碰人人91| 丁香深五月婷婷| 成人视频网| 超碰人妻在线| 丁香婷婷色九月| 99热无码| 欧美激情五月| 五月丁香婷婷激情久久| 思思久久99热| 婷婷久久网| 亚洲 视频 导航 一区| 岛囯综合激情网| 少妇AB又爽又紧无码网站| 中文字幕在线观看视频www| 五月天啪啪啪| 亚洲这里只有精品| 激情www| 激情美女五月天激情在线| 天天做天天爱天天摸| 久草五月婷婷| 久久婷婷综合基地| 婷婷六月视频| 激情综合网址| 色情综合| 99热这里在线精品| 琪琪理论片| 婷婷五月丁香av网站| 久久性视频| 亚洲一级色电影| 婷婷五月激情欧美| 香蕉综合在线| 丁香五月成人| 九九热九九热精品| 可以直接看的av网站| 久色成人| 就爱射中文字幕资源网| 亚洲另类噜噜| 99热这里只有精品5| 99热这里全都是精品| 99re6久热只有精品6在线直播| 五月丁香六月欧美综合网站| 99色| 99热精品在线观看| 香蕉AV福利精品导航| 日韩免费视频| 日本天堂网站99| 国产肏屄大片| 天天性视频| 五月色丁香综合| 五月天小说激情| 久久九九99亚洲国产久精综合| 国产精品成人av在线观看春天| 欧美成人A片AAA片在线播放| 99在线免费视频| 26uuu成人网| 亚洲欧洲中文日韩久久AV乱码| 婷婷五月色播天| 成人短视频免费| 色五婷婷| 五月婷婷 六月丁香| 人人人舔人人人操人人人摸人人人97| 成功精品影院| 99热只有| 婷婷日本色| 激情色播| 丁香五月天视频在线播放| 亚洲综合五月天| 99九九精品| 综合色、色综合| 任你操精品免费| site:jszngf.com| 五月婷婷开心综合| 日韩1区2区| 老师高潮流白浆喷水的A片| 婷婷五月丁香超碰| 天天激情夜夜干| 婷婷丁香六月天| 久热久| 亚洲激情五月| 色婷婷狠狠干| nvrentiantang av| 色一情一乱一伦一区二区三区| 91av色色乱视频| 五月丁香| 色噜噜五月天| 野战J办公桌椅H| 台湾无码A片一区二区| 婷婷激情蜜桃玖玖丁香| 久久久五月五丁香| 婷婷色五月大香蕉在线| 97人人干人人操| 国产精品香蕉| 欧美性做爰大片免费看办公室| 97在线干| 五月婷婷色吧!| 婷婷综合激情| 久久综合影院| 深爱五月日韩| 无码少妇高潮喷水A片免费| 综合激情肏逼网| 欧美Va在线| 色丁香五月婷婷| 久久久久网站| 色丁香影院| 99精品国产在热久久| 九九99免费理论| 色色AV色色色东莞| 婷婷五月激情四射手| 九九热99re8热免费观看| 久久婷婷五月综合色丁香| 亚洲狠狠丁香婷婷香蕉| 婷婷五月天无码熟女| 九九aV| 成人在线综合| 国产密乳av一区二区三区四区| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 婷婷综合网在线| 亚洲色婷婷五月天| 9999久久久久| 五月丁香婷中文| 成人在线日韩欧美| 操一操干一干| 婷婷之玖玖| 激情开心五月天婷婷基地丁香社区| 内射在线CHINESE| aaa丁香五月天| 婷婷午夜天| av在线资源| 99九九在线| 青青草色在线视频观看| 久久免费操| 91精品久久久久久久久久久久| 舔色婷婷| 五月婷婷综合影院| 亚洲午夜一区二区| 国产97色在线 | 日韩| 99性爱视频| 六月婷婷九月丁香| 成人丁香色| 欧美日韩123| 久久久18| 丁香五月婷婷性爱| 亚洲精品V天堂中文字幕| 欧美婷婷五月无砖| 色色欧美。| 国语精品探花| 四射综合网| 91ncm视频| 久久久99久久| 天天干,夜夜爽| 欧美婷婷五月无砖| 亚洲精品第一国产综合亚AV| 色深爱五月| 97人人爱人人操| 日韩AV片| 99热 免费| 97caop| www.色色色色| 天天肏高清在线| 99色在线| 久久99热 这里有精品| 9l视频自拍九色9l黑人| 人人操AV| 性爱动图国产麻豆一区二区三区| 色偷偷AV亚洲男人的天堂| 99热精品免费在线观看| 熟女啪啪视频| 亚洲五月婷婷| 狠狠狠狠狠草| 久久精品婷婷五月丁香| 99视频这里有精品| 伊人狠狠干| 91精品又长又大又粗又爽又猛| 久久婷婷伊人| 五月丁香六月情婷婷久久| 狠狠色九月| 99热精品在线播放| 激情五月婷婷色播网| 台湾无码A片一区二区| 五月天社区| 六月 丁香 视频| 91精品丝袜久久久久久| 激情操逼婷婷| 婷婷久久99| 色久五月| 在线中文av| 色五月丁香五| 人妻人人操| aaa日韩| 超碰chaompinm| 深夜婷婷 丁香| 色女人久久| 色婷婷五月天激情综合| 中美月韩免费A片| 国产午夜精品AV一区二区麻豆| 五月婷视频在线| 五月丁香999| 久久婷婷五月综合成人d啪| 丰满老熟妇BBBBB搡BBB| 视频一二区| 亚州精品久久久久AV无码| 97操操操| 俺去婷婷 丁香| 色婷婷六月| 天天操中文字幕| 伊人狠狠操| 九九热a| 色婷婷亚洲在线观看| 国产乱妇乱子在线播视频播放网站| 五月婷婷深深爱| 欧美英丁香开心快乐六月天网| 色婷婷电影网| 欧美激情伊人| 日本性视频| 三男玩一女三A片| 99热.com| AV在线大香蕉| 五月丁香六月色| 五月天色网站| 婷婷综合五月激情| 青青.com| 激情综合无码| 丁香五月激情网| 色五月色情| 9热成人在线视频| 国色天香成人网| 五月丁香在线观看| 91综合国免费久入| 欧美大道不卡| 开心深爱激情网| 99免费视频网| 99er6热在线观看精品6| 日本成人噜噜噜噜噜| 国产永久一二一起草| 性爱综合网| 成人av在线电影| 黑人熟妇一区二区三区| 97在线视频 欧美| 万月丁香狠狠爱| 激情内射人妻1区2区3区| 色综合色综合网| 久99热| 99操逼| 大香蕉伊人久久| 婷婷爱五月| 天天干天天干天天干| 丁香成人五月天| 五月天婷婷综合网| 9色在线| 亚洲色综合| 开心五月天激情网| 五月丁香六月激情综合| 亚洲精品久久久久久久久久吃药| 开心激情站| AAA级久久久精品| 怎么样可以看免费的一级av| 丁香五月天堂婷婷| 丁香花狠狠婷婷亚洲中文字幕| 婷婷六月香| 欧美日本99| 波多野结衣AV无码Porn| 1024国产| 欧美大奶熟女噜噜噜噜| 天天综合插插| 伊人午夜综合色啪| WWW五月| 色婷婷综合影院| 另类综合激情| 婷婷中文字幕| 婷婷无五月无码视频| 91色综合久久| 123草逼网| 天天插天天狠| 天天摸天天高潮天天爽| 激情丁香五月天图片| 99性爱视频| 99在线精品免费视频| 五月开心网| 91fuliwang| 久99久在线观看| 六月婷婷深深爱| 久久久久99精品成人片| 五月婷婷深深爱| 狠狠色狠狠操| 九久九精品| 插逼综合网| 色婷婷五月天激情久久| 丁香五月婷久久| 99人妻碰碰碰久久久久禁片| 国产欧美熟妇另类久久久 | 色性日本| 日本色图综合| 最新高清无码专区| 99人妻碰碰碰久久久久视| 天天想夜夜爽天天爽| 激情综合色| 久久资源网五月婷| 日本一级淫| 噜噜操操| 亚洲AV无码久久精品色欲| www.夜夜操| 日产精品一线二线三线芒果| 激情超碰网| 精a品a视a频| 色久五月天| 五月丁香影院| 天天网曰日曰夜夜综合永久免费| www.久久爱| 六月丁AV| 日日干夜夜干| 永久免费一区二区三区| 国产寻花在线| 97人凄人人操人人爽| 青青草青青草五月天| PORNY九色9l自拍视频成人| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色婷婷色人人射| 二色av| 超碰免费电影| 色婷婷激情小说网| 97干免费视频| 人人操超碰| 琪琪秋霞| 久久久久久久97| 日本97在线看片| 丁香六月av| 久热大香蕉| 亚州精品成人片| 婷婷六月色丁香视频在线观看| 色婷婷综合亚洲| 九热视频在线伦| 婷婷五六日| 99热在线观看精品| 91九色欧美| 亚洲色婷婷视频| 婷婷丁香97| 99久久97| 99爱视频免费| 激情综合网五月激情网| 五月丁香婷婷福利| 亚州激情九月| 亚洲亚洲人成综合网络| 五月天色色婷婷| 婷婷五月天人妻| 大香蕉啪啪| 91fuliwang| 五月婷婷综合在线| 五月丁香综合中文| 婷婷日日天天| 五月色网| 婷婷综合偷拍| 人人色人人弄人人操| 亚洲中文字幕AV| 99成人免费热视频| 亚洲欧洲色色| 色久女| 999九九九久久久99HD| 可以免费观看的AV| 综激情网| 一级操逼内射在线视频| 精品一区二区三区四区五区六区介绍| 97欧美在线| 91九色超碰| 亚洲激情AV| 久久激情五月天| 色婷婷AV久久久久久久| 色婷婷五月基地在线| 九九色影院| 9久久久| 久草九一| 色婷婷成人做爰A片免费看网站| 色999五月色| 五月激情小说网| 这里只有精品视频看看| 久思思久视频| 99热这里只有精品1025| 97超级碰碰碰| 97婷婷五月丁香| 国产AV熟妇人震精品一品二区| 日本三级日本三级99| 婷婷日欧美在线观看| WWW,五月| 国产精品久久7777777精品无码| 五月婷婷综合网在线播放| 日本99久久| 9有码中文| 99热在线看片| 久久五月天免费网站| 久久丁香婷| 99色综合久久| 久久A极片| 日本强伦片中文字幕免费看| 亚洲综合婷婷| 激情五月丁香婷婷| 色优久久| 99热这里全是精品| 超碰在线人妻| 伊人干综合| 九九久久99精品免费观看www| 五月丁香影院| 五月狠狠| 91视频五月丁香| 欧美色色色色色色| 激情五月婷黄版| 欧美影院| 色综合中文| 97狠狠色| 夜夜撸天天操| 99色在线视频| 五月丁香啪啪| 成人一级片| 婷婷六月色开| 色五月综合网| 99热99网| 亚洲激情电影五月天色婷婷丁香一起草 | 丁香狠狠色婷婷| 99ri精品在线| 综合AV在线| 婷婷五月无码| 色色激情| 超碰成人公开| 欧美黄色一级| 日韩黄色AV无码| 中文字幕欧美久久| 丁香五月中文字幕| 99热最新精品| 涩涩五| 丁香久久久| 色五月丁香婷婷在线观看| 婷婷 伊人 久久| 91色综合| 成人看片网站| 五月婷婷影视| 玖色色综合| 日本啪啪网| 九九这里只有精品在线视频| 婷婷久久国产视频| 五月丁香另类网| 爱草人视频| 91人人爽狠狠狠| 久久久97| 五月丁香综合精品欧美| 久久99精品久久久久久青青AR| 中文字幕97超级碰| 他改变了拜占庭| 大狠狠在线| 激情五月丁香亭亭| 91精品久久久久久综合五月天| 五月天激情婷婷| 婷婷五月精品| 日韩 中文 欧美| 热这里只有精| 婷婷日日夜夜| 天天久久狠狠色综合| 极品少妇高潮啪啪AV无码| 九九综合九色欧美狠狠| 国产色网站| 五月丁香啪啪啪免费看| 婷婷视频在线| 99在线69| 国产,欧美,学生妹,视频| 六月丁香婷婷色综合| 六月丁香婷婷天堂| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 五月丁香婷婷综合视频| 久操婷婷| 色婷婷色和| 99久久精彩视频。| 激情小说五月欧美亚洲丁香| 久久永久视频| 中文字幕网伦射乱中文| 日韩黄色网络| 欧美久久五月婷婷| 五月婷婷五月| 中字幕视频在线永久在线观看免费| 在线成人国产| 国产超碰在线| 99在线观看视频| 色欧洲| www,99色| 五月婷婷深深爱爱| 思思热视频在线观看| 狠狠干狠狠色| 亭亭五月基地在线| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 99在线观看| 欧美碰碰| 99er6| 可以免费观看的av| 亚洲视频在线网站| 中文字幕综合网| 国产精品热搜丁香五月婷婷| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 五月停亭六月,六月停亭的英语| 中文AV网站| 亚洲不卡| 亚洲色色香蕉| 久久精彩视频| 五月婷婷激情久久| 久久aaaa片一区二区| 五月婷婷六月丁香在线| 超热久碰.com| 26UUU欧美激情一区二区| 国产精品色一哟哟| 另类小说五月天| 丁香五月天欧洲在线| 第四色色六月色综合| 狠狠色狠狠鲁| 五月丁香狠狠| 激情五月综合婷婷| 99热青青草| AV九九| 在线观看免费观看在线9久| 国内熟女黄色系列| 丁香六月色| 久热AA| 五月天天丁香婷婷在线中| 丁香婷婷久久激情| 五月婷婷无码| www久久艹| 综合激情视频| 五月丁香婷婷五月色| 欧美超碰亚洲| 中文字幕av久久爽一区| 梁铮版《蜘蛛女侠》在线| 狠狠狠狠狠操| 激情五月天开心| 九九视频在线| 日日夜夜九九| 日本一毛片| 激情深爱婷婷网| 婷婷无码视频| 丁香婷婷基地| 大伊香蕉精品视频在线| 9精品一区| 色婷婷丁香网| 丁香婷婷十月| 人人澡玖玖一| 九九综合影音先锋| 亚洲成人另类| 色五月久久成人婷婷| 欧美色爱五月天| WWW.婷婷| 九月停停| 婷婷五月天成人导航| 亚洲色色精品| 久久久8| 丁香激情综合| 婷婷亚洲影院| 五月丁香狠狠| 伊人99热| 亚洲成人综合网在线免费观看| www.99热在线观看| 婷婷五月综合激情小说| 成人综合AV| 久久婷婷五月综合色区| 九九综合九九| 五月丁香花婷婷玉莉AV| 99热在线只有精品| 1024在线视频| 电影爱拉战争免费观看| 天天射影院| 婷婷五月欧美综合| 婷婷操逼| 99久在线精品99re8热| 99在线免费观看| 9精品视频在线| 99视频精品全部免费观看| 色婷网| 色原狠狠综合| 大伊久久| 国产日韩欧美性爱| 亚洲无码成人网| 国产色五月| 国产亚洲精品AAAAAAA片| 五月丁香啪啪综合| 香蕉AV777XXX色综合一区| 国产看真人毛片爱做A片| 99久久综合网| 天天做天天爽| 亚洲AV无码电影| 色婷婷丁香五月高清在线| 99操逼| 日本乱论99| 亚艹艹| 日韩黄色影院| 五月天婷婷六月激情网| 伊人婷婷综合| 激情婷| 丁香五月五月婷婷五月天激情四射| 噜噜在线| 久久久精品99亚洲综合| 51XX午夜影福利| 日韩免费99| 五月婷婷官网色| 日韩av在线播放综合网| 很很干在线视频| 八戒青柠影视剧在线观看| 区区久久妻| 97人人操人人爽| 91丨九色丨熟女丰满| 99热都是精品| 色停停影院五月天| 丁香五月激情视频| 思思re最新视频| 久久婷婷五月综合激情国产| 99自拍视频| 六月色日韩| AV中文在线| 五月激情丁香久久综合网| 九九热视频这里只有精品| 色性综合| 欧美成人精品A片免费一区99| 色婷视频| 五月婷婷色播| 丁香五月婷婷少妇| 99国产精品久久久久久久久久久| 久久一热免费视频| 超碰99在线观看| 五月婷婷少妇之| 色五月激情五月| 久久精品永久免费| 高清 码 免费看片短视频| 五月丁香免费看| 色婷婷五月综合在线| 成人网站在线观看视频|