免费国产精品自在自线-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Ⅴ色区| 热久91| 欧洲亚洲免费视频9| 97深爱伊人综合| 一区操| 久久这里只有精品8| 99热这里只有精品1998| 热这里只有精| 久久久久久久97| 少妇性BBB搡BBB爽爽爽视頻| 成人看片网站| 日本高清久| 色五月天天| 在线观看996精品| 中文字幕日产A片在线看| 偷拍91九色| 欧洲日韩一区二区三区| 天天草天天舔| 色五月婷婷天天干| 亚洲sesesese| 欧美在线97| 亚洲网站观看视频| 丰满人妻妇伦又伦精品国产| 婷色五月| 综合网色| 激情六月婷婷| 99激情| 色五月五月婷婷| 激情黄色五月天| 91超级碰碰碰| 亚洲中文乱字字幕在线永久| 丁香五月天综合| 丁香五月在线视频黑人| 婷婷久久六月天| 五月婷视频久久| 婷婷五月天丁香成人社区| 精品人妻午夜一区二区三区四区 | 玖久精品视频9| 久久丝丝热| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 99热在线这里只有精品| 99久久久国产精品免费蜜乳tv| 丁香五月婷婷深爱综合激情| 欧美婷婷六月丁香综合色| www.99久久久久99| 久久超级碰碰| 色婷婷小说| 婷婷中文综合网| 香蕉网婷婷| 成人午夜视频精品一区| 久草丁香婷婷1024| 99热在线播放精品| www一起操在线观看| 级人人91| 久久狠婷婷| 激情丁香五月综合| 中美日韩成人在线| 婷婷五月天成人五月天| 五月丁香六月日逼| 欧洲亚洲激情五月天在线| 五月婷婷色播网| 精品人妻伦| 欧美色色色| 婷婷丁香五月亚洲欧美| 色情丁香五月天| 色综合色婷婷色伊人| 国产激情综合五月久久| 深爱激情AV| 怡红院院在线导航网| 操人妻90p| 青草性爱视频| 99热免| 五月天婷婷色综合| 色色五月婷| 五月婷婷之综合激情| 97自拍视频在线| 综合五月婷婷| 国产精产国品一二三在观看| 婷婷久久18| 六月份天丁香婷婷| 狠狠狠狠狠狠色| 青青草原亚洲天堂| 国产AV一区二区三区最新精品| 国产精品久久久久久久久久| 日逼AV影音先锋男人资源站| 婷婷的色色五月天| 婷婷色色狠狠| 五月激情天天干| 99热这里只有精品青草| 国产激情综合五月久久| 五月丁香久久激情综合| 久综合网| 日日夜夜狠狠干| 五月丁香六月婷婷啪啪| 荫道BBWBBB高潮潮喷| www久久久久久久久久久| 日本一级淫| 一起草日本| 欧美 日韩 成人在线| 开心婷婷中文字慕| 这里只有精品1| 亚洲啪啪啪啪| 第四色色色色色丁香五月天| 一起草AV| 婷婷五月丁香综合激情| 五月婷婷激情| 超级黄色片| www.色婷婷.com| 成人精品视频99在线观看免费 | 九月停停| 久久AAAA片一区二区| 天天擼久久擼在线| av九九| www,婷婷,com| 91精品久久久久久| 五月婷婷啪啪| 日本少妇裸体做爰高潮片| 国产精品黑丝| 欧美综合在线五月天色婷婷| 亭亭五月色男人| 亚洲五月六丁香激情| 激情狠狠丁香月| 五月天婷婷綜合院| 久久嘟嘟丁香| 五月婷六月| 六月婷婷综合| 六月婷婷之青青草| 日本色色色| 91精品视频男人的天堂| 丁香六月婷婷综合在线| 天天干天天av天天射| 97色婷婷在线观看| 色婷婷六月| 婷婷五月欧美综合| 99热99免费| 99爱视频免费| 99色精品视频| 激情五月天网站| 色婷婷久久综合久色| 色综合日日| 婷婷久久综合久| 超碰在线资源| 婷婷五月天亚洲丁香| 久久久中文| 伦99热| 99热这里在线精品| 色狠狠综合| 亚洲AV人人操| 天天搞天天爽| 日本人妻丁香婷婷久久寝取熟女五月| 天天插天天射| 99热这里只有精品96| 伊人五月天在线| 情色五月天网站| 天堂综合久久| 狠狠大香婷婷爱| 亚洲综合99| www.射伊蕉婷婷| 五月丁香花开综合网| 丁香花社区av| 欧美啄木乌丝袜人妻系列| 五月丁香成人| caopeng超碰| 天天爽天天爽| 色五月丁香在线| 伊人久久丁香狠狠婷婷综合香蕉 | 国产成人精品一区二区三区视频 | 日本本土色网第一区| 九九激情网| 婷婷综合在线视频| 五月丁香影院| 色五月天网| 人与禽A片啪啪| 伊人深爱综合| 亚洲欧洲午夜成人精品av| 五月婷婷深深爱| 五月久久网| 91九色视频| 99精品久久久| 亚洲V国产V欧美V久久久久久| 九九这里有精品视频| 五月天激情网图片| 欧美啄木乌丝袜人妻系列| 五月丁香久久久| 五月天综合影院| 激情五月天色色色| 亚洲视频99| 五五月丁香花激情综合网| 婷婷操逼| 天天爽天天干| 婷婷亚洲激情在线观看视频| 色九九九九| 91色五月| 可以直接看的AV网站| 99久久久精品| 99爱爱| 我爱va亚洲va52| 激情av网| 久热在线中文字幕色999舞| 色婷婷久久综合丁香五月| 九色激情网| 亚洲成人综合在线| 五月天狠狠草| 影音先锋女人av鲁色资源网小说免费| 91色碰| 五月婷av| 免费AV在线| 色色色在线免费视频| 婷婷六月成人| 国产成人网| 激情五月天开心总和网| 色播五月婷婷综合| 九色91视频| 情欲禁地| 五月丁香六月婷| 亚洲AV色婷婷人禽五月天| 日本婷久久| 精品一二三区久久AAA片| 色色色婷婷| 丁香久久五月天视频在线观看| 婷色视频| 超碰69天堂| WWW,五月| 丁香五月欧美色综合| 欧洲激情网站| 9色在线视频| 五月日韩中文字幕| 色色色欧美| 丁香五月成人| www.99视频| 99亚洲综合| 91色吧网| 97碰免费精采视频| 1囯产午夜仑鲁鲁| 欧美交换配乱吟粗大25P| 最新av在线观看| 日日夜夜噜噜爽爽| 秋霞黄色一级久久| 久久视这里只有精品| 91色干| 色五月婷婷777| 国产日韩精品SUV| 婷婷丁香亚洲五月天| 中文字幕欧美久久| 丁香色色五月| 内射爽无广熟女亚洲| 婷婷操婷婷干婷婷射| 99爱免费在线视频| 18av天堂| 亚洲高清在线| 亚洲成人在线综合| 亚洲av成人在线| 亚洲黄3级片网站欧美| 丁香五月天91| 丁香久久激情俄| 99热 日韩| 最近中文字幕2019视频1| 97干在线| 九九黄色网| 五月花激情| 婷婷五月激情欧美大胆视频| 任你爽视频| 婷婷五月天xxx| 97干97色| 丁香六月激情四射| www.99热在线| 欧美啪啪网| 九九无码AV| 免费视频99| 可以免费观看的av| 久久99热免费最新版| 深爱激情网噜噜色| 国产精品国产VA片国产| 五月天久久成人| 色色综合网站| 五月激情综合网| 极品人妻VIDEOSSS人妻| 91九九九九九九| 婷婷五月激情小说| www.91九色| 欧美在线视频99| 五月天激情国产综合婷婷婷就去爱| 大香蕉人妻| 6月丁香婷婷| 五月天婷婷黄色视频| 亚洲激情亚洲激情| 丁香六月婷婷激情| 超碰人人艹| 可以免费观看的AV| 久久久久九九九九视屏小说88| 六月丁香啪| 激情伊人网| 婷婷91| 亚洲人人96@| 色色色色色色色色色999| 婷婷五月18永久免费视频| 校园激情 亚洲| 色情五月停停丁香| 青青草激情网| 另类图片五月天激情| 99久精品视频| 婷婷综合五月色播| 婷婷色色网| AA片在线观看视频在线播放| 久久sp免费视频| 久久婷婷五月天懂色| 同性gv国产精品一区二区| WWW激情五月天| 欧美性丁香色色五月天干干| 专区无日本视频高清8| 97ai婷婷| 婷婷五月,偷窥偷拍网| 狠狠色噜噜狠狠狠777奇米| 九九热99热| 天天插插天天| 久久伦乱| 五月开心网| 97人妻碰碰中文无码久热丝袜| 欧洲色| www.夜夜| 99热99思午夜精品| 久久精品视频99| 激情五月丁香婷婷夜夜操| 五月天色色激情综合| 日本的α片xxxwww| 丁香五月婷婷在线观看| 婷婷伊人中文字幕| 色狠狠色噜噜AV天堂五区| 婷婷亚洲在线| 亚洲成片在线观看| 天天日天天舔天天摸| 五月丁香色婷婷久久| 婷婷五月天成人五月天| 亚州操操| 热99在线精品| AAAA网站| 丁香婷婷影院| 激情久久综合网| 亚洲九九夜夜| 99久久久国产大片区| 一区二区三区四区无码| 狠狠综合网| 97精品欧美91久久久久久久| 这里只有精品视频在线| 亚洲第一影院高清无码网站| 五月丁香婷婷开心| 五月丁香六月激情网站| 久久五月丁香激情综合| 午夜丁香婷婷| 激情五月婷婷免费视频| 91色婷婷综合久久中文字幕二区| 亚洲操B视频| 99在线播放| 亚洲九区| 五月天激情电影| 任你草| Www.se.久久| 九艹在线| 啪啪黄页网| 色香五月天| 色婷婷成人做爰A片免费看网站| 97AV在线视频| 五月婷婷综合网| 久久五月综合| 综合婷婷| 久久久久人无码人妻| 色135综合网| 天天日天天摸天天| 亚洲午夜在线视频| 五月婷婷基地| 久久久婷婷五月亚洲97号色| 中文无码婷婷| 另类五月婷婷| 97精品人人A片免费看| 广东99色在线| 久久久久久久久久久久久久久久一道本| 久久伊人日日夜夜| 六月丁香啪| 丁香桃色网| 婷婷久久图片| 五月婷婷激情中文字幕| 亚洲av免费在线| 五月婷婷丁香在线| 新99色色色色色色| 婷婷五月天亚洲综合网| 婷婷97碰碰| 久草性爱| 国产肥白大熟妇BBBB视频| 亚洲、热| 五月丁香无码| 玖玖色综合| 精品人妻伦| 少妇水多A片太爽了| 六月亭亭久久综合激情| 九九精品综合| 成人国产欧美大片一区| 色五月激情五月| 亚洲网视屏| 五月婷视频| VA婷婷| 五月天天丁香婷婷| 另类图片激情五月| 婷婷五月天亚洲天堂| ai97re99一本| 五月丁香六月婷婷久久| 成人电影丁香六月天| 国产操肏网站| 一本大道伊人AV久久综合| 狠狠激情五月天| 婷婷五月天堂| 91人无码久久久久久| 99视频九九热| 色婷婷综合网站| 97人操人免费视频| 久9久视频精品| 九九热10| 亚洲人人操BD| 琪琪理论片| 国产三级在线播放| 色五月婷婷在线| 精品A√| 99婷婷| 1024久婷| 性爱激情五月| www.色综合| 99色热视频在线| 99热综合在线| 激情综合另类| 久久精品国产AV一区二区三区 | 丁香五月色色| 偷偷操99| 激情六月婷| 99久久久国产大片| 激情六月丁香| 九九99在线视频| 夜夜爽天天干| www.婷婷六月天| 婷婷丁香五月亚洲| 久色中文| 婷婷丁香久久五月综合| 伊人大香五月天| 另类 在线| 91丁香色| 久久婷婷五月天大香蕉| 丁香五月综合婷婷| 婷婷色在线播放| 五月婷婷在线观看| 26UUU精品一区二区Com| 婷婷五月天伦理| 在线播放中文字幕| 婷婷丁香五月麻豆| 99热新网址| 色五月中文字幕| 日韩黄色中文字幕| www久久久久久久久久久| 99热日韩| 亚洲99热| 久久HD| 婷婷六月色开| 狠狠色婷婷7777久| 久久一热| 久久婷婷热| 婷婷色网| www.久久| 夜夜操加勒比| 内射 无码 伊人| AV片一区在线观看| 91干网站| 五月四色激情| 5月婷婷6月六月丁香| 色情五月丁香| 亚洲成人精品三区| 久久9视频| 日日舔夜夜操| 操操操av| 中文色婷婷| 国产乱子轮XXX农村| 婷婷爱在线观看| 五月天婷婷色色| 99热99精品| 丁香色情五月天| aV直接看| 亚洲六月色| www久热com| 久久三级视频| 人操人| 九九色精品| 人人摸人人| 丁香六月色情| 1024AV视频| 婷婷91| 五月婷婷丁香五月| 婷婷五月丁香综合人妻| 久久亚洲网| 色婷婷啪啪综合网| 久久精品99国产精品日本| 伊人网碰碰| 狠狠色精品综合| 开心五月综合激情网| 91综合视频丁香| 久久这里有精品| 99热只有这里有精品| 开心五月激情站| 狠狠色婷婷777| 无码一区精品一区视频| av婷婷丁香 六月| 久久9RE热视频精品98| 777精品久无码人妻蜜桃| 网色99| 色色AV色色色东莞| 激情综合色婷婷啪啪六月天| 5月婷婷6月丁香aV| 色情五月丁香婷婷网| 182TV亚洲| 9热久久在线| 久久9热好| 91丨九色丨国产打屁股| 99综合视频| 综合激情在线| 午夜丁香综合婷婷| 色五月婷婷五月| 五月丁香色婷婷综合| 《战争与艾拉》完整版| 看黄的网站18禁| 婷婷五月丁香六月| 丁香婷婷九月| 色播六月| 啊V视频在线观看| 99亚洲精美视频在线观看| 欧美超碰亚洲| 婷婷黄色五月| 九伊人网| 熟女91九色| 四射综合网| 中文字幕精品推荐免费在线观| 中文字幕婷婷9月天| 中文成人在线| wwwav大香蕉| 久久精品国产精品| 色色色激情网| 丁香五月 性爱| 综合福利网| 综合狠久久| 五月天福利影院导航| 香蕉人妻AV久久久久天天| 天天干一干| www.五月婷婷久久.com| 久9热| 婷婷精品在线| 九九人人操| 成人日韩欧美| www,奇米影视| 操日视频| 97在线视频观看| 99热这里只有精品青草| 狠狠狠狠狠狠| 色婷婷综合久久| 九久久九精品视频| 亚洲av网址| 九月婷婷色色| 天天爽爽日日做做| 日批在线看| 国产高清精品色| 亚洲欧美999| 99热亚洲| 极品人妻VideOssS人妻| 午夜天堂一区人妻| 91jiuseshunv| 日本99婷婷| 色婷久| 爱操人妻| 久婷婷久草| 996日日爱| 丁香五月中文字幕色播| 开心五月深爱五月| 激情综合色婷婷啪啪五月天| 无码色综合| 色V狠狠的干| 色五月av伊人| 欧美色婷婷| 国产精品美女| 激情综合网激情五月天| 婷婷色资源| 99热久草| 五月丁香久久久| av人人干| 91综合在线| 超碰cap| 91超级碰在线视频| 天天干天天操天天干天天操天天干天天操| 九九热在线视频观看| 国产67194| 狠狠精品干练久久久无码中文字幕| 这里只有精品无码| WWW.99热| www超碰com| 91avse| 思思99re这里只有| 超碰人人艹| 亚洲成人在线观看av| 91成人看片| 91精品综合久久婷婷九色| 99在线爽| 久久色五月天| 综合色七七| 色丁香久久| www国产亚洲色婷婷com| 天天操比比| 婷婷五月丁香激情图片| 色之综合网| 天天日天天干天天爽| 超碰在线人妻| 久99久视频免费观看| 五月五月婷婷| 欧美va视频| 国熟女视频| 国产精品成人网站| 婷婷久热| 99热这里只有精品搜| 操逼毛片国语对白| 成AV人片一区二区三区久久| 日本天天色| 欧美啄木乌丝袜人妻系列| 五月婷婷三级| 五月天小说激情| 5月婷婷综合| 97碰久久| 高清成人综合| 五月丁查人人| 午夜天天精品视频| 婷婷激情五月天7| 伊人网啪啪| 久久电影五月天丁香电影| 噜噜噜噜噜在线| 色婷婷成人网| 久久九九精彩| 婷婷性爱五月天| 婷婷丁香综合网| 激情六月丁香综合| 五月婷婷激情久久| 色五月天堂| 久久 天天| 影音先锋91视频| 婷婷六月色情| 国产AV一区二区三区最新精品 | 色婷五月天| 久草五月| 99热精品在线| 9色在线视频| 日韩aaaaa| 99热观看| 天天日综合| 丁香婷婷婷| 99热这里只有精品 搜| 国产精产国品一二三在观看 | 九月婷婷激情久久| 99精品小视频| 久久艹 五月天| 丁香五月日本| 亚洲三级无码| 丁香婷婷五月六月天| 97av在线视频| 色情五月天se| 日韩一级一片内射视频4K| 啄木鸟黑丝一区二区| 国产精产国品一二三在观看| 色插综合网| 艳妇野外情欲放荡HD| 五月婷婷丁香91| 色五月视频无码播放| 亚洲最大成人综合网720P| 十月丁香婷婷| 四季8848精品成人免费网站 | www.丁香五月| WWW五月天| 激情98色婷婷五| 天天爽天天做| 1999天天操夜夜操| 五月天丁香综合| 激情婷婷丁香五月天小说| 五月婷婷激情综合| 六月丁香综合网| 五月天婷婷激情六月久久| 五月天色社区| 五月婷婷丁香大陆免费| 欧洲亚洲精品| 婷婷五月开心中文字幕在线| 色婷婷小视频| 亚洲天堂aaa| 婷婷七月丁香色色| 开心激情五月天网| WWW五月天| 亚洲天堂碰碰婷婷| 4399在线日本A片| 婷婷,五月天,丁香,第一| 一本大道嫩草AV无码专区| 99热只有精品在线观看| 综合超碰熟| 亚洲精品电影| 678五月丁香亚洲综合| 日本女色人人| www.婷婷| 丁香婷婷丁香五月欧美人| 色综合久久久无码中文字幕999| 五月丁香黄色视频| 丁香五月婷婷激情网| 99综合| 天天干天天操天天爱| 丁香五月综合久久综合| 久久曰曰| 色五月丁香五月天| 中文网AV| 日本色色影院| 人人草人人爱| 免费观看的婷婷五月视频在线| 天天搡日日搡aaaaⅩ| 被强行糟蹋的女人A片| 丁香婷婷五月基地| 五月天狠狠网站| www天堂99| 99色视频| 日日.c| 久久五月天大美女| 伊人五月天久久| 狠狠狠狠狠狠| 日本在线视频播放91| 开心激情站| 五月花婷婷| 天色综合网站| 97人妻碰碰碰久久香蕉| 狠狠色 综合色区| 在线色色| 日韩无码色色| 亚洲成人电影aaaa| www.99久久久| AV六月丁香| 91丨九色丨大屁股| 色情丁香五月婷婷精品| 亭亭社区五月天| 五月婷五月婷伊人伊人五月婷| 久草婷婷视频| 91成人性爱视频| 激情五月天之五月婷婷| AA久久| 第四色色色色色丁香五月天| 9999久久久久| 中文字幕AV在线播放| 五月网在线| 热的国产,热的综合,热的有码| 五月天久久网站| 在线看AV| 国产精品久久久久久亚洲毛片| 香蕉婷婷色五月| 婷婷深爱五月天在线| 色综合综合色| 色综合五月| 五月婷婷|欧美| 国产精品激情五月天色婷婷| 五月丁香六月婷| 中文精品在| 久久六月综合| 中文字幕91,综合| 思思综合热| 97碰| 91九色中文字幕女在线观看| 九九久热| www。五月,com| 午夜九九电影| JAPANRCEP老熟妇乱子伦视频| 欧美 日韩 成人在线| www.henhengan| 久久婷婷五月天丁香| www.婷婷五月天啪啪| 色五月亚洲| 久久日曰| 五月天婷婷在线播放| 欧美在线ee日韩| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 99久久久| 精品久色| 久久婷婷亚洲| 人人爱干人人爱草| 99久久久久| 都市激情久久| 91丨九色丨国产打屁股| 99久久久国产大片区| www,天天干| 丁香五月婷婷激情小说| 婷婷爱五月天| 99热这里只有精品国产免费| 亚洲操操| 91啪级电影| 久久五月天激情| 激情九九综合网| 涩丁香91| 亚洲色视频| 中文在线成人| 91色操| www,久久久| 五月丁香啪啪网| 丁香五月天信号| 色色丁香婷婷综合| 欧美婷婷| 北京熟妇搡BBBB搡BBBB| 亚洲AAAA网| 665566 无码| 色综合天天综合成人网| 亚洲国产黄色电影| 成人丁香五月| 日夜操B| 黄桃AV无码免费一区二区三区| 激情五月综亚网| 天堂美国久久| 99无码| 婷婷午夜综合| 五月天色色网站| 五月天色导航| 99人妻碰碰碰久久久久| 激情五月丁香五月| 天天操天天操| 人碰91| 色情综合网| 97色伦另类图片小说视频| 91啦丨九色丨刺激中文| 97色天堂| 99色看这里只有精品| 五月精品99综合| 天天肏天天肏天天肏| 综合亚洲六月婷婷在线| 综合天堂AV久久久久久久| 日日夜夜狠狠干| 久久婷婷网| 第四色在线观看| 欧美色色色色色| 五月婷婷综合影院| 日韩成人网址| 丁香婷婷深情五月亚洲| 婷婷啪啪| 婷婷五月天777| 婷婷深爱五月丁香| 久久婷婷综合五月天| 色五月婷婷成人| 久碰婷婷视频| 精品无码人妻一区| 色五婷婷在线视频| www.色婷婷| 免费观看日韩成人av| 五月丁香久久| 99热99成人| 婷婷伊人久久综合| 日韩综合天堂| 欧美精品18| 激情五月天福利| 激情综合网址| 夜夜噜夜夜奇| 97AV人人插人人操| 高清无码网址| 婷婷在线播放| 亚洲九九99精品视频在线播放| 香蕉操亚洲| 国内久久婷婷| 亚洲妇女熟BBW| 香蕉婷婷色五月| 五月婷婷五月天亚洲无码| 91综合在线| www.久久9| 九九成人电影婷婷| 天天爽天天干| 狠狠色狠狠| 色情一区二区播放| 欧美欧盟性爱网| 日本系列_4页_777FP| 在线日韩av| 色狠狠色噜噜AV天堂五区| 成人AV免费观看| 婷婷五月激情小说| 亚洲欧州色情在线观看| 伊人丁香五月| 五月欧美色播| a在线观看| 亚洲色图五月丁香| 五月婷婷黄色毛片| 99综合97| 九九婷婷五月天| 激情又色又爽又黄的A片 | 久久曰9| 人与禽A片啪啪| 五月激情综合网| 66色在线日韩| 亚洲综合色色色| 天天搞天天色综合| 丁香五月婷婷骚视屏| 99热精这里只有精品| 热这里只有精| 同性gv国产精品一区二区| 色情五月天小说| 六月婷婷色综合| 九月激情网| 九九色图| 大香蕉啪啪啪| 996er热| 丁香六月婷婷开心| 日本一级一级一级一级| 久久久久久久丁香五月天婷婷| 亚洲激情婷婷| 视频久久9| 99久热在线精品99re6热| 亚洲色频| av第一二区| 操日视频| 亚洲色人妻| 久久多色| 五月丁香美女| 天天做天天要天天爽| 五月天色婷婷图片| 日日操天天| 五月天com| 亚洲成人高清在线| 丁香六月在线| 九九综合| 久婷婷久草| 日韩操女| 丁香五月综合| 九九热10| 99爱在线视频观看| 日韩黄色电影| 26uuu精品一区二区| 五月丁香色婷婷| 四季8848精品成人免费网站| 婷婷色色色| 亚洲熟女乱色综合亚洲网站| 国产欧美第五十五页| 天天综合久久| 天天操夜夜爱| 五月精品| 亚洲成人免费在线| 超碰人人在线观看| 色婷婷综合亚洲| 激情婷婷色小说| 精品久久久久久久人妻| 婷婷 丁香 精品| 婷婷另类小说| 91聚色综合网| 夜夜爱伊人| 91超碰九色| 色大综合| aaa久久| 五月天丁香| 久久XX日本综合| 国产9色在线/日韩| 91dy.av| 国产性爱一级| 亚洲国产精品VA在线看黑人| 97艹| 狠狠88综合久久久久噜噜噜| 色五月天综合网| 色色com| 五月天婷婷丁香人人操91| 97爱综合| 日韩激情婷婷五月天| 亚洲va欧美va天堂v国产综合| 激情伊人五月天| 丁香五月激情五月| 天天综合情| 亚洲第一精品成人999久久精品| 综合色五月天| 五月婷婷色色网址| 99热这里只有精品热| 婷婷丁香六月天| 女操碰| 色婷婷五月在线| 亚洲狠狠色丁香婷婷综合久久| 色情婷婷| 色色色婷婷五月| 婷婷色五月天色色| 婷婷五月天首页| 精品人妻伦九区久久AAA片| 99re热在线视频| 激情综合色婷婷啪啪六月天| 六月丁香AV| 五月色精品| 99久久人妻精品无码二区| 五月天天堂久久| 国产精品五月天婷婷| 年轻的妺妺伦理HD中文| 99ri精品| 五月天婷婷深深爱| 99热精品在线观看| 色九月婷婷综合| 婷婷五月天综合久久| 激情内射人妻1区2区3区| 深夜男女福利刺激影院一区| 激情五月天激情五月天| 超碰在线日夜| tingting五月天亚洲| 91精品久久久久久77777| 婷婷影院欧美| 婷婷六月色播| 久久五月婷婷综合网| 五月激情丁香六月狠狠干| 91婷婷丁香| 九月婷婷色色| 99热99这里有免费的精品| 日日夜夜狠狠| 99re这里只有精品9| 婷婷五月天堂| 国产色网站| 五月天婷婷深深爱| 99噜噜噜在线播放| 日本五月婷婷久久久六月丁香| 色综合色色色| 综合色久| 亚洲成人免费在线| 欧美五月婷婷| 色五月婷婷在线| 色五月色图| 五月丁香啪啪综合| 九热免费视频| 九九亚洲综合| 操99| 婷婷五月天久久| 五月丁香美女视频| 在线只有精品| 操操操av| 欧美在线视频99| 激情五月婷婷丁香六月| 久久婷婷五月天| 九九热这里有精品视频| 亚洲精品成人| 久久ER视频com| 人与禽A片啪啪| 色五月色综合| 超碰啪啪网| 九九热在线精品| 色娸娸综合网| 五月婷婷在线综合| 久久精品夜色噜噜亚洲a∨| 真实亲子乱子伦高清在线观看| 国产亚洲成人综合| 99热中文字幕久久| 无码色综合| 黄色AV日韩| 美女亚洲五月丁香| 亚洲V国产V欧美V久久久久久| 青草久久五月婷伊人| 婷婷婷狠狠| 99热免费在线| 99九九精品视频| 天天操夜夜操| 激情婷婷狠狠干| 涩涩激情五月婷婷| 另类视在线| 高潮毛片遮挡费高一百度| 一本色道久久88综合日韩精品| 五月婷婷激情综合拍| 色五月婷婷影视| 亚洲午夜视频| 婷婷丁香久久| 色婷婷很很十八禁| 99精品综合视频| 人妻狠狠操| avh片在线观看| 99久在线视频| 丁香五月天婷婷久久| 亚洲色图在线视频| 五月婷色| 五月激情六月丁香| 夜夜天天久久婷婷| 超碰二区| 一本婷婷丁香久久| www.五月.com| 五月婷婷中文字幕| 久久国产精品乱子伦_靑青草…| 五月婷婷丁香大香蕉| 五月丁香六月婷婷啪啪| www,天天干| 五月婷婷熟女| 香蕉综合在线| 五月丁香偷拍| 超级碰碰97在线| 日本一级一级一级一级| 色色色成人网| 人人爽人人爽人人爽人人爽| 久久婷五月婷| av免费在线网站| 99视频在线观看地址| 婷婷色在线| 日本色爽| 久久久五月四色| 久久黄色网扯| 97资源碰碰| 成人AV网站在线| 久热伊人91| 国产精品人人做人人爽人人添| 丁香五月网址| 日韩aaa| 99亚洲无码| 五月色导航| 天天天天天天天干| 91人妻PORNY九色大屁股| 五月丁香人妻| 精品视频网| 久久丁香综合香蕉| 无码少妇高潮喷水A片免费 | 狠狠五月激情丁香六月| 另类图片五月天激情| 激情涩播| 成人.在线日韩| 国产人妻人伦精品一区二区| 婷婷爱五月天| 1024人妻| 色综合久| 狠狠操狠狠爱| 欧美日韩99| 任你爽精品免费视频6| 丁香六月婷婷五月婷婷| 丁香五月六月婷婷殴美综合| 天天舔天天插天天干| 先锋男人99资源| 日 日干 日日做| 六月丁香婷婷亚洲中文玖玖| 密黄站| A一级操| 五月婷婷六月丁香激情综合网| 精品国产人人爱人人| WWW.夜夜操.com| 色噜噜狠狠色综合伊人| 色婷婷基地在线| 99色综合网| 亚洲VA欧美VA| 国产视频久色| 手机AVAV天堂看网| 久久99热精品a片在线观看| 精品少妇蜜臀91| 天天插天天插天天插| 拳交大逼| 99精品视频在线观看| 婷婷五月大香蕉| 97超碰综合| 丁香五月婷婷基地| 被男人添B超爽视频| 亚洲欧美在线观看| 色色网站日本91| 伊人久热91网| 久久伦乱| 日韩中文欧美| 丁香开心深爱| 色色综合视频| 色五月婷婷九月| 97久久超碰| 免费无码毛片一区二区A片 | 国精产品一区一区三区免费视频| 国产精品天天狠天天看| 日韩三十六页| 91啪啪网| 天天插天天玩天天干| 综合五月亭亭9| 亚洲成人黄色网| 色五月婷婷操逼| 五月婷婷激情综合| 五月色婷婷AV| 日本人人xxx| 啪啪一区| 日日影院 | 99热999| 热99国产精品| 99在线国| 午夜成人网站在线观看| 丁香五月天电影| 天堂久久久久天堂网| 色九亚洲| 97久久香草精品视频| 五月天久久91| www.久热| 色色色1网址| 久久九九99| 丁香婷婷综合激情五月色| 狠狠干综合网| 第九色区av天堂| 九月丁香欧美综合| 五月天激情播播网| 婷婷五月天狠狠搞干| 99日本精品视频热| 青青久久五月| 91超碰九色| 这里只有精品视频一区| 丁香五月在线自慰| 九九在线热九九在线热99热| 91九色中文| 就爱干 在线| 激情综合在线观看| 五月J香蕉婷婷| 99人妻碰碰碰久久久久禁片| 狠狠色精品综合| 色色色色网| 久久女人九九| 色五月开心五月激情五月| 久久这里只有精品99| 99热免费| 五月婷婷亚洲| 婷婷中文字暮| 五月激情在线| 99九九99九九九视频精彩| 思思久久青草热| 欧美日韩99| 国产综合81p| 日韩欧美骚货| 色色操| 91超碰九色| 色五月婷婷一二| 玖玖色综合色| 五月婷六月综合在线观看| 狠狠干狠狠干| 丁香五月停停av| 五月久久噜噜| 九九 激情 网| 中文网AV| 婷婷五月天激情网| 婷婷五月天天| 麻豆科斗777| 色婷婷久久综合| 五月天久久激情| 日本性激情色播| 狠狠干,狠狠操| 婷婷综合| 久久婷婷色综合| 99ri视频在线观看| 天天天日天天天干| 五月婷婷色| 99re这里只有精品9| 中文字幕人妻在线| www.91在线看| 五月丁香五月婷婷在线观看| av高清无码| 情欲综合网| 丁香六月综合激情| 婷婷爱在线观看| 日本欧美在线| 97色97干| Caop在线| 亚洲成人婷婷| 色开心五月婷婷丁香HD| 五月天狠狠干| 丁香五月婷婷啪啪视频| 五月天婷婷开心| 亚洲精品无AMM毛片| 九热在线这里有精品6| 丁香五月天堂| 九玖视频这里只有精品| 五月丁香在线观看| 五月天啪啪| 日本天天操| 青青夜夜狠狠夜夜狠狠| 91狠狠综合久久久| 丁香六月av| 五月综合色| 狠狠人妻久久久久久综合丁香| 亚洲精品又粗又大又爽A片| 婷婷六月爽| 九九在线热九九在线热99热| 亚洲小说欧美激情| 男女啪啪视频久 9| 五月亭亭六月天| 久久久久久久久久91|