日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

UniSearch統(tǒng)一檢索層:多源搜索融合架構(gòu)與實(shí)踐

UniSearch統(tǒng)一檢索層:多源搜索融合架構(gòu)與實(shí)踐 UniSearch我如何用一套統(tǒng)一檢索層把三個(gè)“各自為政”的搜索系統(tǒng)揉成一個(gè)接到這個(gè)“UniSearch”項(xiàng)目的時(shí)候我一開始是想拒絕的并不是因?yàn)榧夹g(shù)有多難而是我知道這類“統(tǒng)一搜索”的需求十有八九不是在做一個(gè)新搜索引擎而是在給一堆歷史包袱擦屁股。果不其然業(yè)務(wù)方那邊的情況非常典型訂單數(shù)據(jù)在MySQL里文檔和日志在Elasticsearch里商品和庫(kù)存部分?jǐn)?shù)據(jù)散落在幾個(gè)內(nèi)部API里用戶只想在一個(gè)輸入框里搜出所有東西并且希望結(jié)果按相關(guān)度混排。UniSearch這個(gè)名字聽起來(lái)很唬人落地就是一個(gè)把各種數(shù)據(jù)源串起來(lái)的“總調(diào)度層”只是這個(gè)調(diào)度層要處理的坑遠(yuǎn)比想象中多。如果你也在做類似的事或者正準(zhǔn)備碰企業(yè)內(nèi)部搜索聚合這類需求這篇東西可以幫你少走很多彎路。我講的是自己實(shí)際落地的一套實(shí)現(xiàn)覆蓋從整體架構(gòu)選型、索引策略、查詢分發(fā)、結(jié)果融合排序到上線后各種疑難雜癥的排查實(shí)錄。所有方案都基于我踩坑后的最終版不是說(shuō)它唯一正確但至少是能扛得住線上流量和業(yè)務(wù)方花式蹂躪的一種設(shè)計(jì)。1. 統(tǒng)一搜索到底在解決什么問(wèn)題先說(shuō)一個(gè)最容易混淆的認(rèn)知UniSearch不是搜索引擎它是一層“調(diào)度和融合中間件”。搜索引擎關(guān)心的是怎么從海量文檔里快速撈相關(guān)文檔而UniSearch關(guān)心的是怎么把已經(jīng)存在于不同系統(tǒng)里的檢索能力以統(tǒng)一的接口暴露出去。你可以把它理解成公司前臺(tái)的接待員——你不會(huì)直接去找財(cái)務(wù)、去找法務(wù)、去找技術(shù)部而是把訴求告訴前臺(tái)由前臺(tái)判斷該找誰(shuí)然后把多個(gè)部門的答復(fù)整理成一份簡(jiǎn)報(bào)交給你。1.1 三種典型接入場(chǎng)景拆解第一類場(chǎng)景是結(jié)構(gòu)化數(shù)據(jù)源的直查。比如MySQL或PostgreSQL里的訂單表、用戶表檢索條件通常很固定按訂單號(hào)、按用戶名、按時(shí)間范圍、按狀態(tài)。這部分完全不值得自建倒排索引直接通過(guò)關(guān)鍵詞解析生成SQL條件即可難點(diǎn)只在于如何把用戶輸入的模糊關(guān)鍵詞安全且高效地轉(zhuǎn)換成查詢條件。第二類場(chǎng)景是全文檢索引擎的代理。Elasticsearch這類系統(tǒng)本身已經(jīng)做得很好UniSearch在這里的角色不是替代它而是把ES的DSL翻譯成內(nèi)部統(tǒng)一的查詢模型避免上游系統(tǒng)直接與ES耦合。這樣做的直接好處是哪天你想從ES換成OpenSearch或者把一部分索引遷到ZincSearch上游業(yè)務(wù)代碼一行都不用改。第三類場(chǎng)景是實(shí)時(shí)API的在線聚合。商品庫(kù)存狀態(tài)、配送進(jìn)度這類數(shù)據(jù)時(shí)效性極高而且經(jīng)常不在你自己掌控的數(shù)據(jù)庫(kù)里只能通過(guò)供應(yīng)商或兄弟團(tuán)隊(duì)提供的HTTP接口實(shí)時(shí)獲取。UniSearch需要在這種場(chǎng)景下做并發(fā)請(qǐng)求、超時(shí)控制和結(jié)果合并。1.2 為什么必須做統(tǒng)一查詢模型我見過(guò)很多團(tuán)隊(duì)做統(tǒng)一搜索最后做成了一個(gè)“大雜燴”網(wǎng)關(guān)每個(gè)數(shù)據(jù)源各寫一套查詢邏輯對(duì)外暴露的參數(shù)五花八門調(diào)用方得看文檔才能搞清楚什么時(shí)候傳filters什么時(shí)候傳q什么時(shí)候要拼search_type。這種方案上線半年后基本就進(jìn)入維護(hù)地獄。真正的UniSearch項(xiàng)目第一步不是寫代碼而是定義一套“萬(wàn)能查詢中間格式”。這套格式一般包含query關(guān)鍵詞、filters結(jié)構(gòu)化過(guò)濾條件、sort排序規(guī)則、from/size分頁(yè)、highlight高亮需求、aggs聚合需求這幾個(gè)核心部分。所有數(shù)據(jù)源適配器只認(rèn)這一套格式對(duì)外也只暴露這一個(gè)格式。Elasticsearch適配器負(fù)責(zé)把它翻譯成DSLMySQL適配器負(fù)責(zé)把它拆解成WHERE條件API適配器負(fù)責(zé)把它映射成對(duì)方接口的請(qǐng)求參數(shù)。這才是“統(tǒng)一”二字的精髓。2. 架構(gòu)分層與核心技術(shù)選型確定要做統(tǒng)一查詢模型之后接下來(lái)的任務(wù)就是搭架子。UniSearch整體分為三層接入層、編排層、適配層。這三層各管各的事互不越界。2.1 接入層標(biāo)準(zhǔn)REST接口與參數(shù)設(shè)計(jì)接入層是一層薄薄的HTTP API核心就是參數(shù)校檢和統(tǒng)一鑒權(quán)。我建議接口體設(shè)計(jì)成這樣{ query: 華為手機(jī), filters: { status: ON_SALE, category_id: [12, 13, 14] }, sort: _score, from: 0, size: 20, highlight: true, data_sources: [mysql_products, es_docs, api_stock] }這個(gè)設(shè)計(jì)里有一個(gè)容易被人忽略的點(diǎn)data_sources字段。默認(rèn)情況下UniSearch會(huì)查所有已注冊(cè)的數(shù)據(jù)源但很多調(diào)用方其實(shí)只關(guān)心其中某幾個(gè)。顯式聲明之后編排層能省掉一大半無(wú)意義的查詢分發(fā)。鑒權(quán)方面我只推薦兩種內(nèi)部系統(tǒng)用簽名校驗(yàn)外部系統(tǒng)走OAuth2的client credentials模式。不要用簡(jiǎn)單的API Key打在URL上線上日志一刷全是泄露的憑證。2.2 編排層查詢分發(fā)與并行調(diào)度編排層是整個(gè)UniSearch的心臟負(fù)責(zé)決定“這個(gè)查詢要怎么拆”。一個(gè)查詢進(jìn)來(lái)后先做意圖識(shí)別——業(yè)務(wù)簡(jiǎn)單時(shí)可以用基于規(guī)則的方式來(lái)識(shí)別比如命中某些正則就路由到對(duì)應(yīng)數(shù)據(jù)源復(fù)雜度上來(lái)之后可以訓(xùn)練一個(gè)輕量級(jí)分類器來(lái)做這件事。我這次沒有上分類模型因?yàn)闃I(yè)務(wù)場(chǎng)景足夠收斂凡是帶status過(guò)濾的基本都查訂單和商品凡是帶highlight的在ES查詢里一定用得上。分發(fā)策略上我最想強(qiáng)調(diào)一點(diǎn)并行永遠(yuǎn)比串行好但要有下限保護(hù)。所有數(shù)據(jù)源同時(shí)發(fā)起請(qǐng)求等待最慢的那個(gè)返回后統(tǒng)一合并。這樣響應(yīng)時(shí)間等于最慢數(shù)據(jù)源的耗時(shí)而不是所有數(shù)據(jù)源耗時(shí)之和。但要給每個(gè)數(shù)據(jù)源的請(qǐng)求設(shè)置超時(shí)上限比如統(tǒng)一1000毫秒超時(shí)的數(shù)據(jù)源直接降級(jí)——返回空結(jié)果并記錄一條warning日志而不是讓整個(gè)UniSearch都跟著卡死。2.3 適配層五種數(shù)據(jù)源連接器的實(shí)現(xiàn)要點(diǎn)我這次接的適配器包括MySQL、Elasticsearch、HTTP API、Redis緩存和CSV靜態(tài)文件每種都有各自的實(shí)現(xiàn)要點(diǎn)MySQL連接器要處理的是動(dòng)態(tài)SQL拼接。關(guān)鍵詞中的特殊字符必須用參數(shù)綁定而不是字符串拼接防止注入。排序字段要做白名單校驗(yàn)絕不允許把前端傳來(lái)的字符串直接拼進(jìn)ORDER BY。Elasticsearch連接器要做的是查詢語(yǔ)法翻譯。用戶輸入的name:華為 AND price:[1000 TO 3000]這種Lucene語(yǔ)法需要由適配器解析后在內(nèi)部轉(zhuǎn)換成結(jié)構(gòu)化Query對(duì)象而不是直接把字符串透?jìng)鹘oES的query_string查詢否則用戶一旦傳錯(cuò)語(yǔ)法ES直接返回400。HTTP API連接器最麻煩的是參數(shù)映射和重試。不同系統(tǒng)對(duì)參數(shù)命名習(xí)慣完全不同有的叫keyword有的叫search_text有的叫q。適配器里維護(hù)一份字段映射表通過(guò)配置而不是硬編碼來(lái)管理。Redis連接器在這里不是做緩存而是做熱搜榜和聯(lián)想詞數(shù)據(jù)源。如果業(yè)務(wù)里需要“搜索框下面顯示熱門搜索詞”這種功能直接從Redis的ZSET里取top N即可。CSV連接器適合處理那種低頻更新的基礎(chǔ)數(shù)據(jù)比如產(chǎn)品規(guī)格表、地區(qū)代碼表。每當(dāng)文件更新后把數(shù)據(jù)加載進(jìn)內(nèi)存建立簡(jiǎn)單的倒排索引查詢時(shí)直接在內(nèi)存里跑。2.4 數(shù)據(jù)一致性方案雙寫與事件同步做統(tǒng)一搜索時(shí)一個(gè)無(wú)法回避的問(wèn)題如果一個(gè)數(shù)據(jù)源里的數(shù)據(jù)變了UniSearch怎么感知我采用的方案是“業(yè)務(wù)主庫(kù)負(fù)責(zé)寫UniSearch負(fù)責(zé)讀”的事件驅(qū)動(dòng)模式。具體做法是業(yè)務(wù)系統(tǒng)在數(shù)據(jù)變更時(shí)發(fā)送MQ消息UniSearch消費(fèi)消息后更新對(duì)應(yīng)的ES索引或清理Redis緩存。這里有一個(gè)大坑如果只依賴MQ很容易出現(xiàn)消息丟失導(dǎo)致數(shù)據(jù)不一致。所以我還保留了一個(gè)每天凌晨的全量對(duì)賬任務(wù)比對(duì)MySQL和ES里的記錄數(shù)及關(guān)鍵字段的校驗(yàn)值發(fā)現(xiàn)不一致的自動(dòng)重新同步。提示沒有對(duì)賬機(jī)制的統(tǒng)一搜索本質(zhì)上就是一個(gè)定時(shí)會(huì)“出現(xiàn)臟數(shù)據(jù)”的搜索。生產(chǎn)環(huán)境上線之前一定要把全量對(duì)賬定時(shí)任務(wù)安排上。3. 核心流程的工程化實(shí)現(xiàn)理念講得再多最后還是要落到代碼。我按一個(gè)真實(shí)的查詢請(qǐng)求從進(jìn)來(lái)到返回的完整鏈路把每個(gè)關(guān)鍵環(huán)節(jié)的工程實(shí)現(xiàn)都拆開講一遍。3.1 查詢預(yù)處理同義詞、糾錯(cuò)、分詞策略原始查詢?cè)~不能直接拿去查數(shù)據(jù)源。首先要做的是查詢預(yù)處理。其中同義詞擴(kuò)展能讓“筆記本”同時(shí)命中“筆記本電腦”和“l(fā)aptop”。實(shí)現(xiàn)上可以通過(guò)配置一個(gè)同義詞詞典在查詢時(shí)做檢索詞擴(kuò)展。其次是糾錯(cuò)這里我用的是編輯距離算法配合業(yè)務(wù)詞表庫(kù)當(dāng)用戶輸入“華偽手機(jī)”時(shí)能識(shí)別出“華為手機(jī)”才是正確的查詢?cè)~。需要注意的是糾錯(cuò)一定要區(qū)分“建議糾正”和“自動(dòng)糾正”前者是在搜索結(jié)果下方提示“您是不是要找華為手機(jī)”后者是直接拿修正后的詞去查詢。我個(gè)人的經(jīng)驗(yàn)是默認(rèn)用建議式糾正只有用戶明確點(diǎn)擊后再執(zhí)行新查詢自動(dòng)糾正太容易翻車。分詞策略上有一個(gè)重要原則索引期分詞和查詢期分詞必須保持一致否則會(huì)出現(xiàn)明明數(shù)據(jù)在那、卻搜不出來(lái)的情況。比如MySQL數(shù)據(jù)源針對(duì)中文商品名做檢索如果索引時(shí)期用的是普通的ngram分詞查詢時(shí)期的預(yù)處理分詞也必須支持同種切法。如果一致性無(wú)法保證寧可用簡(jiǎn)單的contains匹配也不要上一個(gè)花哨的、不可控的分詞算法。3.2 多路結(jié)果的歸一化與字段對(duì)齊并行查詢返回的四五份結(jié)果形態(tài)各異需要把他們轉(zhuǎn)成統(tǒng)一的結(jié)果對(duì)象。這個(gè)過(guò)程我稱之為歸一元組。具體的歸一化規(guī)則如下表數(shù)據(jù)源類型原始返回結(jié)構(gòu)歸一化后的關(guān)鍵字段MySQL行記錄每行是一個(gè)dictid,title,summary,url,score,sourceElasticsearch命中_source及highlightid,title,summary,url,score,sourceHTTP API返回值自定義JSON結(jié)構(gòu)id,title,summary,url,score,sourceRedis熱詞ZSET member和scoreid為空title為熱詞score為熱度CSV內(nèi)存索引內(nèi)存對(duì)象id,title,summary,url,score,source這里有一個(gè)細(xì)節(jié)值得注意score的歸一化。MySQL和API適配器本來(lái)是不產(chǎn)生相關(guān)性分?jǐn)?shù)的我通常會(huì)在適配器里根據(jù)命中字段的重要程度去手動(dòng)計(jì)算一個(gè)基礎(chǔ)分值。比如命中標(biāo)題給3分命中摘要給1分命中標(biāo)簽給2分這個(gè)邏輯放在適配層做。3.3 融合排序策略加權(quán)、歸一化與去重所有數(shù)據(jù)源的結(jié)果匯集到一起之后面臨的難題是這些分?jǐn)?shù)并不可直接比較。ES返回0.8的分?jǐn)?shù)和MySQL里我手算的3分量綱完全不同。直接按原始分?jǐn)?shù)排序沒有任何意義。所以我采用了先歸一化、再加權(quán)、再融合的三步策略。歸一化可以用min-max歸一化或者使用Wilson下限來(lái)平滑處理避免單條極端分?jǐn)?shù)帶偏整體。加權(quán)則需要按照業(yè)務(wù)定義數(shù)據(jù)源權(quán)重。比如訂單這個(gè)數(shù)據(jù)源權(quán)重是1.0商品是0.9文檔是0.6熱詞聯(lián)想是0.3最終綜合得分的公式大致是final_score normalized_score(source) * source_weight去重策略上面我處理的是跨數(shù)據(jù)源重復(fù)的情況。比如商品和文檔同時(shí)引用了同一篇文章的地址或訂單和商品數(shù)據(jù)源里回到同一個(gè)商品ID。去重邏輯是基于ID加URL的聯(lián)合唯一鍵來(lái)判斷。保留哪條優(yōu)先級(jí)順序是API結(jié)果 MySQL ES CSV高優(yōu)先級(jí)的保留其余的被排除。3.4 分頁(yè)與深翻頁(yè)問(wèn)題的工程解法統(tǒng)一搜索還有個(gè)細(xì)節(jié)讓很多人頭疼分頁(yè)。Elasticsearch超過(guò)1萬(wàn)條深翻頁(yè)時(shí)會(huì)報(bào)錯(cuò)MySQL深度分頁(yè)也慢得離譜而API接口壓根不支持from加size特別大的查詢。所以UniSearch的默認(rèn)分頁(yè)上限是100頁(yè)每頁(yè)最多50條。超過(guò)這個(gè)范圍的查詢有兩種降級(jí)方案可選一種是返回提示讓用戶收窄條件另一種是利用ES的search_after做深翻頁(yè)游標(biāo)同時(shí)MySQL側(cè)改用“最后一個(gè)可見ID”來(lái)做keyset分頁(yè)。我的建議是優(yōu)先用方式一畢竟正經(jīng)用戶不會(huì)翻到100頁(yè)以后。3.5 結(jié)果緩存與性能兜底在緩存層上我用了兩級(jí)緩存策略。L1是進(jìn)程內(nèi)緩存使用TTL為30秒適合命中熱點(diǎn)查詢L2是Redis緩存TTL為5分鐘。查詢請(qǐng)求進(jìn)來(lái)先查L(zhǎng)1沒命中再查L(zhǎng)2最后才真正分發(fā)到底層數(shù)據(jù)源。但緩存粒度不應(yīng)該是整個(gè)查詢結(jié)果而應(yīng)該是數(shù)據(jù)源級(jí)別的結(jié)果片段。因?yàn)楫?dāng)四個(gè)數(shù)據(jù)源里只有一個(gè)數(shù)據(jù)變了如果緩存的是合并后的完整結(jié)果其他三個(gè)數(shù)據(jù)源的數(shù)據(jù)會(huì)被無(wú)謂地過(guò)期。單獨(dú)緩存各數(shù)據(jù)源返回的原始片段再在編排層做融合可以最大程度提高緩存命中率。4. 上線調(diào)試與問(wèn)題排查實(shí)錄UniSearch這種糅合了多個(gè)系統(tǒng)的中間層一旦出問(wèn)題表象往往是一坨亂麻。這一章把我線上遇到過(guò)的典型問(wèn)題和排查思路整理出來(lái)你可以當(dāng)做一個(gè)速查表來(lái)用。4.1 請(qǐng)求超時(shí)罪魁禍?zhǔn)淄恰按小钡谝淮紊暇€壓測(cè)時(shí)P99延遲高達(dá)4.8秒這顯然不可接受。排查發(fā)現(xiàn)問(wèn)題不在某個(gè)數(shù)據(jù)源性能差而在于我的初版編排邏輯是按順序調(diào)用各個(gè)適配器。每個(gè)適配器平均耗時(shí)200毫秒串行調(diào)五個(gè)就是1秒加上網(wǎng)絡(luò)開銷和數(shù)據(jù)庫(kù)慢查詢延遲自然爆炸。改造方案是把串行調(diào)用改成Java虛擬線程或Python asyncio并發(fā)調(diào)度整體吞吐從每秒300漲到2000。如果你用的是Java項(xiàng)目CompletableFuture或者虛擬線程都行如果是Gogoroutine加channel天然支持Python的話我會(huì)夸一句asyncio。但我不推薦用裸線程池因?yàn)榫€程池耗盡太容易造成雪崩。經(jīng)驗(yàn)編排層強(qiáng)制要求所有數(shù)據(jù)源調(diào)用必須并行發(fā)起并且設(shè)置統(tǒng)一的超時(shí)上限這個(gè)是UniSearch性能的第一命門。4.2 數(shù)據(jù)源返回慢不能拖死整體壓測(cè)中還發(fā)現(xiàn)如果其中一個(gè)API數(shù)據(jù)源響應(yīng)卡頓幾秒所有請(qǐng)求都會(huì)被阻塞。后來(lái)我把超時(shí)控制做成“逐源設(shè)置”的配置項(xiàng)默認(rèn)統(tǒng)一1000毫秒但對(duì)關(guān)鍵核心數(shù)據(jù)源可以放寬到1500毫秒對(duì)非關(guān)鍵數(shù)據(jù)源比如熱詞、聯(lián)想只給300毫秒。超時(shí)的數(shù)據(jù)源不再等待直接降級(jí)為空結(jié)果在返回體里帶上timeout_sources字段告訴前端這次查詢哪些源超時(shí)了。這樣即使某一個(gè)下游系統(tǒng)故障主鏈路依然是穩(wěn)定的。4.3 數(shù)據(jù)源返回慢不能拖死整體調(diào)參時(shí)發(fā)現(xiàn)ES查詢耗時(shí)最大的瓶頸來(lái)自兩次查詢一次普通請(qǐng)求一次獲取total命中數(shù)。ES默認(rèn)會(huì)在每次查詢時(shí)計(jì)算精確總數(shù)當(dāng)索引體量很大的時(shí)候這種計(jì)算代價(jià)很高。我把ES的track_total_hits設(shè)置為false返回總數(shù)改為近似值查詢性能提升35%。對(duì)搜索結(jié)果而言100頁(yè)以內(nèi)的總數(shù)用近似值完全能滿足需求沒必要讓精確計(jì)數(shù)拖慢整體響應(yīng)。4.4 Redis緩存穿透與更新風(fēng)暴上線初期緩存穿透非常嚴(yán)重。熱詞數(shù)據(jù)源本身數(shù)據(jù)量不大但是用戶搜索時(shí)經(jīng)常輸入一個(gè)冷門詞結(jié)果Redis沒緩存直接穿透到后端而MySQL又拿不到結(jié)果就變成“緩存擊穿空結(jié)果”的雙重浪費(fèi)。我的解法除了常規(guī)的空值緩存之外還加了一層布隆過(guò)濾器在業(yè)務(wù)側(cè)維護(hù)一個(gè)基于所有已知有效查詢?cè)~的布隆過(guò)濾器。攔截掉明顯不存在的查詢MySQL的壓力直接下降了一個(gè)數(shù)量級(jí)。4.5 結(jié)果排序不穩(wěn)定導(dǎo)致投訴有一次業(yè)務(wù)方反饋同一個(gè)關(guān)鍵詞搜索的結(jié)果過(guò)幾分鐘再搜就發(fā)現(xiàn)順序變了。查下來(lái)是融合排序時(shí)分段歸一化算法的問(wèn)題對(duì)于數(shù)量很少的分片結(jié)果min-max歸一化會(huì)放大微小差異同一句話在不同時(shí)間點(diǎn)檢索甚至只因ES分片間的tie_breaker不同就讓分?jǐn)?shù)發(fā)生細(xì)微抖動(dòng)。最后我把歸一化的下限做了鉗制設(shè)置MIN_SCORE0.1保證所有結(jié)果的基礎(chǔ)分不低于0.1就不會(huì)出現(xiàn)因?yàn)槲⑿〔▌?dòng)導(dǎo)致的排序漂移。4.6 日志與追蹤統(tǒng)一檢索必須帶TraceId這是我覺得整塊項(xiàng)目里最值得做的事情之一。UniSearch一次查詢會(huì)觸達(dá)多個(gè)數(shù)據(jù)源一旦線上有問(wèn)題沒有日志鏈路就是在黑暗里摸大象。我強(qiáng)制要求日志系統(tǒng)里集成TraceId從接入層生成貫穿編排層、適配層直到底層數(shù)據(jù)源。每個(gè)數(shù)據(jù)源的耗時(shí)、返回條數(shù)、異常堆棧都掛在這個(gè)TraceId下。后續(xù)排查的時(shí)候只需要用TraceId搜索一次完整的調(diào)用鏈就能定位問(wèn)題。這個(gè)習(xí)慣我從一開始就建了中間有一次線上故障能十分鐘之內(nèi)定位全靠它。5. 工具、參數(shù)與調(diào)優(yōu)細(xì)節(jié)總結(jié)最后把我在整個(gè)把UniSearch項(xiàng)目中實(shí)際使用過(guò)的工具和一些重要的調(diào)優(yōu)參數(shù)整理一下。不是每一家公司的技術(shù)棧一樣所以工具選型僅作參考。5.1 基礎(chǔ)設(shè)施選型參考組件選用方案理由接入層APIFastAPI / Spring Boot高并發(fā)性能好社區(qū)資源豐富異步編排Python asyncio / Java CompletableFuture天然支持并發(fā)調(diào)用全文檢索引擎Elasticsearch 8.x成熟穩(wěn)定生態(tài)完善業(yè)務(wù)數(shù)據(jù)庫(kù)MySQL 8.0業(yè)務(wù)主存儲(chǔ)穩(wěn)定可靠緩存Redis 7.x支持ZSET熱榜及多級(jí)緩存MQ消息RabbitMQ支撐雙寫事件同步監(jiān)控Prometheus Grafana覆蓋接口QPS、P99時(shí)延、各適配器狀態(tài)5.2 一鍵查詢鏈路耗時(shí)監(jiān)控每個(gè)適配器的查詢耗時(shí)必須拆開觀察。我在Grafana里建了十幾個(gè)看板但日常最常用的是三個(gè)總接口請(qǐng)求量及響應(yīng)時(shí)間曲線、各數(shù)據(jù)源平均耗時(shí)對(duì)比柱狀圖、各數(shù)據(jù)源超時(shí)次數(shù)統(tǒng)計(jì)表。每次發(fā)布新版本之后第一件事不是看功能對(duì)不對(duì)而是看適配器耗時(shí)有沒有異常波動(dòng)。如果某個(gè)源的平均耗時(shí)從200毫秒突增到800毫秒不管業(yè)務(wù)方怎么說(shuō)“沒問(wèn)題”都要主動(dòng)去查一下對(duì)方系統(tǒng)的負(fù)載。5.3 上線前必做的三件準(zhǔn)備工作第一件梳理清楚哪些數(shù)據(jù)源是強(qiáng)依賴、哪些是弱依賴。強(qiáng)依賴掛了整個(gè)搜索不可用弱依賴掛了可以容忍。這個(gè)梳理結(jié)果決定了超時(shí)和降級(jí)方案怎么設(shè)計(jì)。第二件建立一套全鏈路的自動(dòng)化回歸用例。針對(duì)每個(gè)數(shù)據(jù)源準(zhǔn)備標(biāo)準(zhǔn)查詢集預(yù)期結(jié)果集鎖定在固定基線里。每次代碼改動(dòng)先跑這組用例避免只修了A數(shù)據(jù)源卻把B數(shù)據(jù)源的適配邏輯弄壞了。第三件準(zhǔn)備好對(duì)賬腳本。我建議做兩級(jí)對(duì)賬數(shù)據(jù)記錄數(shù)對(duì)賬和字段級(jí)對(duì)賬。先比數(shù)量再比關(guān)鍵字段的哈希一致性這是防數(shù)據(jù)漂移的兜底。提示不要在下班前一小時(shí)首次灰度發(fā)布統(tǒng)一搜索項(xiàng)目。第一晚大概率會(huì)有各種數(shù)據(jù)源連接和權(quán)限的幺蛾子留足排查時(shí)間比什么都重要。6. 下一階段演進(jìn)方向UniSearch做到這里已經(jīng)能穩(wěn)定支撐日常查詢了。但如果業(yè)務(wù)量再往上走有幾個(gè)演進(jìn)點(diǎn)是我明確計(jì)劃要做的。第一個(gè)是引入真正的個(gè)人化排序基于用戶的歷史點(diǎn)擊、收藏行為訓(xùn)練一個(gè)輕量級(jí)的learning to rank模型把融合排序從手工加權(quán)升級(jí)為模型打分。第二個(gè)是增加搜索熱力統(tǒng)計(jì)從Redis熱詞出發(fā)把用戶每天的搜索詞、點(diǎn)擊結(jié)果、跳失率匯入數(shù)據(jù)倉(cāng)庫(kù)形成業(yè)務(wù)洞察報(bào)表。第三個(gè)是更強(qiáng)的同義詞動(dòng)態(tài)挖掘現(xiàn)在用的靜態(tài)詞表維護(hù)成本高后續(xù)計(jì)劃基于用戶搜索日志里的共現(xiàn)詞挖掘同義詞實(shí)現(xiàn)詞表的自我更新。我個(gè)人在這整件事中最大的體會(huì)是做統(tǒng)一搜索難點(diǎn)從來(lái)不在搜索本身而在“統(tǒng)一”二字。統(tǒng)一意味著你要面對(duì)各種歷史系統(tǒng)的怪癖面對(duì)無(wú)法控制的字段命名面對(duì)每一個(gè)數(shù)據(jù)源獨(dú)有的查詢語(yǔ)法和限制。與其想著一套代碼適配全部不如把適配層的邊界劃清楚把統(tǒng)一查詢模型設(shè)計(jì)得足夠通用。只要這兩件事做踏實(shí)UniSearch這個(gè)名字才真正配得上。最后再分享一個(gè)小技巧上線那天先在測(cè)試環(huán)境用真實(shí)用戶搜索日志回放壓測(cè)一遍不要用模擬流量因?yàn)橹挥姓鎸?shí)搜索日志才會(huì)暴露出那些你完全想不到的奇葩查詢?cè)~和冷門字段組合這一條比任何架構(gòu)設(shè)計(jì)都更能幫你省去后續(xù)的救火時(shí)間。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日日碰视频网| 中文字幕加勒比海高清无码免费视频 | 好吊色综合| 欧美亚洲第1页| 日韩色| 人妻欧美| 超碰这里有精品| 少妇蜜汁| 在线黄页看毛片| 久久直播国产| 国产精品点击进入在线影院| 国产精品熟女一区二区三区| 看日韩黄片| 欧美亚洲涩涩| 日本五十路在线| 夜夜春夜夜操| 九九九九九九九九九五码| 97精品综合| 国产三级中文有码在线视频| 色哟哟AⅤ| 久久人妻熟女一区二区 | 亚洲性爱电影| 蜜臀99久久精品久久久懂爱| 97网站在线观看| 欧美亚洲厕所精品偷拍91| 夜夜爽33333| 91快色色色色色| 日韩免费三级黄片电影| 国产精品午夜AV完会免费| 999久久芭蕾| 白嫩妹子国产骚| 99国产精品免费| 97二区四区| 无码国产精品午夜不卡(| 中文字幕一区电影在线观看| 国产一区二区三区导航| 夜嗨影院| 五月天黄色激情视频| 无码人妻精品一区二区中文| 久久精品国产亚洲AV高级北京| 欧美欧美啪啪视频| 99re6国产精品99re| 亚洲图片 激情小说| 久久人人爽爽爽人久久久| 九色 人妻 大香蕉| 亚洲欧美九九| 欧美亚洲丝袜美女电影| 久久亚洲不卡一区二区三区 | 亚洲丝袜二区在线| 天天综合~91| 亚洲日韩资源| 色香天天| 嫩草在线视频| 激情专区综合| 精品射1999| 欧美人妻二区三区| 91丨精品丨国产丨丝袜| 97超碰国产亚洲精品| 欧美色91| 国产美女在线精品免费看| 人妻精品视频一区二区三区| 国产女人高潮嗷嗷嗷叫小说 | 欧亚性爱啪啪| 操一区| www鬼畜国产男人的天堂| 91色图片| 亚洲图片偷拍欧美| 超碰亚洲97| 久久婷婷在线观看视频| 欧美激情亚洲情色| 中文字幕99999| 色波多| 欧美亚洲第一页| 中文字幕精品资源在线| 久久亚洲天天做| 正宗无毛一线天嫩逼| 妇女一区二区三区| 在线观看色视频| 国产做?爰片久久毛片?片美国| 亚洲AV无码久久久国产精品| 亚洲中文字幕妇伦久久| 国产女人9999| 搡老熟女免费视频| 成年人一级黄色毛片大全在线观看| 国产99 中文字幕日韩小视频| 五月丁香色综合| 久久爽爽精品| 一级一性爱免费视频| 国产午夜激片Av毛片不卡| 亚洲老熟妇xxx| 97在线欧洲| 在线观看啊啊啊啊啊| …亚洲黄色厕厕女女在线播…| 人人操人人插 - 百度 - 百度| 9997se| 亚州一区二区| 操比国产| 91亚洲丝袜| a片久久久久久久久久久久| a级成人毛片免费视频高清| 青青草自拍视频在线播放| 精品人妻一区二区三区视频| 亚洲春色一区二区三区| 色欧美天天| 国产少妇内射| 久久美女国产| 丝袜综合| 人妻偷拍一区二区三区| 欧美毛片在线网| 97精品97久久| 翔田千里AⅤHD无码| 1024日韩| 少妇蹲下露出大唇5| 欧美性爱伊人| 狠狠操狠狠燥| 日本肏逼视频在线观看| 亚洲牲交| 欧洲精品一区二区三区| 一级@啪啪视频| 少妇蜜汁| 综合亚洲欧美精品日韩?v| 九九色影院| 亚洲欧美激情在线视频| 日本高清视频在线观看黄已三辽| 欧美黄片视频在线观看免费 | 婷婷深爱五月| 欧美综合色综合| 亚洲AV噜噜狠狠网址蜜桃动漫| 91撸色网 玖玖网 欧美| 综合激情二| 这里是精品| 看免费的黄片| 蜜桃精品一区二区三区久在线| 成人无遮挡毛片免费看| 欧美,亚洲,日韩,v,天堂,手机在线观看| jk白丝没脱就开始啪啪| 试看60秒| 国产67194| 国产少妇内射| www.欧精品| 日本爽爽爽爽爽爽免费视频| 日韩精品操少妇| 国产一区在线免费播放| 日韩欧美麻豆 | 91快色色色色色| 五月天亚洲网| 口爆综合网| 九九九久久久| 亚洲高潮影院| 91夜色| 性色avv| 亚洲成人精品在线一区| 91欧美巨乳| 国产精品电影| 久久精品国产亚洲妲己影视| 亚洲不卡一| 色综合91| 在线无码网站| 久久久久久久九九九九| 精品一区二区2| 五月婷婷综合在线| 为用户提供免费看黄网址在线观看| 亚洲视频一二区| 极品尤物在线观看| 少妇熟女1区2区3区| 欧美国产一区二区三区麻豆传媒| 亚洲成av人片色午夜乱码| 伊人超碰97| 欧美91在线+|+欧美| www99热| 最新av中文字幕高清| 亚洲AV不卡在线观看| 污啪啪啪视频| 国产精品免费美女视频| 亚洲成人久久一区二区| 国产亚洲日韩在线三区黑人| 91欧美综合| 国产高清不卡视频| 婷婷色婷婷| 欧美性爱网97| 后入内射蜜桃臀| 一区在线观看中文字幕| 色噜噜精品一区二区三| 亚洲A曰本VA欧美VA视频| 欧美,日韩,中文,另类| 国产农村妇女精品1区二区| 日韩一级片在线看| 中日韩久久久| 女人被男人桶爽视频网站| 肥臀熟女一区二区三区视频| 怡红院久久老司机| 国产夫妻性生活视频| 黄色高清久久无码依人| http://qxhbdz.com| 久久98| 日本在线不卡v二区| 国产美女销魂在线观看不卡| 中文字幕在线免费观看2| 国产精品69久久久久久久| 丰满搜索结果 -第18页- 久久高清无码 | 国产高清成人传媒影视| 日韩人妻有码免费视频| 性爱综合一区二区| 亚洲不卡三级手机播放| 欧洲久久一二线| 久夜操| 久久精品无码熟妇一区二区三区视频导航| 97频视在线| 国产无码精品高清| 成人精品无码| 伊人国产成人av网站| 熟女探花啪啪| 影音先锋少妇| 超碰人人在线| 久久婷婷五月天| 丁香五月天啪啪| 久久精品色欧美aⅴ一区二区| 久久五月天婷婷丁香中文字幕| 三级日本一区二区三区| 国产美女裸体秘 永久无遮挡| 91处女在线观看| 91成人18| 自拍偷拍 日韩欧美| 成人97人人超碰人人| 久久久精品中文字幕爱豆| 国产精品白丝在线播放| 可能人人看人人摸| 韩国一级做A片免费的| 人妻在线视频| 另类图片五月| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 日本三级韩国三级美三级91| 超碰97综合| 91色色网站| 蜜乳中文字幕a在线| 蜜乳中文字幕a在线| 亚洲国产成人精品久久久国产成人一区二区 | 干B| 999九九精品| 亚洲双插| 强奸抽插av| 成人小说视频在线精品欧美| 成人乱码一区二区三少妇| 亚洲各类熟们中文字幕| 97AV爱| 久久99草| 香蕉人欧美综合| 热思思免费视频| 日韩乱伦视频| 大香蕉伊人网WWWn0n| 91操熟女| 五月天色五月| 激情网色| 九九无码| 久久久久久久9| 超碰日韩美妻| 任你干在线视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美五十路熟| 亚洲极品| ,国产乱人伦精品一区二区三区| 欧美人人曰人人操人人射射| 人妻天堂网| 久热大香蕉网站| av九九| 亚欧高清在线| 亚洲精品日韩国产欧美| 色五月婷婷色| 男人的天堂2019AV| 97视频在线免费看| AV在线资源| 69综合网| 亚洲欧美天| 搡老熟女国产1000部| 日本道人妻久久久在线不卡色视频| 亚洲一区日韩精品中文字幕| 3PAV乱伦视频| 久久受www免费人成| 超碰成人公开| 超碰狠狠操| 性欧美另类高清| ,国产乱人伦精品一区二区三区| 久久久久久久久久久久久久9999| 精品97精品97| 另类图片天天影视| 91丨豆花丨熟女| 91成人久久 | 国产不卡免费在线视频| 九九99久久| 国产精品午夜成人福利| 2019亚洲男人天堂| 久久欲| 日本中文字幕在线视频| a片久久久久久久久久久久 | 九区国产| 国产JDAV无码视频在线观看| 欧美顶级黄片AAAAA在线免费看| 伊人久久88国产女| 噜噜噜亚洲精| 亚洲AV无码AV吞精久久久久| 玖玖97综合| 国产AV天美传媒一区二区三区 | 色一情一乱一乱一区91Av| 东北黄色电影| 九九碰九九爱97超| 嗯阿好爽好紧| 亚洲欧洲成人在线电影| 无码粉嫩白虎一线天b区| 亚洲天堂加勒比| 亚洲国产成人精品无码专区| 九九国产| 天天躁日日躁AAAAXXXX国产| 亚洲情色一区三区| 最新国内自拍av免费| 久久香蕉网| 2020中文字幕在线| 一级A啪啪啪啪| 热热色综合网| 九九亚洲| a片偷拍视频| 蜜臀亚洲中文| 国产三级多多影院2022国产AA一级毛片无码 | 好屌色综合| 日韩一区二区高清在线观看的| 日本999精品| 91青视频| 中文字幕奈奈美被公侵犯| 91爱看| 干干干天天| 亚洲成人免费中文字幕| 久久9精品网站| 欧美麻豆成人同性GⅤ在线| 在线播放中文字幕| 五月婷婷丁香六月| 超碰免费人妻人人| 超碰一区二区| 免費人妻夜夜爽天天爽爽一区| 亚洲成人激情小说视频| 黑人粗大V S日韩女优视频| 九九久久精品| 国产久久成人| 免费视频97| 蜜臀亚洲中文| 五月婷在线| 色999偷自拍拍| 亚洲熟女乱色一区二区三区| 日韩精品人妻一区二区| 国产av色网| 97中文字幕色| 久久五月份| 亚洲日韩国产欧美综合v| 熟妇的味道HD中文字幕| 欧美偷拍| 一本久久久精品| 伊人在线大香蕉视频久久| 欧美综合骚| 亚洲午夜福利视频| 日本中文字幕在线视频| 能直接看AV的网站| 久久久久久国产精品免费网站| 国内精品久久人妻性色av| 久久9久久| 91操熟女视频| 国产精品播放| 激情六月婷婷| 欧美久久九九| 欧美色图私拍91| 国产久久一区二区三区野外在线| 久久精品天美| 欧美 综合| 国产精品熟女AV中文字幕在线播放| 逼逼逼逼操操操操操操操操操午夜剧场 | 亚洲一区二区三区在线激情| 欧美人妻少妇| 综合五月婷婷亚洲一区| 操比国产| 天综合网| 九九九九九九视频| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 蜜桃久久一区| 日韩黄片影院| 福利在线黄片| 久久久99久9| 人人摸人人舔一区二区| av天堂电影网| 国产成人天堂| 性高潮久久久久久久久久久| 草草电影院| 一区操逼日比视频| 九九九午夜| 粉嫩av一区二区三区四季| 亚洲国产成人精品女人久久久| 久久在线观看免费视频| 97久久视频| 国产美女激情| 亚洲中字幕日本一区二区三区| 双插性欧美一二三区| 一块操欧美性爱| 日韩国产十八禁| 天美传媒精品一区二区| 丝袜美腿制服人妻二区中文字幕| av天天在线观看| 插插综合网天天影视网| 亚洲欧美在线观看无码| 人妻激情另类| 操熟女91| 欧美日韩国产精品久久色婷婷| 久久男人的天堂| 天天躁日日躁AAAXX| 免费超碰97久久| 91一区二区三区蜜桃| 天美国产精品| 日韩三A大片在线观看| 床上啊啊啊一区二区三区| aV中文麻| 欧州色图区| 中文字幕三四区| 天天日天天插| 欧美日韩1234| 骚货| 日韩黄片影院| 欧美激情久久久久| 91精品无码人妻系列| 久草线上视频免费看| 综合欧美激情网| 狠狠做深爱婷婷久久二区| 综合网欧| 国产精品一二三在线看| 日韩电影中文字幕| 蜜臀久久99精品久久久老,,| 亚洲日韩精品久久久久一区壹牛 | 欧美1区二区三区公司| 亚洲drav色图| 天天摸,夜夜摸| JIZZJIZZ亚洲女人被躁| 亚洲视频小说| 四虎AV在线观看| 亚洲欧美日韩制服另类| 欧洲性人爱视频| 久操99| 草莓精品视频| 国产无码高清操逼视频| 欧美在线|亚洲| 大香蕉伊人网WWWn0n| 日韩一性一交一A片俄罗斯| 熟女人妻一区二区三区| 国产人妻精品一区二区三区秋霞 | 97超碰国产精品| 成人性爱全视频观看| 伊人操| 97国产精选| 亚洲青色欧美| 大香蕉在线免| 玖玖人人爱| 91精品久久综合熟女| 看大黄色大片原件| 日韩欧美大力操| 日本久久超碰| 亚洲图片视频小说| 久久久久久少妇| 亚洲美女 晚间男人天堂 | 伊人久久大香大香线蕉中文| 福利视频一区二区微拍| 亚洲黄片免费在线播放| 熟妇综合一区二区三区| 熟妇熟女一区二区三区| 偷拍综合网| 日韩性爱小视频| 99精品国产户外露出| 97色碰| 超碰地址久久| av黄图片在线观看| 中文字幕五月婷婷免费| 欧美少妇性爱网站| 亚洲无码一区二区三区三州| 综合久欧洲| 日韩无码a片| 亚洲中文字幕精品一区| 福利操逼| 天天爽天天操| 麻豆天美国美国产| 亚洲性综合11| 久久精品午夜国产亚洲AV无码| jazzjazz国产精品麻豆| 中文字幕中文字幕一区二区| 9999免费精彩视频| 91欧美美女日韩国产婷婷| 人妻大相焦在线| 33044男人的天堂深夜备| 久九色| 欧美在线永久天堂| 91精品久久久久久综合五月天| 91蜜臀熟女| 亚洲麻豆18发?| 麻豆三极片| 亚洲强奸乱伦影视网| 99热亚洲天堂| 蜜臀AV午夜精品久| 国产亚洲精品第一最新| 日韩精品人妻中文字幕久久久| 亚洲一区制服诱惑| 麻豆综合一区av| 久久久com| 国产午夜福利视频在线| 熟女91网站| 操逼网免费无码视频| 目产99999久久999| 国产精品一区二区亚洲人成毛片 | 青青草影视蜜久久| 日韩国产欧美伦理在线| 青青草吊丝| 精品视频一区二区| 久久精品欧美一区蜜桃| 91爱网| 天天综合AV| 超碰色老头| 亚洲,欧美,春色,另类| 欧美色图20P| 97干在线| 91综合色| 躁躁日曰躁2020| 久久丁香久草综合网| 五月天久久婷婷亚洲| 久久这里只| 日韩人妻少妇 一区二区三区| 久男人久久| 久久久久亚洲AV无码专区少妇| 麻豆黄四叶草网站| 操逼操逼视频操逼| 熟妇人妻一区二区三区| 日本一级真人黄色性爱视频| 人妻精品综合中文字幕在线| 欧美探花网| 嫩草91| 手机在线人成免费视频| 日韩在线观看AV| 伊人久久大香大香线蕉中文 | 久操网线| 欧美—性—交—色| 91网亚洲| 91干熟女| 99久久亚洲精品无码毛片潘甜甜| 大香蕉十区| 国产精品久久久久久亚洲色欲| 亚欧美综合网。| 99爱爱| 91w欧美| 97精品中文字幕| 激情综合97| 欧美探花网| 久久久无码精品人妻二区 | 亚洲伊人久久综合97| 九九国产热| 久久久九97| 夜间福利片1000无码| 九九九国产| 国产精品色哟哟| 五月婷婷六月色| 国语对白在线播放视频| 17c嫩草51久久91嫩草| 激情视频图片| 亚洲有码第一页| 狼人综合婷婷激情四射| 欧美中出1| 国产一级内射无挡观看| 亚洲精品性爱片| 啊啊啊好舒服视频| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 香港成人一级视频在线青青草| 亚洲 日韩 欧美 国产综合体| 国产亚洲精品一区二区三区| 欧美色欧美| 96久久久久久久| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 日韩美女操b| 中文字幕一区电影在线观看| 国产日逼视频| 欧美A片中文字幕| 色婷婷六月丁香七月婷婷| 97在线免费观看视频| 亚洲资源一区| 一区二区三区四区理论片| 99re这里只有| 超碰97人妻在线| 少妇一区二区三区| 成人无码在线超碰网| 岛国激情视频在线观看| 粉嫩av在线| 9精品久久久久| 亚洲人精品久久久| 中欧人妻丝袜中文字幕| 亚欧性爱无码| 蜜乳av首页| 青草视频在线看看看看看看看看看| 真实高潮91| 97爱b| 夜夜高潮夜夜爽夜夜爱爱一区| 99精品九九九九九九| 久热热| 人妻81p| 欧美精品第3页| 亚洲天天影视色综合| 97伊人超碰| 操东北女人| 欧美日韩性爱操大逼| 亚洲AV免费在线观看| 亚洲国产中文字幕| 测评在线观看AV| 亚洲日韩美女中文字幕乱| 欧美99热| 欧洲亚洲天堂精品| 奇米四色网| 97色色婷婷| 午夜精品久久久99热蜜桃的功能特点| 一级做受视频免费是看美女| 人人人人人人少妇| 91日产桃蜜| 亚洲女毛多水多21P| 亚洲色图欧美色图制服诱惑| av三级电影在线播放| 天天插天天操| 欧美骚少妇| 九九色影院| 亚洲男人的天堂AV| 中字幕人妻一区二区三区| 日本五十路熟女一区二区| AV丝袜东京热| 久久久久久久久成人av解说| 中文字幕78| 亚川综合视频| 亚热日本熟女| 思思热免费视频观看| AV99热18这里只有精品| 日本一区二区成人在线| 午夜美女诱惑电源网| 中文字幕第页| 五十路三级片| 九九九只有精品| 日本肉体xxxx裸交| 日本色色色网站免费看不卡| 丝袜视频一区二区在线播放国产中文| 日欧操屄| 综合自拍| 麻豆av一区二区三区| 欧美精品成人在线播放| 天天cao在线| 99re6久热只有精品6在线直播| 成年无码动漫av片无尽在线| 大香蕉青青9| 99免费在线视频| 草草影院最新网址| 日本 情色 1区| 熟妇熟女一区二三区| 一区二区三区麻豆| 国产最火爆久久国产网站网站| 国产Av超碰| 九九色影院| 乱老熟女一区二区三区| 欧中美三级一区二区三区| 91操操| 人妻丝袜一区二区三区在线| 尤物视频网 刘玥| 丝袜综合| 久久久精品国产亚洲AV无码| 最新日日夜夜天天干干| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲日韩美女丝袜美腿人妻视频| 欧美影音在线| 亚洲免费日韩在线一区二区| 大黄片做爱的大的| 国产无码精品高清| 超碰97人妻| 日韩啪啪视频| www.久久超碰| 亚洲人精品久久久| 狠狠做深爱婷婷久久二区| 99人人干| 伦理片秋霞免费影院| 91三级理论片播放器| 男女激情黄色网址| 欧美午夜一区二区三区| 综合五月天| 东京日日夜夜| 丰满人妻-区二区三区免费| 天天综合精品| 超碰97网址| 欧美传媒一区| 中文字幕青青草| 成人午夜高潮av猛片| 欧美精品23| 国产一级不卡在线观看| 婷婷视频在线免费观看| 免费一级视频特黄色大片| 久久久九九网站| 一区二区三区四区色图| 超碰97色色| 99热8| 日韩99999| 亚洲国产综合图区中文字幕| 97在线视频观看| 久久精品日韩| 天天操女人| 欧洲色综合| 国产亚洲美日韩Aⅴ中文字幕无码成人| www久久99| 欧美一区二区三区成人性生活| 国产精品96| 日韩国产中文字幕| 亚洲女人毛茸茸91| 久操com| 国产熟妇一区二区| 日韩av电影成人在线| 久久久一区二区三区四曲免费听| 五十路熟女,国产欧美精品区一区二区三区| 91综合熟女| 亚洲天堂中文字幕无码男同| 热99re69精品8在线播放| 国产激情片在线观看| 好爽免费视频,| 天天操人人操狠狠插| 日本一区99| 日韩人妻一二三区视频| 吉川爱美98堂在线| 国产精品爽爽v| 国产av热热色| 妺妺跟我一起洗澡没忍住| 啊啊啊在线看| 五月激情天| 久久精品国产亚洲AV清纯| 九月丁香婷婷| 国产精品蜜乳AV| 97中文综合| 美腿色图| 亚洲成人一区二区精品| 亚州综合图片| 夜夜影视四色| 人妻一区二区三区四区视频| 国产盗摄美女如厕大神作品在线观看| 乱伦AVxx| 久久久久久久强迫| 夜夜嗨一区| 欧美亚男人的天堂| 久久日本熟妇熟色高清 | 偷拍亚洲情色| 好爽,再快点啊哈嗯嗯嗯嗯| 欧美麻豆成人同性GⅤ在线| 欧美日韩欧美| 加勒比综合a∨| 看黑丝美女操逼青青网站| 色久桃花影院在线观看| 欧美综合天天| 99国产女人| 玖玖爱伊人玖玖爱| 长久操视频| 久久国产对白激情浪潮 | 大香蕉在线SuP| 日本2020一区二区| 欧洲免费一区二| 竹菊影视国产一区二区| 亚洲日韩人妻中文字幕一区| 国产精品午夜福利| 亚洲熟女乱综合一区二区三区 | 欧美天堂第二区| 女人天堂AV五区在线| 人妻密肉在线观看| 操操逼操操逼操操逼逼| 草草草视频在线免费看| 久久久久久久9999| 亚91网| 四虎精品永久在线观看| 久草福利在线资源站| 色官网在线| 在线免费观看日韩一区| 噜噜瑟| 天天热精品| 九九九九九精品视频| 午夜电影在线观看无码专区| 涩五月婷婷| 欧美αv.com| 热热热热日日漂亮永久永久国产日| 亚洲日本男人天堂网| 超碰精品人妻狠狠干| 欧洲综合色图| 国产精品自在线发布| 伊人97色天使| 97久久久久| 国产福利夜| 97ai亚洲| 国产精品久久久久亚洲av| 夜夜嗨AV一区天天| 欧美亚洲系列| 中国乱伦一区二区| 青青草色插素人| 五月婷婷青青草娱乐伊人| 国产路线专区| 强奸乱伦免费网站| 欧美精品第3页| 黄色成年| 久久综合99| 欧美天天综| a级免费在线观看| 久久久工口| 人妻久久一区二区三区| 色五月网址| 国产路线专区| 精品国产精品一区二区| 国产尤物在线三区| 精品国产片亚洲一区| 五月天人妻综合| 六月婷婷激情| 欧美色宗合| 男女打扑克高清网站| 高清国产无码av| 夜夜嗨绯色| 激情久久av一区av二区av| 99精品丰满人妻无码| 欧美性爱另类综合| 无码精品久久久久久亚洲| 亚洲成人一二三区| 国产高清精品一区二区三区毛片 | 蜜臀99久久精品久久久久| 亚洲欧美色图小说| 91性高潮久久久久久久久| 亚洲青青草| 中文字幕乱亚洲美女精品一区| 欧美亚洲综合高清在线| αⅴ天堂| 亚洲久热| 18岁禁 茉莉成人久久| 国产熟女二区| 国产原创精品| 乱伦1色页| 亚洲 日本 不卡| 中文字幕高清精品一区| 欧美加勒比| 神马久久69| 青娱乐欧美激情一区二区 | 欧美大香蕉专区网| 欧美性,色九九| 日韩精品1区2区中文字幕| 亚洲好看强奸乱伦| 欧美 色 亚洲| 亚洲中文电影| 色欲天天综合网| 日韩黄色一区二区三区| 麻豆熟妇乱妇熟色A片在线看| 亚洲色图殴美色图激情乱伦| www黄片免费看com| 亚洲91网| 97免费视频在线| 99在线免费视频| 欧美久久伊人| 亚欧无码在线| 黄色区免费观看中文字幕| 91爱| 久久亚洲一区女同性恋中文字幕 | 久久69| 婷婷10月天青娱乐| 日本天堂在线播放| 有码免费观看| 婷婷五月天福利| 91综合色噜噜| 中文字幕第2页| 超碰伊人在线| 久久中文色图| 污电影在线观看| 久久精品国产精品| 九九九影院| 偷拍在线观看视频| 亚州九九九精品视频| 久久久亚洲精品中文字幕人妻| 亚洲大色堂| 九九aV| 国产欧美成人第一页在线观看 | 日han少妇无码| 久久人人妻| 综合网欧美在线| 嗯嗯啊啊啊好舒服| 性色avv| 超碰精品在线| 色欲久久99国产精品久久久久久| 成人麻豆av电影网站| 亚洲欧洲激情| 成人AV在线电影| 粉嫩粉嫩一区性色AV片| 在免费jIzzjIzz在线视频| 久久99久久99久久99人受| 防屏蔽在线视频| 中文日韩欧美熟| 97碰久久| 韩日性爱av| 色蜜AV| 亚洲九九视频在线观看| 精品国模无码| 六月婷婷综合| 91丝袜美腿片| 国产精品成久久久久午夜午夜| 国产精品一区二区 尿失禁| 人妻夜夜爽天天爽麻豆三区网站| 日韩人人精品| 美女尤物人人操| 亚洲精品天天影视综合网 | 97在线免费公开视频| 精品视频在线观看精品| 日本大片日本一区二区免费高清| 日韩一区二区熟女| 日韩97在线| 日韩欧美麻豆大片| 97爱综合| 九九成人精品| 免费αⅴ在线观看| 中文字幕人乱码中文字的预防方法 | 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 九九九九九九九九九五码| 91精品无码人妻系列| 强奸乱伦AV网站| 91被操| 综合熟妇一区二区三区| 唐山老熟妇露脸啪啪叫| 91精品国产综合久久久蜜臀酒店| 1区2区3区在线视频| 国产精品久久久久久久AV大片| 麻豆成人av| 国产AV毛片| 诱惑人妻欧美一区在线播放| 波多野结衣AV无码一区| 野狼激情网| 国产剧情在线| 在线综合 亚洲 欧美中文字幕| 久久av无码| 激情五月综合网| 公司1区2区3区精产精| 国产亚洲深夜激情| 欧美色亚洲色| 天天干一区二区| 精品久久久久久中文| 麻豆视频一区二区| 欧美日韩亚洲天堂网| 综合欧美日本三级| 人人搞人人插人人操| 蜜桃精品视频一区二区三区| 99国产精品人妻人伦| 国产精品视频麻豆入口| 91综合网站| 中文字幕第7页| 97视频www| 欧美色视频在线| 成人精品在线免费视频| 97精品国产精品免费观看| 黄色网址久久精品欧美喷水| 国产精品无码av在线 | 亚洲精品亚洲人成人网| 日欧操屄| 在线日韩日本亚洲国产| 一区二区三区色综合| 丁香六月婷婷久久综合| 在线无码操| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 欧美色九九| 欧美第一页| 校园春色欧美| 国产精品经典一卡久久久 | 97免费视频在线观看| 性欧美| 精品一区二区2| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 99热在线观看| 青青草日逼视频| 九九九精品色乱九九九| 97超碰站| 天天插夜夜操| 国产高潮AA片免费看| 超碰91在线| 精品国产乱码久久久久久影片| 好淫网一二三视区| 亚洲αv一区二区三区| 日韩天天本| 日日妻色网| 蜜臀99久久国产| 国产久久久久久| 国产婷婷综合在线观看| 美日韩男女操屄视频| 夜夜精品视频| 免费A片三p视频| 国产成年精品高清在线观看91| 日本性爱不卡视频| 一区在线观看中文字幕| 婷婷激情五月| 亚洲色欲一区二区三区| 久久日本熟女精品一区| 亚洲不卡一| 亚洲毛片久久| 2023天天操夜夜操| 色狠狠 - 百度| 久久一二三四五六七八九区区区 | 青娱乐国产剧情av一区| 免费观看一区| 91精品女厕偷拍视频| 国产美女高潮叫床视频| 久久亚洲影院一区二区| 99热这里只有是精品10| 99久久免费看精品国产一区| 久伊人网78| 欧美Ⅴ性爱| 8050无码八戒| 黄页大片在线观看| 欧美 综合| 熟妇女伦乱视频视频| 久久97超碰| hd成人一区二区在线| 亚洲不卡AV在线| 日本 情色 1区2区3区| 天美精品原创av片国产| 偷看洗澡一二三区美女| 九久9热| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 用力操死我| 亚洲男人天堂2016| 蜜臀久久99精品久久久久久婷婷| 久久av一级av少妇av高潮| 伊人AAA| 性交一区二区在线播放| 亚洲素人综合| 久久久久久一日韩字幕无码| 五月天偷拍| 超碰伊人在线| 成人av福利在线观看| 91人人看| 青青草公开在线免费不卡视频| 91人妻尻屄视频| 青青草视频久久久久| 五十路一区无码| 欧美黄色大香蕉一区二区| surenchaopeng| 97这里只有精品| 欧美男人一区| 综合大香蕉美。| 久久成人国产| 亚洲免费日韩在线一区二区| 熟妇人妻精品一区二区| 无码聚合| 超碰97色色| 亚洲成人在线高清| 亚洲欧洲小说图片视频 | 日欧毛片久久| 五月天婷婷在线看| 伊人色综合超碰| 永久免费观看的毛片的网站| 伊人久操| 成人精品欧洲亚洲| av最新免费中文字幕| 精品妇女一区二区三区| 职场同事知名国产国产精品久久欧美日韩 | 日本不卡二区| 伊人影院在线理论播放| 搡老女人老91二区| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 一区二区三区四区五区高清无码永久视频 | 热99这里有精品综合久久| 中文字幕一区av| 大香蕉中文| 亚洲激情网一二三四区| 国产日本一区二区三区蜜臀在线观看| 婷婷激情五月| 懂色Av一区二区三区| 婷婷亚洲综合| 嗯嗯啊啊操我| 亚洲色堂免费视频| 91在线秘 男同| 超碰人妻中文在线| 免费又黄又裸乳的视频| 国产精品天干天干综合网麻豆 | 91九色精品熟女内射| 国产91丝袜 在线播放| 亚洲中文字幕av| 欧美色网络| 色99在线| 精品九九九九九九| 久草毛片电影怡| 亚洲中字幕日本一区二区三区| 欧美韩国你懂得在线| 亚洲精品xxx| 青青草中出视频| 婷婷综合网站| 国产精品分类在线观看| 传媒免费一区二区三区| 日本精品不卡一二三区| 2017超碰| 日本一区二区三区四区免费观看| 日本97久久| 先锋精品av色鲁| 天天看夜夜看日日干| 欧州激情视频在线一区二区| 99亚洲国产精品色一区二区三区| 可以免费看黄片的视频| 伊人网免费视频| 欧洲亚洲人人爽爽视频| 久久久久国产一区二| 欧美性夜| 自拍二页| 99精品免费| 久久亚洲中文字幕视频| 超碰 国产熟女精品一区| 曰韩精品九九无码| 久久久精品电影| 超碰吊日色| 老司机久久| 97人人草| 日韩人妻制服丝袜av| 老熟女天天操| 亚州久久9| 欧美色五月| 久久精品国产亚洲AV片多多| 国产精品禁久久久精品| 老熟妇综合| 亚洲情色第一页| 久久久久久久久成人av解说| 国产精品成人AV片免费看网站| 日本一久是| 116美女午夜| 精品一区二区人妖| 国产亚洲精品无码三区| 亚洲人妻爽爽爽| 青青草原香蕉日本Ap| 欧美色图偷拍另类| 久久无码电影| 国产在线播放成人免费| 久久久久久裸体| 亚洲妇色| 射丝袜高跟鞋99| 女优视频第10页| 日本熟妇人妻中出视频| 精品国产91av一区二区三区| 欧美双插| 蜜桃网熟妇| 人妻丝袜肏逼| 免费啊啊啊| 欧美九九99久久精品| 91久久99久久91熟女精品| 亚洲囯产精品女人久久久| 欧美性少妇| 欧美精品不卡一二三四在线91| 三级网站超变态精品| 天堂资源站| 九九热视频这里只有精品| 天天综合网在线| 午夜精品99久久久久传媒| 97色碰| 99热成人| 国产精品三级视频网站| 在线一道啪| 中国一级操逼视频| 国产精品无码av在线| 蜜臀久久99精品久久久久| 亚洲天堂一区| 免费视频一二三区| 欧美色网| 又大又大又大又粗爽高潮观看| 超碰在线免费一区二区三区| 九九九九热只有精品|