久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

微服務(wù)架構(gòu)農(nóng)業(yè)害蟲(chóng)識(shí)別系統(tǒng):SpringBoot+Vue+SpringCloud全棧實(shí)戰(zhàn)

微服務(wù)架構(gòu)農(nóng)業(yè)害蟲(chóng)識(shí)別系統(tǒng):SpringBoot+Vue+SpringCloud全棧實(shí)戰(zhàn) 農(nóng)業(yè)害蟲(chóng)識(shí)別這類(lèi)系統(tǒng)在畢業(yè)設(shè)計(jì)和課程項(xiàng)目里真是見(jiàn)到太多了。但絕大多數(shù)人做出來(lái)的版本都是“一個(gè)SpringBoot打天下”——前端Vue打包扔進(jìn)static目錄后端單服務(wù)扛所有請(qǐng)求識(shí)別模型要么本地加載要么干脆調(diào)個(gè)API項(xiàng)目做完能演示就行。這套玩法應(yīng)付答辯沒(méi)問(wèn)題但它離真實(shí)的生產(chǎn)環(huán)境差距實(shí)在太遠(yuǎn)。所以我這次做這個(gè)“微服務(wù)分布式SpringBootVueSpringCloud農(nóng)業(yè)害蟲(chóng)識(shí)別系統(tǒng)”從一開(kāi)始就決定不走尋常路把系統(tǒng)按業(yè)務(wù)邊界拆成多個(gè)獨(dú)立服務(wù)注冊(cè)中心、配置中心、網(wǎng)關(guān)全上識(shí)別服務(wù)用Python獨(dú)立部署前后端徹底分離。這套架構(gòu)做下來(lái)才算真正把“微服務(wù)”這個(gè)概念從簡(jiǎn)歷上落到代碼里。這篇博文我會(huì)完整復(fù)盤(pán)整個(gè)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程。從服務(wù)如何拆分、技術(shù)組件怎么選型到害蟲(chóng)識(shí)別模型怎么接進(jìn)微服務(wù)體系再到Vue前端怎么配合后端網(wǎng)關(guān)做鑒權(quán)和動(dòng)態(tài)路由最后把我踩過(guò)的坑和排查經(jīng)驗(yàn)全部整理出來(lái)。無(wú)論你是正在做同類(lèi)課設(shè)的學(xué)生還是想把單體項(xiàng)目改造成微服務(wù)架構(gòu)的開(kāi)發(fā)者這篇內(nèi)容都能給你一份可以直接抄作業(yè)的參考答案。1. 系統(tǒng)整體設(shè)計(jì)與模塊拆解1.1 為什么農(nóng)業(yè)害蟲(chóng)識(shí)別要上微服務(wù)先回答一個(gè)很多同學(xué)會(huì)問(wèn)的問(wèn)題一個(gè)識(shí)別系統(tǒng)把害蟲(chóng)圖片傳上去后端調(diào)用模型返回結(jié)果這功能單體應(yīng)用完全能做為什么要自找麻煩拆微服務(wù)我的回答是如果目標(biāo)只是“跑通”單體確實(shí)夠。但微服務(wù)架構(gòu)真正解決的不是功能能不能實(shí)現(xiàn)而是系統(tǒng)怎么應(yīng)對(duì)變化和壓力。農(nóng)業(yè)害蟲(chóng)識(shí)別系統(tǒng)在實(shí)際使用中用戶量不大但請(qǐng)求密集且波動(dòng)大——春耕、秋防這些時(shí)間段大量農(nóng)戶同時(shí)上傳照片識(shí)別服務(wù)壓力驟增而用戶管理、歷史記錄查詢這些操作的負(fù)載相對(duì)平穩(wěn)。單體應(yīng)用面對(duì)這種情況只能整機(jī)擴(kuò)容資源浪費(fèi)嚴(yán)重。拆成微服務(wù)后識(shí)別服務(wù)單獨(dú)擴(kuò)到多實(shí)例其他服務(wù)維持原有配置資源利用率立刻不一樣。還有一個(gè)更現(xiàn)實(shí)的理由識(shí)別模型的運(yùn)行環(huán)境天然和Java后端“八字不合”。圖像識(shí)別模型基本都用Python訓(xùn)練依賴PyTorch或TensorFlow如果強(qiáng)行把模型推理塞進(jìn)SpringBoot進(jìn)程要么用JNI調(diào)Python解釋器要么用DJL這類(lèi)工具轉(zhuǎn)模型不僅復(fù)雜度爆炸排查問(wèn)題也異常痛苦。微服務(wù)架構(gòu)允許我把識(shí)別服務(wù)獨(dú)立成Python進(jìn)程與Java業(yè)務(wù)服務(wù)通過(guò)HTTP接口通信兩邊各用各的成熟生態(tài)這才是最務(wù)實(shí)的選擇。所以我的結(jié)論是農(nóng)業(yè)害蟲(chóng)識(shí)別系統(tǒng)非常適合作為微服務(wù)的落地場(chǎng)景——它天然存在異構(gòu)技術(shù)棧協(xié)作、按模塊獨(dú)立擴(kuò)縮容、多團(tuán)隊(duì)并行開(kāi)發(fā)這些微服務(wù)要解決的典型問(wèn)題。拿這個(gè)題目練手微服務(wù)比隨便拿個(gè)CRUD系統(tǒng)硬拆要有說(shuō)服力得多。1.2 服務(wù)拆分方案五個(gè)模塊職責(zé)清晰項(xiàng)目最終拆成了五個(gè)獨(dú)立服務(wù)。拆分的依據(jù)不是“順便拆著玩”而是嚴(yán)格按照業(yè)務(wù)邊界和變化頻率來(lái)切。網(wǎng)關(guān)服務(wù)Gateway所有請(qǐng)求的唯一入口負(fù)責(zé)統(tǒng)一鑒權(quán)、路由轉(zhuǎn)發(fā)、跨域處理。前端只認(rèn)網(wǎng)關(guān)的地址不直接訪問(wèn)任何業(yè)務(wù)服務(wù)。用戶認(rèn)證服務(wù)Auth負(fù)責(zé)用戶注冊(cè)、登錄、Token簽發(fā)與校驗(yàn)。用戶信息、驗(yàn)證碼等核心數(shù)據(jù)放這里登錄會(huì)話采用JWT Redis的方式管理。害蟲(chóng)識(shí)別服務(wù)Detection核心業(yè)務(wù)服務(wù)負(fù)責(zé)接收?qǐng)D片上傳、調(diào)用Python識(shí)別服務(wù)獲取結(jié)果、保存識(shí)別歷史。這個(gè)模塊業(yè)務(wù)變化最頻繁獨(dú)立出來(lái)方便迭代。數(shù)據(jù)服務(wù)Data負(fù)責(zé)作物資料、害蟲(chóng)百科、防治建議等靜態(tài)數(shù)據(jù)的查詢。這類(lèi)數(shù)據(jù)讀多寫(xiě)少后期可以直接加緩存獨(dú)立成服務(wù)后緩存策略不影響其他模塊。Python識(shí)別服務(wù)Python-Recognizer異構(gòu)技術(shù)棧服務(wù)內(nèi)部加載訓(xùn)練好的YOLOv5模型接收?qǐng)D片后返回害蟲(chóng)類(lèi)別、置信度和防治建議。五個(gè)服務(wù)之間如何通信我采用的是同步調(diào)用為主、異步解耦為輔的方式。識(shí)別主鏈路用Feign同步調(diào)用保證用戶能立刻拿到識(shí)別結(jié)果日志上報(bào)、消息通知這類(lèi)非核心操作接入RabbitMQ做異步處理避免跨服務(wù)調(diào)用鏈過(guò)長(zhǎng)拖慢響應(yīng)。這種拆分方案在實(shí)際開(kāi)發(fā)中還有一個(gè)隱形好處我和隊(duì)友可以并行開(kāi)發(fā)互不阻塞。A同學(xué)負(fù)責(zé)識(shí)別服務(wù)B同學(xué)負(fù)責(zé)前端C同學(xué)處理用戶服務(wù)大家在同一個(gè)Git倉(cāng)庫(kù)里按模塊建目錄只要接口約定提前定好沖突率極低。這就是微服務(wù)在團(tuán)隊(duì)協(xié)作層面的核心價(jià)值。1.3 技術(shù)選型SpringCloud組件的取舍邏輯SpringCloud全家桶組件很多但不是每個(gè)都需要選型的時(shí)候我做了不少取舍。注冊(cè)中心與配置中心Nacos。在Eureka和Nacos之間我毫不猶豫選了Nacos。Eureka已經(jīng)進(jìn)入維護(hù)模式而Nacos把服務(wù)注冊(cè)發(fā)現(xiàn)和配置管理二合一能省掉一個(gè)單獨(dú)配置服務(wù)器的部署和維護(hù)成本。更重要的是Nacos控制臺(tái)自帶中文界面對(duì)新手來(lái)說(shuō)比Eureka的黑底終端友好太多。配置修改后還能動(dòng)態(tài)刷新網(wǎng)關(guān)路由調(diào)整、服務(wù)參數(shù)調(diào)優(yōu)都不用重啟服務(wù)實(shí)測(cè)開(kāi)發(fā)效率提升非常明顯。微服務(wù)網(wǎng)關(guān)Spring Cloud Gateway。網(wǎng)關(guān)層我排除了Zuul原因有兩個(gè)。一是Zuul 1.x基于Servlet阻塞式模型性能和Gateway基于WebFlux的非阻塞模型有代差二是Spring Cloud Gateway和Spring Cloud Alibaba生態(tài)配合流暢內(nèi)置的斷言和過(guò)濾器機(jī)制對(duì)路由規(guī)則表達(dá)力更強(qiáng)。我用它實(shí)現(xiàn)了統(tǒng)一鑒權(quán)和接口限流具體配置后面會(huì)細(xì)說(shuō)。聲明式調(diào)用OpenFeign。服務(wù)間通信最終選了OpenFeign。相比直接寫(xiě)RestTemplateFeign的優(yōu)勢(shì)是接口即聲明——定義一個(gè)Java接口加上注解服務(wù)調(diào)用就完成了。它內(nèi)置了負(fù)載均衡能力多個(gè)識(shí)別服務(wù)實(shí)例注冊(cè)到Nacos后Feign自動(dòng)做輪詢分發(fā)擴(kuò)容后不需要改任何代碼。熔斷與限流Sentinel。這個(gè)組件是我后補(bǔ)的。一開(kāi)始沒(méi)接Sentinel直到一次壓測(cè)模擬200個(gè)并發(fā)同時(shí)上傳圖片識(shí)別服務(wù)直接打滿CPU導(dǎo)致用戶服務(wù)也一起卡死。這就是典型的“雪崩效應(yīng)”——一個(gè)服務(wù)故障拖垮整條調(diào)用鏈。接入Sentinel后我給識(shí)別服務(wù)和數(shù)據(jù)服務(wù)配置了熔斷規(guī)則和線程隔離下游出問(wèn)題時(shí)自動(dòng)降級(jí)返回提示而不是無(wú)限等待超時(shí)。分布式事務(wù)不引入Seata用柔性方案。這里要特別說(shuō)明一下我沒(méi)有盲目引入Seata。農(nóng)業(yè)害蟲(chóng)識(shí)別系統(tǒng)的核心鏈路是“上傳圖片→識(shí)別→保存歷史記錄”跨服務(wù)寫(xiě)操作很少只有識(shí)別歷史和新用戶注冊(cè)這兩處涉及多服務(wù)數(shù)據(jù)一致性。為這種低頻場(chǎng)景引入Seata重武器會(huì)增加所有服務(wù)的事務(wù)開(kāi)銷(xiāo)和部署復(fù)雜度。我的方案是非關(guān)鍵數(shù)據(jù)用最終一致性保證——確認(rèn)用戶注冊(cè)成功后先返回成功歷史記錄通過(guò)事件消息異步落庫(kù)這用本地消息表就能實(shí)現(xiàn)簡(jiǎn)單可靠。下面是完整的組件選型清單可直接參考組件選型說(shuō)明注冊(cè)/配置中心Nacos 2.2.0服務(wù)發(fā)現(xiàn) 配置動(dòng)態(tài)推送網(wǎng)關(guān)Spring Cloud Gateway 4.0.x基于WebFlux配合Nacos動(dòng)態(tài)刷新路由服務(wù)調(diào)用OpenFeign聲明式HTTP客戶端 內(nèi)置負(fù)載均衡熔斷限流Sentinel 1.8.7按服務(wù)維度配置降級(jí)規(guī)則認(rèn)證JWT Redis無(wú)狀態(tài)會(huì)話網(wǎng)關(guān)統(tǒng)一校驗(yàn)消息隊(duì)列RabbitMQ異步處理日志與通知微服務(wù)框架Spring Cloud Alibaba 2022.0.0.0與SpringBoot 3.1.x完美兼容2. 核心功能實(shí)現(xiàn)與關(guān)鍵細(xì)節(jié)2.1 害蟲(chóng)識(shí)別模型從PyTorch到在線服務(wù)識(shí)別功能是整個(gè)系統(tǒng)的靈魂但模型本身并不是我訓(xùn)練的重點(diǎn)——農(nóng)業(yè)害蟲(chóng)數(shù)據(jù)集在公開(kāi)渠道能找到不少我選用的是基于YOLOv5架構(gòu)的預(yù)訓(xùn)練權(quán)重再針對(duì)水稻、玉米常見(jiàn)害蟲(chóng)做了微調(diào)。真正花時(shí)間的地方是把模型包裝成一個(gè)穩(wěn)定可用的在線服務(wù)。Python側(cè)我選擇了FastAPI搭建HTTP服務(wù)而不是用Flask。原因是FastAPI原生支持異步處理模型推理本身是IO密集型和CPU密集型的混合操作異步能最大化利用GPU資源。服務(wù)內(nèi)部做了一個(gè)很關(guān)鍵的優(yōu)化模型常駐內(nèi)存。很多人寫(xiě)模型服務(wù)會(huì)犯一個(gè)錯(cuò)誤——每一次請(qǐng)求都把模型重新加載一遍推理時(shí)間300毫秒模型加載卻要5秒這體驗(yàn)誰(shuí)用誰(shuí)崩潰。正確做法是進(jìn)程啟動(dòng)時(shí)加載一次模型后續(xù)請(qǐng)求直接復(fù)用。模型服務(wù)暴露兩個(gè)接口/health做健康檢查返回當(dāng)前服務(wù)狀態(tài)和GPU顯存占用/predict接收?qǐng)D片multipart上傳返回識(shí)別結(jié)果。識(shí)別的返回格式我特意設(shè)計(jì)成和業(yè)務(wù)解耦的JSONJava服務(wù)拿到后要做一次數(shù)據(jù)映射才能入庫(kù){ code: 0, data: { category: 水稻二化螟, confidence: 0.92, bbox: [120, 45, 360, 280], advice: 建議使用蘇云金桿菌進(jìn)行生物防治 } }這里有個(gè)容易踩的坑圖片上傳的大小限制和格式校驗(yàn)必須在網(wǎng)關(guān)層做。前端用戶可能上傳幾MB的高清照片如果不加限制大量圖片涌向Python服務(wù)內(nèi)存直接被打滿。我在網(wǎng)關(guān)統(tǒng)一加了5MB的請(qǐng)求體限制Python側(cè)再疊加驗(yàn)證圖片魔數(shù)文件頭防止惡意偽裝圖片文件。2.2 SpringBoot業(yè)務(wù)服務(wù)識(shí)別鏈路的前后端橋接Java側(cè)的識(shí)別服務(wù)是整個(gè)業(yè)務(wù)邏輯的匯聚點(diǎn)。它對(duì)外提供三個(gè)核心接口/detection/upload接收?qǐng)D片并調(diào)用Python服務(wù)/detection/history查詢當(dāng)前用戶的識(shí)別歷史/detection/detail獲取識(shí)別結(jié)果詳情和防治建議。上傳識(shí)別的處理流程是這樣的請(qǐng)求先經(jīng)過(guò)網(wǎng)關(guān)鑒權(quán)解析出JWT中的用戶ID然后在網(wǎng)關(guān)通過(guò)請(qǐng)求頭X-User-Id透?jìng)鹘o下游業(yè)務(wù)服務(wù)。業(yè)務(wù)服務(wù)收到圖片后把圖片先存到MinIO對(duì)象存儲(chǔ)拿到訪問(wèn)URL后將圖片傳給Python服務(wù)進(jìn)行識(shí)別。之所以先存儲(chǔ)再識(shí)別是因?yàn)槿霂?kù)的歷史記錄需要圖片地址可追溯如果識(shí)別成功后再傳一次圖片網(wǎng)絡(luò)開(kāi)銷(xiāo)和失敗概率都會(huì)增加。識(shí)別服務(wù)返回結(jié)果后業(yè)務(wù)服務(wù)再把整個(gè)識(shí)別記錄異步寫(xiě)入數(shù)據(jù)庫(kù)一條龍串起來(lái)。這里有一個(gè)很重要的設(shè)計(jì)細(xì)節(jié)Feign調(diào)用的超時(shí)時(shí)間必須要單獨(dú)配置。模型推理慢的時(shí)候要2-3秒快的時(shí)候500毫秒波動(dòng)很大默認(rèn)的Feign連接超時(shí)只有1秒讀超時(shí)沒(méi)有顯式設(shè)置遇到模型波動(dòng)直接報(bào)錯(cuò)。我配置了連接超時(shí)3秒、讀超時(shí)10秒同時(shí)打開(kāi)Sentinel的慢調(diào)用比例熔斷——當(dāng)識(shí)別服務(wù)近5秒內(nèi)慢調(diào)用比例超過(guò)40%就觸發(fā)熔斷直接返回“當(dāng)前識(shí)別服務(wù)繁忙請(qǐng)稍后再試”避免用戶無(wú)限等待。識(shí)別歷史查詢則用到了MySQL分頁(yè) Redis緩存。熱門(mén)的防治建議數(shù)據(jù)幾乎不變我在數(shù)據(jù)服務(wù)里加了Redis緩存緩存Key設(shè)計(jì)為“pest:advice:類(lèi)型ID”查詢時(shí)先查緩存再查數(shù)據(jù)庫(kù)命中率穩(wěn)定在85%以上。歷史記錄本身是userId維度的高頻查詢我采用“先查Redis緩存ID列表再按ID批量取詳情”的策略避免大量關(guān)聯(lián)查詢。2.3 Vue前端識(shí)別交互與信息展示前端部分我用的Vue3 Vite Element Plus ECharts。選Vue3的更大意義在于組合式API讓狀態(tài)管理更清晰而且Vite的開(kāi)發(fā)體驗(yàn)比Webpack強(qiáng)太多了——啟動(dòng)秒開(kāi)、熱更新快開(kāi)發(fā)效率完全提升了一個(gè)維度。頁(yè)面結(jié)構(gòu)上我設(shè)計(jì)了四個(gè)核心視圖識(shí)別頁(yè)面核心交互區(qū)。支持本地上傳和拖拽上傳圖片上傳后立即壓縮到800px以內(nèi)前端壓縮可以大幅降低網(wǎng)絡(luò)傳輸體積識(shí)別率并不會(huì)受影響。拿到識(shí)別結(jié)果后頁(yè)面展示害蟲(chóng)圖片、識(shí)別置信度、危害等級(jí)和防治建議地圖上用ECharts標(biāo)記用戶歸屬地的蟲(chóng)害分布熱度。歷史記錄頁(yè)表格展示所有識(shí)別記錄支持按害蟲(chóng)類(lèi)別和日期篩選點(diǎn)擊可以查看詳情。這里我用到了虛擬滾動(dòng)——當(dāng)歷史記錄超過(guò)幾百條時(shí)普通表格會(huì)卡頓虛擬滾動(dòng)只渲染可視區(qū)域的行滾動(dòng)流暢度提升明顯。數(shù)據(jù)看板從數(shù)據(jù)服務(wù)拉取各省害蟲(chóng)上報(bào)量、識(shí)別準(zhǔn)確率趨勢(shì)、TOP10害蟲(chóng)榜單用ECharts繪制圖表。登錄/注冊(cè)頁(yè)JWT認(rèn)證流程登錄成功后將Token存到localStorage每次請(qǐng)求由Axios攔截器自動(dòng)附帶。路由設(shè)計(jì)上我沒(méi)有用最簡(jiǎn)單的靜態(tài)路由而是實(shí)現(xiàn)了動(dòng)態(tài)路由——根據(jù)用戶角色動(dòng)態(tài)加載可訪問(wèn)頁(yè)面。用戶在登錄返回的數(shù)據(jù)里帶上角色標(biāo)識(shí)前端拿到后通過(guò)router.addRoute()動(dòng)態(tài)注冊(cè)對(duì)應(yīng)路由實(shí)現(xiàn)管理員和普通用戶看到不同菜單的效果。代碼結(jié)構(gòu)如下// router/index.js const routes [ { path: /login, component: () import(/views/Login.vue) }, { path: /, component: Layout, children: [] } ] // 用戶登錄成功后根據(jù)權(quán)限動(dòng)態(tài)掛載路由 export function setupDynamicRoutes(role) { const modules getRoleModules(role) // 返回該角色可見(jiàn)的路由表 modules.forEach(route router.addRoute(Layout, route)) }這里有個(gè)很隱蔽的坑動(dòng)態(tài)添加路由后直接刷新頁(yè)面會(huì)導(dǎo)致路由丟失。因?yàn)樗⑿潞笄岸酥匦录虞d動(dòng)態(tài)路由是運(yùn)行時(shí)添加的沒(méi)有持久化。我最后把路由數(shù)據(jù)快照存到了SessionStorage刷新時(shí)先恢復(fù)快照再掛載路由刷新后路由就穩(wěn)定了。2.4 微服務(wù)基礎(chǔ)組件網(wǎng)關(guān)、認(rèn)證與配置中心網(wǎng)關(guān)統(tǒng)一鑒權(quán)是微服務(wù)安全的關(guān)鍵環(huán)節(jié)。我寫(xiě)的全局過(guò)濾器邏輯是匹配白名單路徑登錄、注冊(cè)、圖片訪問(wèn)等直接放行其他請(qǐng)求檢查Authorization頭如果沒(méi)有就返回401有Token則調(diào)用用戶認(rèn)證服務(wù)驗(yàn)證簽名并解析用戶ID寫(xiě)入請(qǐng)求頭轉(zhuǎn)發(fā)給下游。實(shí)際測(cè)試中一次完整網(wǎng)關(guān)鑒權(quán)額外耗時(shí)只有約8毫秒對(duì)整個(gè)鏈路的影響可以忽略。Nacos配置中心的管理方式是每個(gè)服務(wù)一個(gè)配置文件公共配置抽成share-config通過(guò)${shared}引入。比如數(shù)據(jù)源、Redis、RabbitMQ這些配置放在共享配置里服務(wù)個(gè)性化配置單獨(dú)維護(hù)。修改配置后Nacos會(huì)自動(dòng)推送到客戶端業(yè)務(wù)服務(wù)無(wú)需重啟即可生效。這個(gè)能力在調(diào)優(yōu)數(shù)據(jù)庫(kù)連接池參數(shù)時(shí)幫了大忙——一次線上連接池壓力大我直接在Nacos里改了max-active和min-idle10秒后所有服務(wù)實(shí)例自動(dòng)應(yīng)用新配置完全不用停機(jī)。3. 完整實(shí)操過(guò)程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 從IDEA開(kāi)始搭建微服務(wù)工程結(jié)構(gòu)如果你準(zhǔn)備照著做我建議工程結(jié)構(gòu)按父目錄 多個(gè)子模塊的方式組織。新建一個(gè)空的Maven父工程打包方式設(shè)為pom然后在pom.xml里統(tǒng)一聲明依賴版本管理。這里有一個(gè)很多人忽略的坑SpringBoot、SpringCloud、SpringCloud Alibaba三個(gè)版本必須互相兼容。版本不對(duì)服務(wù)啟動(dòng)時(shí)報(bào)的錯(cuò)會(huì)讓你懷疑人生而且錯(cuò)誤信息還不是直觀的版本沖突往往是各種莫名其妙的Bean找不到或注冊(cè)失敗。我自己使用的版本組合是SpringBoot 3.1.5、SpringCloud 2022.0.3、SpringCloud Alibaba 2022.0.0.0。這三個(gè)版本經(jīng)過(guò)組合測(cè)試兼容性穩(wěn)定。以下是父工程的版本管理關(guān)鍵配置dependencyManagement dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-dependencies/artifactId version3.1.5/version typepom/type scopeimport/scope /dependency dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version2022.0.3/version typepom/type scopeimport/scope /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version2022.0.0.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement目錄結(jié)構(gòu)上每個(gè)服務(wù)模塊下嚴(yán)格分包c(diǎn)ontroller、service、mapper、entity、config、dto。為了讓服務(wù)之間共享通用類(lèi)型我額外建了一個(gè)common模塊放通用返回對(duì)象ResultT、統(tǒng)一異常處理器、JWT工具類(lèi)等。模塊間的依賴關(guān)系是業(yè)務(wù)服務(wù)依賴common網(wǎng)關(guān)也依賴common其他服務(wù)互不依賴。3.2 Nacos服務(wù)注冊(cè)與配置共享Nacos的安裝很簡(jiǎn)單去GitHub下載release包解壓后直接進(jìn)bin目錄Windows下運(yùn)行startup.cmd -m standaloneLinux下運(yùn)行startup.sh -m standalone單機(jī)模式不需要額外配置數(shù)據(jù)庫(kù)。啟動(dòng)成功后訪問(wèn)http://localhost:8848/nacos默認(rèn)賬號(hào)密碼都是nacos。每個(gè)業(yè)務(wù)服務(wù)想注冊(cè)到Nacos步驟只有兩步。第一步加依賴spring-cloud-starter-alibaba-nacos-discovery。第二步在配置文件里指定注冊(cè)地址spring: application: name: detection-service cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml shared-configs: ->FeignClient(name python-recognizer, url ${python.service.url}) public interface PythonRecognizerFeignClient { PostMapping(value /predict, consumes MediaType.MULTIPART_FORM_DATA_VALUE) RecognitionResult predict(RequestPart(file) MultipartFile file); }實(shí)際調(diào)用時(shí)業(yè)務(wù)服務(wù)把上傳的圖片用MultipartFile原樣透?jìng)?。這里有個(gè)容易出問(wèn)題的細(xì)節(jié)Feign傳MultipartFile必須加consumes類(lèi)型和RequestPart注解不然請(qǐng)求體會(huì)被錯(cuò)誤編碼Python服務(wù)收到的可能是空文件。另外不要把Python服務(wù)注冊(cè)到Nacos讓Feign去發(fā)現(xiàn)它因?yàn)閮蓚€(gè)服務(wù)在不同技術(shù)棧Python注冊(cè)進(jìn)去還得實(shí)現(xiàn)Nacos客戶端協(xié)議讓Java側(cè)直接通過(guò)url屬性指定地址更簡(jiǎn)單可靠。Python服務(wù)的核心預(yù)測(cè)代碼簡(jiǎn)短但有效import torch from fastapi import UploadFile model torch.hub.load(ultralytics/yolov5, custom, pathbests.pt) app.post(/predict) async def predict(file: UploadFile): contents await file.read() results model(contents, size640) detections results.pandas().xyxy[0] top detections.iloc[0] return { category: top[name], confidence: round(float(top[confidence]), 4), bbox: [float(top[xmin]), float(top[ymin]), float(top[xmax]), float(top[ymax])] }注意results.pandas().xyxy[0]是YOLOv5自帶的Pandas格式轉(zhuǎn)換直接輸出結(jié)構(gòu)化檢測(cè)結(jié)果比自己手動(dòng)解析原始tensor省事得多。識(shí)別成功后業(yè)務(wù)服務(wù)做兩件事把圖片存到MinIO并裝配訪問(wèn)URL發(fā)送一條識(shí)別完成的消息到RabbitMQ由另一個(gè)監(jiān)聽(tīng)線程負(fù)責(zé)把完整記錄寫(xiě)入MySQL。因?yàn)橹麈溌分灰蕾囎钚?xiě)操作響應(yīng)時(shí)間能控制在2秒左右。3.4 前端與網(wǎng)關(guān)連通跨域與打包發(fā)布前后端聯(lián)調(diào)時(shí)最常見(jiàn)的問(wèn)題就是跨域。我采取的標(biāo)準(zhǔn)方案是前端不做任何跨域處理所有請(qǐng)求走Vite代理轉(zhuǎn)發(fā)到網(wǎng)關(guān)生產(chǎn)環(huán)境由Nginx反向代理。開(kāi)發(fā)環(huán)境的配置如下// vite.config.js server: { port: 3000, proxy: { /api: { target: http://localhost:9000, // 網(wǎng)關(guān)地址 changeOrigin: true } } }這樣前端發(fā)請(qǐng)求時(shí)用相對(duì)路徑/api/...Vite開(kāi)發(fā)服務(wù)器會(huì)自動(dòng)把請(qǐng)求轉(zhuǎn)發(fā)到網(wǎng)關(guān)從瀏覽器的角度看就是同源請(qǐng)求不會(huì)觸發(fā)跨域策略。網(wǎng)關(guān)那邊再統(tǒng)一處理一次CORS響應(yīng)頭雙保險(xiǎn)。打包上線環(huán)節(jié)我用的是Nginx 網(wǎng)關(guān)的模式。前端執(zhí)行npm run build后生成dist目錄把dist下的靜態(tài)文件放到Nginx的html目錄配置Nginx把所有非靜態(tài)資源的請(qǐng)求反向代理到網(wǎng)關(guān)location /api/ { proxy_pass http://127.0.0.1:9000; proxy_set_header Host $host; } location / { try_files $uri $uri/ /index.html; }try_files這條配置很關(guān)鍵——Vue是SPA單頁(yè)應(yīng)用前端路由切換時(shí)URL變化但服務(wù)器上并沒(méi)有對(duì)應(yīng)文件不配置的話刷新頁(yè)面會(huì)404。加了try_files后所有不存在的路徑都回退到index.html由前端路由接管渲染。3.5 基于Docker Compose的一鍵部署實(shí)踐為了讓整個(gè)系統(tǒng)在演示環(huán)境中快速部署我用Docker Compose編排了所有依賴組件實(shí)現(xiàn)一條命令啟動(dòng)集群。docker-compose.yml里包含的服務(wù)有Nacos、MySQL、Redis、RabbitMQ、MinIO、Python識(shí)別服務(wù)以及四個(gè)Java業(yè)務(wù)微服務(wù)鏡像。有一個(gè)實(shí)踐細(xì)節(jié)Java服務(wù)的鏡像我基于GitLab CI流水線自動(dòng)構(gòu)建——代碼合并到main分支后觸發(fā)構(gòu)建Maven打包后執(zhí)行docker build推送到鏡像倉(cāng)庫(kù)服務(wù)器執(zhí)行docker compose pull完成更新。整個(gè)過(guò)程約5分鐘這比手動(dòng)打包上傳后后kill進(jìn)程再重啟優(yōu)雅太多了。如果你的項(xiàng)目還沒(méi)有CI最少也要寫(xiě)一個(gè)start.sh腳本按順序啟動(dòng)依賴組件再啟動(dòng)業(yè)務(wù)服務(wù)避免重復(fù)手敲命令。4. 常見(jiàn)問(wèn)題與故障排查實(shí)錄4.1 SpringCloud版本兼容性問(wèn)題匯總先列一個(gè)排查表都是我實(shí)際遇到的報(bào)錯(cuò)基本涵蓋了微服務(wù)新手最常撞的墻報(bào)錯(cuò)現(xiàn)象根本原因解決辦法Bean無(wú)法加載NoSuchBeanDefinitionExceptionSpringCloud與SpringBoot版本不匹配核對(duì)版本對(duì)應(yīng)關(guān)系用官方推薦的版本組合服務(wù)注冊(cè)不到NacosSpringCloud Alibaba版本過(guò)低升級(jí)到支持Nacos 2.x的版本注意引入Bootstrap依賴網(wǎng)關(guān)路由但404Gateway版本與SpringBoot不一致或過(guò)濾器中破壞了請(qǐng)求信息統(tǒng)一到2022.0.x版本檢查網(wǎng)關(guān)過(guò)濾器是否修改了request.URIFeign調(diào)用一直超時(shí)默認(rèn)超時(shí)時(shí)間太短Python推理慢單獨(dú)設(shè)置connectTimeout為3秒、readTimeout為10秒啟動(dòng)報(bào)java.lang.IllegalStateException端口沖突或配置文件里被占用的端口未修改用lsof -i:端口查占用或修改端口并重新啟動(dòng)經(jīng)驗(yàn)之談?dòng)龅轿⒎?wù)組件報(bào)錯(cuò)先懷疑版本再查代碼。我調(diào)試過(guò)很多詭異問(wèn)題最后定位都是版本搭配不兼容導(dǎo)致的比如SpringBoot 3.2.0剛發(fā)布時(shí)SpringCloud Alibaba還沒(méi)適配你如果用了最新版SpringBoot幾乎必然會(huì)遇到Nacos注冊(cè)失敗。4.2 分布式環(huán)境下的認(rèn)證會(huì)話問(wèn)題JWT Redis的認(rèn)證方案在微服務(wù)架構(gòu)下部署時(shí)我第一次就栽了跟頭網(wǎng)關(guān)和服務(wù)在不同容器里Redis也換了部署位置但我在本地開(kāi)發(fā)時(shí)沒(méi)有系統(tǒng)性地跟蹤過(guò)Token的生成和校驗(yàn)環(huán)境。結(jié)果是用戶在登錄服務(wù)那里拿到的Token到了網(wǎng)關(guān)校驗(yàn)時(shí)解析出的簽名始終不通過(guò)。排查思路走了不少?gòu)澛纷詈蠖ㄎ坏絾?wèn)題根源是兩個(gè)服務(wù)使用的簽名密鑰不一致。我在common模塊里將JWT_SECRET配置成了環(huán)境變量讀取本地開(kāi)發(fā)時(shí)默認(rèn)值一樣但數(shù)據(jù)庫(kù)和Redis的信息在不同環(huán)境被覆蓋過(guò)導(dǎo)致密鑰不同。解決辦法把JWT_SECRET統(tǒng)一放到Nacos的共享配置common.yaml中所有服務(wù)從同一配置源讀取密鑰不一致的問(wèn)題直接根治。另外一個(gè)更隱蔽的問(wèn)題是網(wǎng)關(guān)把解析出的用戶ID通過(guò)請(qǐng)求頭傳給下游但在Feign調(diào)用另一個(gè)服務(wù)時(shí)默認(rèn)不會(huì)攜帶原始請(qǐng)求頭。我需要在Feign配置里添加攔截器Configuration public class FeignHeaderConfig { Bean public RequestInterceptor headerInterceptor() { return requestTemplate - { RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attrs (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attrs ! null) { requestTemplate.header(X-User-Id, attrs.getRequest().getHeader(X-User-Id)); } }; } }識(shí)別服務(wù)里校驗(yàn)用戶ID時(shí)從Feign調(diào)數(shù)據(jù)服務(wù)再查用戶信息需要這個(gè)ID完整地穿過(guò)整條調(diào)用鏈少一個(gè)環(huán)節(jié)就取不到用戶上下文。4.3 模型推理延遲與內(nèi)存溢出應(yīng)對(duì)Python服務(wù)上線后遇到的兩個(gè)典型問(wèn)題一個(gè)是推理超時(shí)一個(gè)是內(nèi)存占用過(guò)高。推理超時(shí)的原因在于我一開(kāi)始設(shè)置的是單worker進(jìn)程而且沒(méi)有限制并發(fā)。用戶同時(shí)上傳多張圖片時(shí)FastAPI會(huì)全部交給模型處理模型推理一方面慢另一方面顯存不夠直接OOM。解決思路分三層第一層用網(wǎng)關(guān)Sentinel限流限制識(shí)別接口的QPS上限第二層將FastAPI的worker數(shù)調(diào)整為uvicorn workers2用多進(jìn)程承載并發(fā)第三層在Python側(cè)用一個(gè)asyncio.Semaphore限制同時(shí)進(jìn)行的推理任務(wù)數(shù)超過(guò)則直接返回繁忙提示。內(nèi)存溢出則是因?yàn)閳D片解碼后的tensor在推理結(jié)束后沒(méi)有及時(shí)釋放。我用torch.no_grad()包裹推理邏輯并將輸入圖片resize到640x640后歸一化大幅減少中間變量數(shù)量。實(shí)際測(cè)試下來(lái)單張圖片推理后GPU顯存占用穩(wěn)定在2.1GB左右連續(xù)跑200張圖片沒(méi)有出現(xiàn)顯存泄漏。4.4 前端數(shù)據(jù)展示與動(dòng)態(tài)路由的兼容性問(wèn)題前端這里也踩了幾個(gè)坑。ECharts圖表在動(dòng)態(tài)路由下不渲染這個(gè)問(wèn)題的原因很經(jīng)典路由從靜態(tài)改成動(dòng)態(tài)后頁(yè)面組件的初始化時(shí)序變了ECharts初始化時(shí)容器還沒(méi)掛載完成。解決辦法是使用nextTick包裹圖表初始化onMounted(() { nextTick(() { chart echarts.init(document.getElementById(chart)) chart.setOption(option) }) })還有Vue路由的addRoute與removeRoute配合問(wèn)題用戶在退出登錄后動(dòng)態(tài)添加的路由不會(huì)自動(dòng)清除下次換一個(gè)角色登錄菜單可能串場(chǎng)。我寫(xiě)了resetRouter()的方法遍歷動(dòng)態(tài)路由name列表依次調(diào)用router.removeRoute(name)再恢復(fù)靜態(tài)默認(rèn)路由。4.5 微服務(wù)壓測(cè)結(jié)果記錄為了讓整個(gè)系統(tǒng)在演示環(huán)境中也能有數(shù)據(jù)支撐我做了一輪基準(zhǔn)壓測(cè)。測(cè)試工具用的是JMeter模擬100個(gè)并發(fā)用戶每個(gè)用戶連續(xù)上傳一張水稻葉瘟圖片統(tǒng)計(jì)整個(gè)識(shí)別鏈路的吞吐量和響應(yīng)時(shí)間指標(biāo)測(cè)試值并發(fā)用戶數(shù)100單請(qǐng)求平均響應(yīng)時(shí)間1.82秒99分位響應(yīng)時(shí)間3.10秒QPS21.6Java服務(wù)CPU占用62%Python服務(wù)CPU占用78%成功率99%從結(jié)果看整個(gè)鏈路完全滿足演示和中低頻人工識(shí)別的需求。如果識(shí)別服務(wù)的請(qǐng)求量繼續(xù)上漲直接擴(kuò)容Java側(cè)的識(shí)別服務(wù)和Python服務(wù)為多實(shí)例靠Nacos和Feign的負(fù)載均衡能力自動(dòng)分?jǐn)倝毫Α?. 進(jìn)階擴(kuò)展與個(gè)人實(shí)踐心得5.1 從課程設(shè)計(jì)到生產(chǎn)環(huán)境的差距在哪這個(gè)項(xiàng)目做完我最大的感受是課設(shè)里的微服務(wù)和真實(shí)生產(chǎn)環(huán)境的微服務(wù)區(qū)別不在技術(shù)棧而在工程化意識(shí)。比如服務(wù)的可觀測(cè)性我一開(kāi)始根本沒(méi)配鏈路追蹤服務(wù)間調(diào)用出問(wèn)題只能靠日志拼湊時(shí)間線。后面接入了SkyWalking之后請(qǐng)求經(jīng)過(guò)網(wǎng)關(guān)、業(yè)務(wù)服務(wù)、Python服務(wù)的調(diào)用鏈一目了然排查慢接口的效率提升了至少三倍。日志管理方面多個(gè)服務(wù)的日志分散在不同容器里逐臺(tái)機(jī)器查日志是非常痛苦的。我在后期統(tǒng)一接入了ELK方案——Java服務(wù)輸出JSON格式日志到KafkaLogstash消費(fèi)后寫(xiě)入ElasticsearchKibana界面直接按traceId搜索整條調(diào)用鏈日志。這套體系雖然搭建時(shí)有成本但對(duì)于微服務(wù)這種“故障位置不確定在哪個(gè)服務(wù)”的系統(tǒng)收益極其明顯。還有配置治理初期服務(wù)之間的地址配置散落在各自的application.yml里服務(wù)一多就混亂。后來(lái)把這些依賴地址統(tǒng)一收斂到Nacos配置中心為每個(gè)環(huán)境開(kāi)發(fā)、測(cè)試、演示建了獨(dú)立命名空間環(huán)境切換只需改一個(gè)配置值再也不會(huì)出現(xiàn)“開(kāi)了演示環(huán)境但數(shù)據(jù)庫(kù)還連本地”的事故。5.2 幾個(gè)值得單獨(dú)說(shuō)說(shuō)的實(shí)踐經(jīng)驗(yàn)第一不要為了微服務(wù)而微服務(wù)。如果項(xiàng)目規(guī)模就是一張表的管理系統(tǒng)或者所有服務(wù)加起來(lái)還沒(méi)超過(guò)3個(gè)模塊單體架構(gòu)才是最優(yōu)解。我做這個(gè)項(xiàng)目選擇微服務(wù)是因?yàn)樗挟悩?gòu)模型服務(wù)、有按模塊獨(dú)立擴(kuò)展的需求、有分布式會(huì)話管理的真實(shí)場(chǎng)景這些理由讓微服務(wù)架構(gòu)有了實(shí)際必要。第二接口設(shè)計(jì)先行。動(dòng)手寫(xiě)代碼之前先把每個(gè)服務(wù)對(duì)外暴露的REST接口定義好字段、類(lèi)型、錯(cuò)誤碼都要寫(xiě)清楚最好直接用Swagger/OpenAPI在線維護(hù)。我在項(xiàng)目中受益很大前后端兩個(gè)同學(xué)可以完全并行開(kāi)發(fā)不用等對(duì)方完成。定義接口時(shí)統(tǒng)一返回ResultTcode約定為0成功、非0失敗錯(cuò)誤碼分段規(guī)劃1xx用戶模塊2xx識(shí)別模塊3xx數(shù)據(jù)模塊。這樣在后端查錯(cuò)時(shí)一看code就知道哪個(gè)服務(wù)出了問(wèn)題。第三妥善管理憑據(jù)和配置文件。MySQL密碼、Redis密碼這些敏感配置絕不能硬編碼提交到Git倉(cāng)庫(kù)。我在項(xiàng)目里用Docker Secret管理部署時(shí)的敏感信息本地開(kāi)發(fā)則用.env文件配合gitignore排除。有一次團(tuán)隊(duì)新成員把本地的數(shù)據(jù)庫(kù)密碼提交到了代碼庫(kù)如果不是及時(shí)發(fā)現(xiàn)整個(gè)項(xiàng)目數(shù)據(jù)庫(kù)都要暴露。第四多做資源規(guī)劃少想一把梭。微服務(wù)的資源消耗比單體要高不少五個(gè)Java服務(wù)加一個(gè)Python服務(wù)再算上Nacos、MySQL、Redis、RabbitMQ8個(gè)容器占了大概3.5GB內(nèi)存。如果你的演示環(huán)境只有2GB內(nèi)存要提前規(guī)劃哪些服務(wù)可以降到最小堆哪些服務(wù)可以合并。我最終的優(yōu)化方案是把Java服務(wù)統(tǒng)一設(shè)置-Xms128m -Xmx256mPython服務(wù)限制最多使用1.5GB內(nèi)存整體資源占用控制在2.8GB以內(nèi)演示環(huán)境輕松跑得動(dòng)。5.3 這套系統(tǒng)后續(xù)還能怎么擴(kuò)展如果你拿到這套代碼想繼續(xù)往上疊新功能我建議以下幾個(gè)方向識(shí)別能力擴(kuò)展是最順理成章的。當(dāng)前只支持單張圖片的靜態(tài)識(shí)別可以接入視頻流抽幀識(shí)別——從前端上傳短視頻后端按固定幀率抽取關(guān)鍵幀逐幀識(shí)別識(shí)別結(jié)果按時(shí)間軸展示這個(gè)功能對(duì)農(nóng)業(yè)監(jiān)測(cè)場(chǎng)景非常實(shí)用。技術(shù)上只需擴(kuò)展Python服務(wù)的/predict_video接口復(fù)用現(xiàn)有的模型推理邏輯。多模型融合也是一個(gè)方向。目前只有一個(gè)YOLOv5模型可以增加一個(gè)基于ResNet的分類(lèi)模型做二次校驗(yàn)兩個(gè)模型結(jié)果一致時(shí)置信度更高不一致時(shí)提示用戶重傳更清晰的照片。微服務(wù)架構(gòu)下的模型服務(wù)是獨(dú)立部署的新增模型只需要再起一個(gè)服務(wù)實(shí)例不會(huì)影響現(xiàn)有業(yè)務(wù)。預(yù)警通知閉環(huán)。當(dāng)前識(shí)別結(jié)果出來(lái)就直接展示給用戶沒(méi)有后續(xù)動(dòng)作??梢约右粋€(gè)通知服務(wù)當(dāng)識(shí)別到某類(lèi)害蟲(chóng)爆發(fā)密度超標(biāo)時(shí)自動(dòng)通過(guò)短信、公眾號(hào)模板消息推送給農(nóng)戶和管理員。這類(lèi)功能適合走RabbitMQ異步處理不影響識(shí)別主鏈路性能。最后再分享一個(gè)小技巧如果你用的是Nacos 2.x可以打開(kāi)控制臺(tái)的“服務(wù)訂閱者”頁(yè)面查看一個(gè)服務(wù)到底被哪些其他服務(wù)調(diào)用配合“主題配置”里的歷史版本功能配置回滾只需要一鍵操作。這兩個(gè)功能在排查“為什么改了配置沒(méi)生效”和“哪個(gè)服務(wù)依賴錯(cuò)了”的時(shí)候非常管用。微服務(wù)架構(gòu)帶來(lái)的復(fù)雜性很多時(shí)候需要靠這些管理功能來(lái)對(duì)沖別只顧著堆新框架先把已有的能力用熟。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99国产天美| 屌色在线97视频| 五月婷婷激情综合| 国产欧美日本亚洲精品| 天天摸夜夜添无码小视频| 91欧美偷拍| 5278欧美一区二区三区| 熟女91网站| 婷婷成人五月天| 国产51色综合久久免费| 91久热| 五月天色图影视| 日韩精品资源专区二区| 超碰在线综合97| 久久国产视频性吧| 新版天堂中文资源8在线| 欧美性夜| 亚洲成人妻日韩在线| 竹菊影视国产一区二区| 操逼片中文| 色噜噜狠狠色综无码久久合欧美| 久久一二三四不卡 | 99精品在线播放| 日天天九九天堂666| 欧美老熟另类| 大香蕉综合| 在线人成亚洲视频免费观看| 91黑人狂躁丰满熟妇| 视频黄站| 91欧美长吊| av日韩手机在线影视| av网站在线看| 综合欧美亚洲| 丰满人妻一区二区三区蜜桃视频| 大香交| 97精品国产精品免费观看| 欧美999999| 一起草AV| 用力操死我| 欧美专区日本专区| 99综合| 激情五月婷| 99在线精品观看99| 思思99热| 97色五月天完| 亚洲人妻av| 欧美啪啪女女| 最新中文字幕精品在线| 欧美日韩大香蕉| 成年无码动漫av片无尽在线 | 久久亚洲欧美中文字幕国语| 国产成人综合在线播放| 亚洲色吧网| 日本黄 R色 成 人网站| 中文字幕一区二区三区视频播放| 日韩国语字幕| 精品无码久久久久| 久久久久99999| 人妻天堂网| 91精品久久久久久| …亚洲黄色厕厕女女在线播…| 在线天堂资源亚洲| 欧美天天综合网版| 9国产超碰| 探花一区二区三| 成人免费视瓶| 国产精品嫩草久久久久| 亚洲AV永久无码一区仙野| 涩涩五月天| 欧美久久久15P| 欧美97视频| 人妻在线大香蕉| 欧美激情超碰777| 久久久久久久久久久999| 清纯唯美亚洲另类| 天久久久噜噜噜久久国产精品爽爽| 国产精品乱码久久久久| 日韩卡一卡二卡三在线| 草草网站影院白丝内射| 日韩女模中文造逼| 大香蕉亚洲中文| 宗合情欲网| 狠狠干妹子| 后入国产| 女人双腿搬开让男人桶| 裸模AV女优| 久久成人东京热人妻| 久操97| 女人 A一级| 2020中文字幕| 91无遮挡| 九九色图| 久久有码视频| 国产一区免费午夜视频| 色婷婷九月| 91中文精品日韩欧美在线 | 四虎影视国产精品| 亚洲 一区二区 自拍| 奸色色 男人天堂 天天射| 日韩情色AV| 美女91网| 青青草密桃在线播放| 九九九九热只有精品| 激情无码日韩| 日韩精品第3页| 国产97亚洲| 天天干人妇| 蜜桃丰满熟妇av无码区不卡| 婷婷操视频| 91c色| 97一区二区三区视频| 韩三级a视频在线观看| 淫荡少妇免费| 天天综合站| 玖草在线视频| 啊啊啊 在线观看| 久久精品电影在线| 久久,精品一二三| 日日摸日日弄日日拍| 国产精品激情久久久久久久| 久久精品无码熟妇一区二区三区视频导航 | 无码久久国产| 国产精品久久久久绯色| 国产精品视频在线观看| 无码人妻一区二区一牛影视| 91色图| 操逼不卡中文字幕| 天天性射网| 伊人黄色片| 欧亚不卡| 亚洲色 国产 欧美 日韩| 黄总AV色图| 超碰97人人cao| 性交一区二区在线播放| 一级二级三级黑人无码| 精品少妇人妻| 亚洲精品视频在线播放| 干少妇视频| 国产农村妇女精品一二区| 精品中文字幕一区二区| 国产精品麻豆成人av| 男人天堂站| 国产精品人妻无码久久久互動交流 | 99热综合| 欧美的性爱网站免费| 欧美日韩人妻婷婷一区| 免费看日产一区二区三区| 99在线观看视频在线高清| 亚洲精品 大香蕉| 老熟妇乱轮| 午夜精品久久久久| 不卡啪啪视频| 国产精品又黄又猛又粗| 国产91美女视频| 殴美牲| 青草地一本线一区二区三区| 久久久久久久久久久999| 亚洲人妻中文高清| 亚洲天堂久久久久久粉红视频| 狠狠色婷婷7777久| 国产 亚洲 一二三四| 土豪酒店各种姿势玩弄极品幼稚| 大地资源在线观看中文第二页| 蜜臀网 一区| 天美传媒Av在线| 91 刺激在线| 成人激情无码在线视频| 国产精品第一区第一页| 亚洲久9| 秋霞午夜视频一区二区| 欧美熟妇精品黑人巨大一二三区| 日韩性爱高清免费视频| 久久精品人人做人人看| 青青草华人在线欧美在线| 婷婷久草一区二区三区| 一级A啪啪啪啪| 久久免费看高潮毛片韩国| 国产亲戚伦亲在线| 综合伊人激情| 97精品视频| 91痴汉| 日韩精品9区| 欧洲免费一区二| 久操com| 国产高清午夜成人在线观看| 97国产精品久久久久| 免費黃色視頻觀看一| 夜夜草天天| 97超碰欧美| 97亚洲自在精品在线观看| 男人天堂日日夜夜| 99∨VTV| 欧美日韩性爱操大逼| 久久精品无码一区二区三区| 91欧美巨乳| 内射中出日韩在线观看视频| 亚洲九九夜夜| 十八禁啪啦拍视频无遮挡| 亚洲国产ⅴ高清在线观看| 久久久人妻| 97干97色| 一级片在线观看高清无码| 网站A V在线| 日本操逼无码| 国产传媒午夜理伦精品| 国产日韩欧美操逼视频| 五月天久久综合网| 国产传媒操逼视频| 九九综合久久中文字幕| 欧美性爱网97| 制服丝袜第二页| 日韩精品9区| 一区二区亚州激情久婷婷欧美| 神马久久啊啊| 91bbbbbb| 无码一区免费在线不卡| 亚洲精品性爱片| 91中文字幕在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 99这里有精品| 狠狠干精品一二三四五六2022| 青青草原人妻| 少妇内射www在线观看视频 | 日韩天美| 久久国产精品,久久国产| yirendaxiangjiashipin| 最新亚洲风情电影| 亚欧洲一区二区视频| 精品一区二区2| 日韩天天综合| 欧美乱伦专区| 影音先锋乱| 六月丁香五月婷婷| 亚洲色图加勒比| 蜜臀亚洲综合一二三四区| 日韩97精| 国产精品96久久久久久| 波多野42部无码喷潮在线观看| 综合干干干av久久久综合网| 加勒比伊人综合| 97 国产精品| 97色网| 中文字幕一区二区在线日韩精品| 中文字幕在线免费观看视频| 久久蜜色情在线视频xxx免费观看| 午夜精品久久久99热蜜桃的功能特点| 青青草中文字幕| 国产欧美精选激情视频| 婷色五月天| 久久久久ab| 91亚洲网站| 岛国激情视频在线观看| 激情综合五月天| 极品后入免费视频| 亚洲在线91| 国产麻豆福利av在线播放| 亚洲午夜免费狠狠干| 啊啊啊啊啊好大好舒服想要| 91伊人| 亚洲九月丁香| 91熟女综合| 亚洲少妇在线观看| 婷婷色导航| 校园春色亚洲无码| 日韩成人在线性爱视频| 91 在线亚洲| 熟女91网| 白嫩国模丰满一二三区| 亚洲精品97中文字幕| A级国产欧美激情在线| 大香蕉丝袜一级片| 九热超碰| 色色香蕉| 五月开心久久AV官网| 久久久久久久九九九九九九| 九九热视频这里只有精品| 性色A∨91| 九九亚洲视频| 97网色| 久久五月视频| 丝袜视频网国产90| 婷婷AV一区二区三区| 亚洲综合骚逼| 亚洲高清无码在线桃色| 亚洲老司机123专区| 91P0RNY大屁股人妻| 99亚洲精品| 欧美伊人电影| 成人夜夜爽| 亚洲欧美日韩激情不卡| 亚洲日韩AV视色| 欧美宗合色| 日韩午夜啪啪视频| 免费视频观看60秒| 亚洲精品亚洲人成人网| av2014 日韩在线中文字幕| 日韩三级天堂在线观看| 久久女女| 91精品久久久久久综合五月天| 久久天堂网| 激情色播| 天天干人人看综合| 亚洲 欧美 小说| 欧美日本中字另类在线| 福利五区| 久久久一级| 操逼网站网站| 久久视频,这里只有精品| 在线可观看的黄色网址| 免费在线视频97| 久久久久国产亚洲一区欧美色图日韩| 锕锕好爽 死我在线观看| 在线免费观看日韩一区| 欧美色交| 久久久久久久 九九九九九九九| 日本操逼视频不卡直接放| 日韩不卡码| 欧美日韩性爱操大逼| 日韩精品人妻中文字幕不卡乱码| 狠狠久久亚洲欧美专区| 思思热在线视频在线| 久久鲁夜| 99自拍视频在线观看| 偷拍盗拍亚洲色图图片 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 香蕉热人人精品| 夜夜做夜夜爽精品视频| 亚洲18禁| 99性爱在线观看| 国产97av| 欧美亚洲se91| 色月天AV导航| 超碰在线成人| 2018天天干在线视频| 91中文字幕在线观看| 国产suv精品一区二区四| 国产亚洲精品激情| 一二三区精品视频| 久久超碰av在线| 色97| 蜜乳AV色欲AVAV无码| 国产高清成人免费视频| 天堂精品| 好舒服视频| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 9999伦理视频| 久久黄黄| 四色永久成人网站| 乳欲人妻办公室奶水| 欧美懂色综合网| 欧美第一页| 嗯嗯嗯啊啊啊操的我好爽| 日本日皮视频逼| 精品国产一区二区三区香蕉欧美| 97超碰香蕉| 丰满少妇精品一区二区| 性色av一区二区| 亚洲人妻一区二区三区| 精品性爱无码在线播放| 亚洲va有码在线天堂| 91欧美大片| 国内一级精品| 上床啊啊啊| 久久久性少妇| 另类小说欧美激情校园春色| 啊啊啊啊,啊啊好多水| 亚洲黄色网址| 精品久久大胆人体| 麻豆一区在线| 亚洲 欧美 另类 日韩 人妻一区| 日韩精品三区四区| 国产精品久久久视频| 综合五月天| 91丨九色丨43老版熟女| 9+1视频网址| 狠狠色综合网| 99色视频| 性色高清在线| 啊啊啊不要啊啊受不了了视频在线| 午夜精品99久久久久传媒| 九九无码| 久久久不能久久久久| 人妻少妇一区二区| 一二三啪啪专区| 玖玖97综合 | 中国AV美女| 黄色香蕉视频网站一区| 人人操人人插人人摸人人干| 91在线视频观看国产| 成人亚欧免费视频| 亚洲黄网在哪免费看| 18禁超污无遮挡无码免费网| www.夜夜| 日韩无码AB| 视频在线中文字幕| 色香天天| 樱花蜜乳av| 亞洲久久直播| 亚洲操操| 加勒比AV网| 后入式视频国产自| 成人老鸭窝人人在线视频| 校园春色欧美色图| 亚洲精品白丝| 久久春色| 欧美日韩一区二区三区四区蜜桃| 视频分类 国内精品| 亚洲超碰在线| 欧美视频第二页| 啊啊啊啊啊啊啊在线| 中国和日本人色哪个不下载能放| 高清国产精品福利网站| 成人美女av| 欧美日韩m| 97在线无精品| 久久国产精品m码| 日韩免费福利在线观看| 欧美黄片视频在线观看免费| 欧美日韩222| 99re6在线视频精品免费完整版安卓版| 香蕉精品二区二区| xxxx网站亚洲精品| 午夜精品一区二区三区三上悠亚| 91草草草| 97欧美精品| 天天视频黄网站| 久草综合京东| 亚洲欧美综合图片| 韩国成人精品久久久免费看| 免费观看欧美日韩操逼视频| 超碰1997| 啪啪性爱免费视频| 欧美国产日韩清纯唯美| 欧洲精品久久| 日韩欧洲操屄视频| 日韩人妻精品久久久久| 欧亚揄拍偷拍精品视频| 日本一区二区三区免费观看| 丁香五月色情| 97国产精选| 久草免费福利在线播放| wwe 天天干.com| 不卡在线观看视频| 成人五月香网在线| 另类欧美综合| 久久99人妖视频国产| 激情亚洲天堂| 翔田千里A片一区二区| 精品人妻美妇91job| 嗯嗯啊啊视频一区二区三区| 亚洲精品99| 亚洲国产丝袜在线观看| 日本 色 导航| 婷婷激情一区二区三区俺也去| 日韩欧美传媒一区国产| 精品伊人久久久大香线蕉小说| 熟女欧美日韩综合婷婷| 午夜成人爽爽爽爽A片李冰冰| 欧美成va视频网站| 一卡二卡在线播放| 亚洲黄网在哪免费看| 欧美午夜色妇色鬼| 在线人成亚洲视频免费观看| 熟妇人妻一区二区三区| 国产女同在线观看视频| 日韩AV电影网站 | 精品超碰中文在线| 日韩无码一区二区三区| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 国产91 丝袜在线播放 | 97超碰免费生活| 欧美 日韩 亚洲 春色| 久艹伊人精品综合在线| 久久超碰国产一区二区三区| 嗯嗯啊啊用力视频免费| 无码动漫av中文字幕| 亚洲欧美中日韩| 欧美片第一页| 是还免费视频1727我| 日韩无码a片| 亚洲伊人久久精品影院| 中文字幕亚韩| 日韩精品午夜操呦呦不卡影院| 91一起操| 欧美色999| 97中文字幕色| 夜嗨影院| 91久久久久久| 97精品| 大香蕉一人在线| 久草免费福利在线播放| 国产9熟妇视频网站| 91视频国品一二三区| 老女人综合网| 嫩草影院永久在线制服丝袜| 自拍大香蕉乱插| 国产97色在线 | 亚洲| 青青网三级视频| 男女啪啪啪18禁网站| 香港日本韩国人妇99www.wccm20| 日韩一级片在线看| 婷婷丁香激情| 欧美91久久久久| 午夜大香蕉| 欧洲综合无码| 久久久青青草| 后入式在线免费观看60秒| 国产AV高清AV无码| 超碰在线欧美性爱激情| 后入福利| 亚洲棕合电彰| 色区久久| 国产A v无码专区| 国产传媒日韩欧美| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 亚洲高清综合网| 久超超碰| 天美传媒国产原创中文字幕亚洲欧美另类 | 日韩欧美午夜视频在线| 国产成人在线观看网址| 操少妞在线视频| 在线天堂999| 欧洲熟妇xxXx欧美老妇裸体| 又大又长又粗又爽又黄| 日日爱99| 99少妇内射| 国产精品高潮久久AV| 激情久久久| 日欧亚洲二三区大片不卡| 色色色网站| 免费簧片在线观看| 亚洲 日本 国产 综合| 黄页av| 9久9久| 欧美一品道| 亚洲Av噜噜一区二区三区妖精| 日本大片日本一区二区免费高清| 男男H黄动漫啪啪无遮挡网站| 岛国免费视频在线| 久久婷婷电影网| 超碰97COm中文| 校园春色美腿丝袜| 997色在线| 久久视频少妇美女| 久久久精品久久| 黑人精品久久97| 成人日韩中文字幕| 综合网亚| 区二区亚洲婷| 亚洲情色一区二区三区| 老司机免费视频在线91| 欲射影视| 97丝袜亚洲在线播放| 亚洲中文字幕日产无码久久| 好看的91视频| 美女诱惑在线一区| 91综合国产精品| 中文一区在线日| 中文字幕第23区| 亚洲熟妇综合久久久久久| 国产99999久久精品| 新视频sss国产| 精品视频久久区| 男人的天堂日韩| 97视频免费在线| 青青草原伊人网| 婷婷性网| 久久久久少妇| 国产男女边吃边摸视频网站| 精品久久久高清无码| 国产69精品久久久久99尤物| 激情久久久| 久久激情视频| 97精品一二区| 福利一级版子| 亚洲色棕合| 天堂性色| 99久久久无码精品国产人| 人妻 中文 日韩| 亚洲超碰在线| 操我啊啊啊啊啊| B049AV在线播放| 亚洲做性| 日韩免费福利在线观看| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日韩91网站| 91人精品妻入口| 色嗨嗨在线| 日本三级韩国三级99| AV高清一区| 精品一区二区久久| 天天噜| 激情网色| 色精品极品| 欧美日韩美女精品久草一区二区三区| 久久久久99精品成人片蜜臀| 亚洲啪啪视频免费| 97自拍视频在线| 蜜臀久久在线视频| 久久久日本电影| 天天艹天天日| ,国产乱人伦精品一区二区三区| 欧美日韩人妻婷婷一区| 国产精品九九九| 亚洲一区二区三区欧美日韩| 欧美精品在线观看| 成人开心网在线视频| 亚洲 欧美 日韩 国产一区二区| 在免费jIzzjIzz在线视频| 91原创在线观看| 国产成人啪一区二区| 人人爱人人乐人人操| 人妻熟女av国产网站| 亚州色站 日韩电影| 伊人网在线点播| 亚洲 自拍偷拍 欧美| 久久超碰爱| av2014 日韩在线中文字幕| A片A5445444| 91狠婷| 97操B| 国产一区二区三区影片| 欧美天堂超碰97| 毛片久久| 国产suv精品一区二区四| 午夜操一视频一区| 福利在线黄片| 欧美日韩美女精品久草一区二区三区 | 国产精品视频麻豆入口| 99国产在线绯色一区| 精品传媒在线一区| 九九亚洲视频| 欧洲亚洲人妻无码高清久久三区四区| 亚洲色 国产 欧美 日韩| 99re69| 国产亚洲深夜激情| 熟妇人妻一区二区三区| av影片在线观看不卡| 色色亚洲| 日韩大香蕉| 大香蕉碰| 日韩成年人性爱视频| 美女黄色一级A视频| 91观看 国产白丝| 日本天天色| 亚洲 欧美综合| 午夜天堂精品久久久久91| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 日韩一级片| 久久午夜神马| 日韩精品一二三四| 秋霞网无码| 久久久久亚洲Aⅴ无码| 国产精品直播在线观看直播| 精品欧美乱码久| 亚洲欧美精品久| 伊色久人大在线| 国产多人在线观看视频| 啪啪91| 中文字幕精品一区二区精| 91国产美女丝袜足交精品视频 | 欧美激情总合网| 四虎视频在线观看| 国产大学生口爆吞精合集| 91天天爱| 日本午夜精品理论片A级APP发布| 欧美丝袜中文字幕07在线| 丝袜美腿诱惑亚洲欧美视频在线观看| 成人怡红院| 国产传媒日本欧美专区| 韩国一级AAA| 亚洲做性| 中文字幕91综合| 成人小说视频在线精品欧美| 久久久精品久久| 丁香婷婷色五月| 天天草天天日| 久久久九精品| 久久精品国产精品亚洲艾通辽熟妇| 蜜臀中文字幕| 亚av顶级裸体一区二区三区四区五区 | www..com操老师| 麻豆色约约| 亚洲欧美天堂在线| 国产美女高潮叫床视频| 91久久久久久久久18| 欧美亚洲se91| 亚洲欧洲偷拍一区| 综合久久久久久久综合网| 超碰97日韩| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 91天堂色男人的天堂| 久久精品店| 亚洲偷91色| 91人人看| 五月丁香综合啪啪| 人妻一二三区| 热热色中文无码| 亚洲的天堂网| 久久e6只有精品| 日韩精品中文字幕二区| 嫩草在线视频| 中文字幕欧美丝袜07资源| 久久人体一区二区| 国产60区。| 五月婷婷六月激情| 免费强奸av| 99视频这有这里有精品| 欧美日韩另类激情图片| 日本道日本道中文字幕日本道最新日本道在线观看 | av情色影音| 色婷婷久久| 顶级丝袜熟女一区二区三区| 亚洲A曰本VA欧美VA视频| 天天干人人乐| 加勒比性爱成人在线| 东北女人被操| 男人的天堂在线2| 无码色| 中文字幕 国产区| 亚洲欧美在线观看免费| 日本人妻中文字幕精品| 九七超碰| 97免费在线观看视频| 少妇贴图| 欧美日本不卡在线| 精品国产乱码久久久影院| 日影院久久婷婷夜夜网| 精品一区二区麻豆| 九热大香蕉| 色鬼在线综合| 亚洲色图加勒比| 亚洲aw毛茸茸在线| 一区久久久二区| 3571色综合一区二区二区| 欧美99热| 久热久| 操操碰| 中文字幕一区av| 亚洲影视综合网| 大香蕉123| 天天影视色香色欲| 久久欧美按摩999| 亚洲,欧美,春色,另类| 亚洲影视综合网| 日韩女优中文字幕| a男人的天堂| 欧美激情欧美精品| 精品亚州18| 狠操91,com| 91少妇通奸网站| 91精品久久久久久| 中文字幕视频二区| 国产老太乱伦一区| 国产精品久久妻无码网站| 国产精品成人久久一区二区三区| 久久透逼视频| 色成人Www精品永久观看| 精品区国产区一区二区三区| 99久久9| 国产日本熟女顶级一区二区三区视频| 嗯啊不要啊啊在线观看视频| 欧美曰韩国产精品| 在线五区| 综合97| 91精品国产日韩欧美综合| 色久桃花影院在线观看| 操逼日韩无码| 欧美人妻二区三区| 天天色踪合| 97欧美日韩综合| A级片日韩欧美国产欧美视频精选观看| 天天干天天燥| 婷婷综合久久| 又摸又舔在线观看网站| 日韩 女同 综合| 国产极品馒头逼| 国产一级137片内射麻豆| 国产欧美亚洲精品a第2页| 熟女人妻av在线资源,黄色的资源| 欧美亚洲丝袜美女电影| 男人天堂免费| 色激情综合网站| 天天做日日做天天欢。| 亚洲 欧美 91| 蜜桃视频啊啊啊啊| 国产精品999aaa| 五月天婷精品激情| 亚洲综合有玛| 国产精品97视频| 少妇一区二区三区高速| av中文在线| 啊啊啊好大好湿| 天天综合网网欲色| 秋霞一级视频在线观看免费| 影音综合网| 欧美色综合网| 福利伊人玖玖国产| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 精品人妻一区二区三区四区石在线| 中文字幕aⅴ在线视频| 伊人97色天使| 1024精品在线| 国产亚洲精品玖玖玖在线观看| 91女在线观看| 91色亚洲| 久操精品网| 黄色片G G G| 日欧操屄| 日本免费不卡二区| 天天狂操夜夜狂日| 日韩中文字幕在线视频观看| 人人搡人人肉久久精品| 亚洲国产另类在线中文| 婷婷综合五月天| 91成人亚洲色图| 东北丰满熟女国产一区| 久草婷婷| A一区片| 中文乱码99| 成人精品无码| 麻豆亚洲Av成人无码一区精品| 91白虎| 91久久久久久久| 4tube欧美女厕所| 亚洲女毛多水多21P| 欧美91久久久久| 中文字幕日韩人妻视频一区二区三区 | 情色五月天久久久| 日本乱人伦片中文三区| 色噜噜国产在线| 久久久96| 久久久999网站| 97爱综合| 日本精品88888888| 久久亚洲中文字幕视频| 综合日韩激情另类图片| 美女熟妇色| 淫乱图区 | 91夜夜蜜桃臀1区2区3区| 中文?日韩?免费?精品| 射丝袜高跟鞋99| 欧美日韩国产一区二区小黄片大全| 91大神电影天堂| 99亚洲精品| 久草综合视频| 欧美熟女操屄| 国产精品午夜福利| 激情丁香五月| 欧美Ⅴ性爱| 日本人妻天堂网站在线播放| 亚洲精品影视老司机| 人人澡人人澡人人| 九九av| 国产精品不卡av免费在线观看| 久久9久9久99久9久9| 国产精品高清2021在线| www.男人天堂| av资源在线播放天堂| 91国模| 欧美丝袜激情| 人妻乱仑一区二区三区| 日韩精品一二三| 男人天堂站| 国产操逼逼网| 国产精品久久久久9999小说| 久久这里精品国产99丫e6| 亚洲国产欧美另类自拍| 国产精品另类一区大香蕉| 亚洲,欧美,春色,另类| 小视频国产| 久久精品国产97欧美精品亚洲 | 日本国产二线女色| 91xingse| 99久久久久久久久| 国产精品农村妇女| 97色色国产视频| 狠狠激情综合狠狠操中文字幕| 超碰2017| 操老熟女AV| 久久久久久夜夜夜夜夜| 国产区性爱在线视频秋霞豆| 亚洲97综| 激情文学小说一区二区| 老女人日韩美91| 国产成人精品日本视频| 成人小说另类在线| 97伦综合| 国产十八禁视频| 插入综合网| wwwcaobibi| 国产成人亚洲精品无码最新在线| 久草毛片| 久热久操| 青青色综合| 97福利视频| 亚洲一区二区久久久久| 97色亚洲| chaopen97久久| 欧美78| 精品无码一区二区| 日韩午夜啪啪视频| 国产无马视频| 亚洲国产成人精品999| 亚洲欧美清纯| 久久女女| 是还免费视频1727我| 91偷拍欧美亚洲| 国产按摩一区二区三区| 强奸乱伦αv片| 强奸乱伦AV网站| 久久久久亚洲熟妇熟女| 欧美色图 色综合图| 男人天堂最新手机版在线青青草| 国产精品在线网站| 国产精品91ai| 亚洲色图欧美色图制服丝袜| 韩国一区二区精品亚洲| 丁香五月色| 久久艹逼视频| 婷婷丁香五月天亚洲天堂网| 高潮毛片无遮挡高清免费| 狠狠操,使劲操| 另类天堂| 中国一级αV| 97天堂| 东京热男人的天堂| 亚洲开心网| 亚洲97超碰| 97精品视频| 色婷婷国产精品一区在线观看| 78精品| 密臀视频三区免费网站| 欧美亚洲首页| 夜色综合| 性无码专区2020| 日本潮催一卡操| 亚州熟女乱伦| 香蕉黄色一级视频| 操逼天美3区| 日本精品无码三级网站| 欧美亚洲日本视频久久久| 亚洲美女自拍偷拍视频| 婷婷深爱五月| 99热伊人| 99热这里只有精| 少妇同性| 国桃视频产巨乳精品一区二区在线| 亚洲图片在线| 丝袜美腿91| 777超碰| 久久精品国产Aⅴ| 综合国产影视三级| 91在线精品| 大香蕉九九| 精品国产网站| 综合97亚洲| AV女资源| 欧美成人免费在线观看| 成人小说视频在线精品欧美| 午夜精品五区| 日本在线一二 | 深爱伊人影院| 97啪啪| 韩国一级AAA| 九九综合久久| 丝袜喷水在线| 久久久熟女一区| 人妻欧美| 亚洲av综合色区图片亚洲| 超碰成人国产| 亚洲色图 欧美热图 清纯唯美 另类自拍| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 美女骚尻视频| 男人天堂网址| 免费作爱一级视频| 日韩乱码Av| 色阁阁AV综合网| 大奶的诱惑| 精品成人动漫一区二区| 91久热| 一牛一区二区三区久久| 999热日韩精品| 看免费一级在线播放毛片| 多乙久久久久久| 中文字幕视频2区| 成人日本片久久久蜜桃| 视频国产成人精品日本亚洲18| 国产真实野战在线视频| 久久9亚洲| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 亚洲av影院在线观看| 伊人影院在线理论播放| 国产精品69久久久久久久| 台湾一区国产高清在线| 婷婷伊人网| 亚洲在高跟鞋自慰久久在色线| 97日亚洲欧美| 操逼操网| 四虎免费看黄| 夜夜爽夜夜爽| 99操视频| 综合性视频99| 一本精品日本在线视频精品| 另类图片五月| 老熟乱一区二区三区四区| 精品成人动漫一区二区| 九九九九88| 97精品在线视频| 日韩人妻一区二区精品| 亚洲精品 欧美精品| 肉动漫无遮挡h在线观看| 99超级碰免费视频| 后入福利视频| 国产极品99热在线播放69| 97香蕉人人乳| 亚洲中文字幕在线视频一区二区| 超碰人人色| 精品二区久久| 国产女性无套 免费观看| 日韩精品人妻中文字有码在线| AVE乱伦| 少妇毛片久久| 探花视频免费观看国产专区| 大香蕉婷婷| 中国和日本人色哪个不下载能放| 欧美日韩 强奸乱伦| 久久一本大香蕉| 久操网无码在线| 操死我了嗯嗯嗯| 91香蕉视频在线观看免费| 口爆欧美91| 激情黄色片在线观看| 夜夜狼人妻| 青青青国产手线观看视频2| 日本不卡高清免v欧美日韩在线观看| 92久久| 久久一区无码| 国产JDAV无码视频在线观看| 亚洲综合影视| 十八禁av无码免费网站APP| 久久、1234| 强奸乱伦大香蕉| 男人天堂免费| 婷婷色中文字幕| 天天干18禁| 天天干2区3区| 天天插夜夜操| 中文字幕伊人| 国产免费久久久久| 快灬快灬 一下爽蜜桃在线观看| 可以免费观看的AV| 超碰色综合| 女生自91网站| 黄色小视频日本txt| 变态另类专区| 欧美淫穴| 欧美一区二区福利在线| 伊人少妇久久久| 天天日天天色| 欧美日本成人一区二区| 老熟妇综合| 欧美做爰无码A片视频| 亚州性9| 人妻人人澡人人爽人人| 国产区性爱在线视频秋霞豆| 情色大香蕉| 蜜桃久久久久久| 熟女精品va中文字幕| 蜜臀Av一区二区三区| 啊啊啊 在线观看| 国产福利在线视频网站| 超碰在线日韩一区| 亚洲情色1区| 国产欧美日韩精品中文| 中文字幕在线免费观看| 伊人伊人LD| 五月婷婷综合网| 成人av影院在线观看| 综合亚州欧美| 亚洲少妇诱惑| 无遮挡h肉动漫在线观看| 天美传媒精品一区二区| 999九九精品| 熟女人妻av在线资源,黄色的资源| 最新国内自拍av免费| 日本幼女18+| 嗯嗯,好大,好爽,好骚| 99re在线观看| 中国少妇XXXX做受| 青青草毛片| 内射黑丝袜| 热天堂一区二区| 女人高潮大叫一级毛片| 国产狂喷潮在线精品| 国产嫩草精品A88AV| 亚洲美女30b| 色性综合| 韩国一级做A片免费的| 国产日韩手机视频在线| 日比av无码| 精品妇操一区二区三区| 欧色综合| 大香蕉碰碰| 日本在线视频导航| 国产亚洲精品美女久久久| 欧美日韩在线小说 | 欧美日韩狠狠爱| 青青草玖玖爱| 情色五月天久久久| 久久久人体| 色婷婷基地| 国产精品岛国片在线观看| 69少妇一区二区| 国产精品美女视频诱惑| 欧洲亚洲人妻无码久久三区四区| 欧洲精品网| 91电影色诱| 黑丝少妇麻豆| 精品国产乱码久久久久久影片| 欧美视频在线视频免费va| 国产精品自拍xxxx| 91伊人久| 欧美精品久久久久久久丰满| 超碰色综合| 国产美女高潮| 中文字幕乱码在线观看| 无码二级三级| 亚洲九九视频| 9久9久| 黑白配性爱AV成| 大香蕉一人| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 亚洲少妇在线影音| 330Dv国产女人终合视频极品人与兽 | 婷婷性网| 人妻人人做人人澡人人爽欧美一区| 激情小说日韩无码| 无遮挡又黄又刺激的视频| 天天干人人看综合| 男女啪啪网站免费视频| 91色图| 欧美AAAA黄片| 美日韩男女操屄视频| 四虎午夜影院| 成人av影院在线观看| 新久久AV| 伊人网综合在线视频| 日本视频在线观看污污污| 91小视频| 欧美久热| 蜜桃成人1区2区3区| 91丝袜在线观看视频在线观看| 白丝AV网站| 91美女色视频亚洲| 熟妇一区,二区,三区。| 男人天堂毛片| 亚洲丝袜诱惑| 波多野结衣AV无码一区|