色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

生產(chǎn)者消費(fèi)者問(wèn)題:高并發(fā)系統(tǒng)穩(wěn)定性核心原理與實(shí)戰(zhàn)

生產(chǎn)者消費(fèi)者問(wèn)題:高并發(fā)系統(tǒng)穩(wěn)定性核心原理與實(shí)戰(zhàn) 1. 這不是教科書(shū)里的抽象模型而是你每天都在寫(xiě)的代碼在“打架”“生產(chǎn)者與消費(fèi)者問(wèn)題”——這六個(gè)字一出來(lái)很多人第一反應(yīng)是操作系統(tǒng)課上那個(gè)畫(huà)著緩沖區(qū)、P/V操作、信號(hào)量的示意圖。但說(shuō)實(shí)話我?guī)н^(guò)十幾期后端開(kāi)發(fā)訓(xùn)練營(yíng)每次講到并發(fā)編程總有人舉手問(wèn)“老師這個(gè)模型到底和我寫(xiě)的訂單服務(wù)、消息隊(duì)列、日志收集器有啥關(guān)系”答案很直接你寫(xiě)的每一行涉及多線程/多進(jìn)程協(xié)作的代碼本質(zhì)上都在重演生產(chǎn)者與消費(fèi)者問(wèn)題。它不是歷史遺跡而是你正在調(diào)試的接口超時(shí)、數(shù)據(jù)庫(kù)連接池耗盡、Kafka消費(fèi)堆積、甚至前端頁(yè)面卡頓背后最底層的邏輯沖突。核心關(guān)鍵詞——生產(chǎn)者與消費(fèi)者問(wèn)題——不是學(xué)術(shù)名詞是系統(tǒng)穩(wěn)定性的“壓力測(cè)試儀”當(dāng)寫(xiě)入速度生產(chǎn)持續(xù)超過(guò)處理能力消費(fèi)緩沖區(qū)就會(huì)溢出、線程就會(huì)阻塞、內(nèi)存就會(huì)暴漲、服務(wù)就會(huì)雪崩。我去年幫一家做IoT設(shè)備管理的公司做性能優(yōu)化他們后臺(tái)每秒接收2萬(wàn)條設(shè)備心跳數(shù)據(jù)但告警分析模塊每秒只能處理8000條。結(jié)果就是Redis里積壓了47小時(shí)的數(shù)據(jù)告警延遲平均19分鐘。運(yùn)維同學(xué)查了一周最后發(fā)現(xiàn)根本不是Redis配置問(wèn)題而是生產(chǎn)者設(shè)備接入網(wǎng)關(guān)和消費(fèi)者告警引擎之間沒(méi)有合理的流量控制機(jī)制——典型的“生產(chǎn)者與消費(fèi)者問(wèn)題”失控。解決方法不是加機(jī)器而是引入帶界線的阻塞隊(duì)列超時(shí)丟棄策略把緩沖區(qū)從“無(wú)底洞”變成“可控水池”。這篇文章不講信號(hào)量數(shù)學(xué)證明也不貼偽代碼。我會(huì)用真實(shí)場(chǎng)景拆解為什么你的線程池會(huì)突然卡死為什么Kafka consumer group里總有幾個(gè)分區(qū)消費(fèi)不動(dòng)為什么用ArrayList存日志反而比用ConcurrentLinkedQueue更慢這些都不是配置錯(cuò)誤而是對(duì)“生產(chǎn)者與消費(fèi)者問(wèn)題”底層約束缺乏感知。適合三類人寫(xiě)Java/Python/Go后端常調(diào)用線程池、消息隊(duì)列、緩存中間件的開(kāi)發(fā)者做嵌入式或?qū)崟r(shí)系統(tǒng)需要精確控制數(shù)據(jù)流節(jié)奏的工程師運(yùn)維或SRE看到監(jiān)控圖上CPU飆升但QPS不漲想定位根因的技術(shù)負(fù)責(zé)人。接下來(lái)的內(nèi)容全部來(lái)自我過(guò)去十年在電商秒殺、金融風(fēng)控、工業(yè)物聯(lián)網(wǎng)三個(gè)高并發(fā)場(chǎng)景中踩過(guò)的坑、調(diào)過(guò)的參數(shù)、畫(huà)過(guò)的時(shí)序圖。所有方案都經(jīng)過(guò)線上百萬(wàn)級(jí)TPS驗(yàn)證你可以直接抄作業(yè)。2. 為什么必須放棄“無(wú)界隊(duì)列”而選擇“帶界線的緩沖區(qū)”2.1 緩沖區(qū)不是越大越好內(nèi)存、延遲、失敗成本的三角博弈幾乎所有初學(xué)者實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型時(shí)第一反應(yīng)都是用一個(gè)“大數(shù)組”或“無(wú)界隊(duì)列”當(dāng)緩沖區(qū)。比如Java里直接new ArrayBlockingQueue(1000000)Python里用queue.Queue()默認(rèn)無(wú)限大。這種做法看似保險(xiǎn)實(shí)則埋下三大隱患第一內(nèi)存失控的雪球效應(yīng)。假設(shè)生產(chǎn)者每秒生成1000個(gè)訂單對(duì)象每個(gè)對(duì)象序列化后占2KB內(nèi)存消費(fèi)者每秒處理800個(gè)。那么每秒凈增200個(gè)對(duì)象2KB×200400KB內(nèi)存/秒。10分鐘后緩沖區(qū)就吃掉240MB內(nèi)存2小時(shí)后接近3GB。而JVM堆內(nèi)存通常設(shè)為4GB這意味著緩沖區(qū)本身就能吃掉75%的可用內(nèi)存。更致命的是GC會(huì)頻繁觸發(fā)Full GC導(dǎo)致STWStop-The-World時(shí)間飆升——你的服務(wù)不是慢是“每隔3分鐘卡死5秒”。我在某支付平臺(tái)見(jiàn)過(guò)最極端案例一個(gè)日志采集線程用LinkedBlockingQueue無(wú)界隊(duì)列因磁盤(pán)IO瓶頸導(dǎo)致消費(fèi)滯后最終緩沖區(qū)占用12GB內(nèi)存觸發(fā)OOM Killer直接kill進(jìn)程。第二延遲不可控的“黑洞效應(yīng)”。緩沖區(qū)越大數(shù)據(jù)在里面“漂流”的時(shí)間越長(zhǎng)。生產(chǎn)者發(fā)完數(shù)據(jù)就認(rèn)為成功但消費(fèi)者可能要等幾分鐘才處理。這對(duì)實(shí)時(shí)性要求高的場(chǎng)景是災(zāi)難。比如車聯(lián)網(wǎng)平臺(tái)車輛急剎事件必須在500ms內(nèi)觸發(fā)預(yù)警。如果緩沖區(qū)積壓了2萬(wàn)條數(shù)據(jù)新來(lái)的急剎事件排在第20001位等它被消費(fèi)時(shí)事故早已發(fā)生。我們?cè)肞rometheus監(jiān)控過(guò)某物流調(diào)度系統(tǒng)的消息延遲當(dāng)Kafka topic的lag超過(guò)50萬(wàn)條時(shí)平均端到端延遲從120ms跳到6.8秒——緩沖區(qū)成了“時(shí)間黑洞”。第三失敗成本指數(shù)級(jí)放大。無(wú)界緩沖區(qū)意味著所有未消費(fèi)數(shù)據(jù)都駐留在內(nèi)存里。一旦消費(fèi)者進(jìn)程崩潰這些數(shù)據(jù)全丟了如果消費(fèi)者重啟后無(wú)法恢復(fù)狀態(tài)整個(gè)緩沖區(qū)數(shù)據(jù)作廢。而在金融交易場(chǎng)景一條訂單消息丟失意味著資金損失。更糟的是當(dāng)緩沖區(qū)過(guò)大時(shí)消費(fèi)者重啟后的“追趕模式”會(huì)瞬間打滿CPU和網(wǎng)絡(luò)帶寬引發(fā)連鎖故障。我們給某券商做的風(fēng)控系統(tǒng)就因消費(fèi)者重啟后瘋狂拉取積壓消息導(dǎo)致下游數(shù)據(jù)庫(kù)連接池被打爆進(jìn)而拖垮整個(gè)交易鏈路。提示緩沖區(qū)容量不是技術(shù)參數(shù)而是業(yè)務(wù)SLA的具象化表達(dá)。實(shí)時(shí)告警緩沖區(qū)最大允許積壓最大容忍延遲×每秒峰值生產(chǎn)量訂單處理緩沖區(qū)訂單平均處理時(shí)長(zhǎng)×峰值TPS×安全系數(shù)1.5日志采集緩沖區(qū)單次批量發(fā)送大小×網(wǎng)絡(luò)重試次數(shù)×冗余度2.02.2 四種緩沖區(qū)選型對(duì)比從“能用”到“穩(wěn)用”的硬指標(biāo)選擇緩沖區(qū)類型本質(zhì)是在吞吐量、延遲、內(nèi)存開(kāi)銷、可靠性四個(gè)維度做權(quán)衡。下面這張表是我基于三年壓測(cè)數(shù)據(jù)總結(jié)的實(shí)戰(zhàn)選型指南緩沖區(qū)類型典型實(shí)現(xiàn)吞吐量平均延遲內(nèi)存開(kāi)銷故障恢復(fù)能力適用場(chǎng)景無(wú)界隊(duì)列Java LinkedBlockingQueue無(wú)參、Python queue.Queue()★★★★☆★★☆☆☆積壓時(shí)飆升★☆☆☆☆無(wú)限增長(zhǎng)★☆☆☆☆崩潰即丟失僅限POC驗(yàn)證禁止上線有界阻塞隊(duì)列Java ArrayBlockingQueue、Go channel帶cap★★★☆☆★★★★☆固定上限★★★★☆預(yù)分配★★★☆☆可丟棄或拒絕高可靠訂單系統(tǒng)、風(fēng)控引擎環(huán)形緩沖區(qū)Disruptor RingBuffer、LMAX框架★★★★★★★★★★微秒級(jí)★★★★☆連續(xù)內(nèi)存★★★★☆支持?jǐn)帱c(diǎn)續(xù)傳極致低延遲場(chǎng)景高頻交易、實(shí)時(shí)競(jìng)價(jià)外部消息隊(duì)列Kafka、RabbitMQ、RocketMQ★★★★☆★★★☆☆毫秒級(jí)★★★★★磁盤(pán)持久化★★★★★多副本ACK機(jī)制大規(guī)模分布式系統(tǒng)、跨服務(wù)解耦關(guān)鍵差異點(diǎn)在于背壓Backpressure機(jī)制無(wú)界隊(duì)列生產(chǎn)者永遠(yuǎn)不阻塞消費(fèi)者跟不上就積壓——背壓失效有界阻塞隊(duì)列生產(chǎn)者put時(shí)若滿則阻塞或拋異常——顯式背壓環(huán)形緩沖區(qū)通過(guò)游標(biāo)Cursor和序號(hào)Sequence控制讀寫(xiě)位置生產(chǎn)者寫(xiě)滿時(shí)可選擇覆蓋舊數(shù)據(jù)或阻塞——可配置背壓外部消息隊(duì)列Kafka通過(guò)max.in.flight.requests.per.connection1和enable.idempotencetrue實(shí)現(xiàn)精確一次語(yǔ)義RabbitMQ用basic.qos限制未確認(rèn)消息數(shù)——協(xié)議級(jí)背壓。我在線上系統(tǒng)中最常用的是有界阻塞隊(duì)列拒絕策略組合。比如電商秒殺場(chǎng)景用ArrayBlockingQueue(10000)配RejectedExecutionHandler當(dāng)隊(duì)列滿時(shí)直接拒絕新請(qǐng)求并返回“活動(dòng)已結(jié)束”而不是讓用戶排隊(duì)等待——這比讓10萬(wàn)人在頁(yè)面上轉(zhuǎn)圈更符合用戶體驗(yàn)。拒絕策略不是失敗而是主動(dòng)降級(jí)。2.3 緩沖區(qū)容量計(jì)算用真實(shí)業(yè)務(wù)數(shù)據(jù)反推安全值很多團(tuán)隊(duì)卡在“到底該設(shè)多大緩沖區(qū)”這個(gè)問(wèn)題上。網(wǎng)上教程說(shuō)“設(shè)成1024或10000”但沒(méi)人告訴你為什么。其實(shí)容量計(jì)算有明確公式且必須用線上真實(shí)流量數(shù)據(jù)而非測(cè)試環(huán)境模擬值。核心公式緩沖區(qū)容量 生產(chǎn)者峰值速率 - 消費(fèi)者穩(wěn)定處理速率× 最大容忍積壓時(shí)間 安全冗余以我優(yōu)化過(guò)的某外賣平臺(tái)訂單分單系統(tǒng)為例生產(chǎn)者接單網(wǎng)關(guān)大促期間峰值TPS12000每秒1.2萬(wàn)單消費(fèi)者分單引擎單機(jī)穩(wěn)定處理能力8000 TPS經(jīng)壓測(cè)確認(rèn)業(yè)務(wù)要求訂單從創(chuàng)建到分派完成P99延遲≤3秒安全冗余考慮網(wǎng)絡(luò)抖動(dòng)、GC暫停按20%冗余計(jì)算。代入公式基礎(chǔ)容量 (12000 - 8000) × 3 12000 安全冗余 12000 × 20% 2400 最終容量 12000 2400 14400 → 向上取整為15000但實(shí)際部署時(shí)我們?cè)O(shè)為12000而非15000。為什么因?yàn)楸O(jiān)控顯示當(dāng)積壓超過(guò)10000條時(shí)分單引擎的CPU使用率已達(dá)85%再增加緩沖區(qū)只會(huì)加劇延遲。所以最終決策是寧可讓生產(chǎn)者在12000閾值處開(kāi)始拒絕也不讓緩沖區(qū)成為性能瓶頸。注意這個(gè)計(jì)算必須配合監(jiān)控驗(yàn)證。我們會(huì)在上線前做“階梯式壓測(cè)”先用5000容量跑觀察消費(fèi)者CPU和GC頻率再升到10000看P99延遲是否突破3秒最后測(cè)試12000確認(rèn)拒絕策略觸發(fā)時(shí)的錯(cuò)誤碼是否被前端正確捕獲。沒(méi)有監(jiān)控?cái)?shù)據(jù)支撐的容量設(shè)置都是拍腦袋。3. 生產(chǎn)者與消費(fèi)者的“節(jié)奏同步術(shù)”不只是加鎖那么簡(jiǎn)單3.1 為什么synchronized和ReentrantLock在高并發(fā)下反而拖垮性能剛接觸并發(fā)編程的人常以為“只要給共享變量加鎖生產(chǎn)者消費(fèi)者就不會(huì)亂”。但現(xiàn)實(shí)很骨感我在某銀行核心賬務(wù)系統(tǒng)做性能審計(jì)時(shí)發(fā)現(xiàn)一個(gè)轉(zhuǎn)賬服務(wù)用了synchronized修飾整個(gè)doTransfer()方法結(jié)果QPS卡在300CPU利用率卻只有40%。用Arthas火焰圖一看90%的線程都在ObjectMonitorEnter上排隊(duì)等待鎖。根本問(wèn)題在于鎖的粒度決定了系統(tǒng)吞吐的天花板。synchronized鎖住的是整個(gè)方法或?qū)ο笠馕吨粫r(shí)刻只有一個(gè)線程能執(zhí)行生產(chǎn)或消費(fèi)邏輯。而生產(chǎn)者消費(fèi)者本質(zhì)是讀寫(xiě)分離場(chǎng)景生產(chǎn)者只寫(xiě)緩沖區(qū)消費(fèi)者只讀緩沖區(qū)它們操作的內(nèi)存區(qū)域本就不重疊。強(qiáng)制用同一把鎖等于讓快遞員和分揀員共用一把鑰匙開(kāi)門(mén)——誰(shuí)拿到鑰匙誰(shuí)干活另一個(gè)人干等。更隱蔽的問(wèn)題是鎖競(jìng)爭(zhēng)引發(fā)的偽共享False Sharing?,F(xiàn)代CPU的緩存行Cache Line通常是64字節(jié)如果生產(chǎn)者的計(jì)數(shù)器和消費(fèi)者的計(jì)數(shù)器被編譯器分配到同一緩存行即使它們邏輯獨(dú)立一個(gè)線程修改生產(chǎn)者計(jì)數(shù)器也會(huì)使整個(gè)緩存行失效迫使另一個(gè)線程重新加載——這就是“偽共享”。我們?cè)肑OLJava Object Layout工具分析過(guò)兩個(gè)int字段相鄰存放時(shí)鎖競(jìng)爭(zhēng)帶來(lái)的性能損耗比預(yù)期高37%。解決方案不是不用鎖而是用更輕量、更精準(zhǔn)的同步原語(yǔ)CASCompare-And-SwapJava的AtomicInteger、Unsafe.compareAndSwapInt適用于計(jì)數(shù)器、游標(biāo)更新volatile 狀態(tài)標(biāo)志用volatile boolean控制開(kāi)關(guān)避免鎖的重量級(jí)開(kāi)銷無(wú)鎖隊(duì)列Lock-Free Queue如ConcurrentLinkedQueue內(nèi)部用CAS實(shí)現(xiàn)入隊(duì)出隊(duì)吞吐量比ArrayBlockingQueue高2-3倍Disruptor的RingBuffer通過(guò)序號(hào)Sequence和游標(biāo)Cursor分離讀寫(xiě)指針徹底消除鎖競(jìng)爭(zhēng)。在IoT設(shè)備管理平臺(tái)我們將設(shè)備心跳數(shù)據(jù)的入隊(duì)邏輯從synchronized改為CASQPS從1.8萬(wàn)提升到4.2萬(wàn)GC次數(shù)減少60%。關(guān)鍵改動(dòng)只有兩行// 舊代碼鎖住整個(gè)方法 public synchronized void addHeartbeat(Heartbeat data) { ... } // 新代碼只對(duì)游標(biāo)做CAS更新 private final AtomicLong cursor new AtomicLong(-1); public void addHeartbeat(Heartbeat data) { long next cursor.incrementAndGet(); // CAS原子遞增 ringBuffer[next % RING_SIZE] data; // 寫(xiě)入環(huán)形緩沖區(qū) }3.2 “喚醒-等待”機(jī)制的致命陷阱signalAll()為何比signal()更危險(xiǎn)幾乎所有教科書(shū)都教你用wait()/notify()實(shí)現(xiàn)生產(chǎn)者消費(fèi)者但很少提一個(gè)關(guān)鍵細(xì)節(jié)notify()只喚醒一個(gè)線程notifyAll()喚醒所有等待線程。在高并發(fā)場(chǎng)景下后者可能是定時(shí)炸彈。想象這個(gè)場(chǎng)景緩沖區(qū)容量為100當(dāng)前有50個(gè)生產(chǎn)者線程在wait()20個(gè)消費(fèi)者線程也在wait()。此時(shí)消費(fèi)者處理完一條數(shù)據(jù)調(diào)用notifyAll()——50個(gè)生產(chǎn)者20個(gè)消費(fèi)者全部被喚醒但緩沖區(qū)只空出1個(gè)位置最終49個(gè)生產(chǎn)者發(fā)現(xiàn)還是滿的又調(diào)用wait()19個(gè)消費(fèi)者發(fā)現(xiàn)沒(méi)數(shù)據(jù)也再次wait()。這70次無(wú)效喚醒Wakeup Storm會(huì)消耗大量CPU資源且可能觸發(fā)JVM的“偏向鎖撤銷”導(dǎo)致后續(xù)鎖操作退化為重量級(jí)鎖。我們?cè)诰€上遇到過(guò)最嚴(yán)重的一次某風(fēng)控規(guī)則引擎用notifyAll()通知規(guī)則更新單次更新觸發(fā)200線程喚醒CPU us用戶態(tài)飆升到95%響應(yīng)時(shí)間從20ms漲到2秒。正確做法是“精準(zhǔn)喚醒”生產(chǎn)者put后只喚醒一個(gè)等待的消費(fèi)者notify()消費(fèi)者take后只喚醒一個(gè)等待的生產(chǎn)者notify()如果用Condition就為生產(chǎn)者和消費(fèi)者分別創(chuàng)建獨(dú)立的Conditionprivate final Lock lock new ReentrantLock(); private final Condition notFull lock.newCondition(); // 生產(chǎn)者等待條件 private final Condition notEmpty lock.newCondition(); // 消費(fèi)者等待條件 public void put(T item) throws InterruptedException { lock.lock(); try { while (isFull()) notFull.await(); // 等待不滿 doInsert(item); notEmpty.signal(); // 只喚醒一個(gè)消費(fèi)者 } finally { lock.unlock(); } }注意signal()不是“保證喚醒”而是“最多喚醒一個(gè)”。如果當(dāng)前沒(méi)有等待的消費(fèi)者signal()就失效。所以必須配合while循環(huán)檢查條件不能用if——這是防止“虛假喚醒”Spurious Wakeup的鐵律。3.3 跨進(jìn)程/跨機(jī)器的“節(jié)奏同步”Kafka如何用offset玩轉(zhuǎn)生產(chǎn)消費(fèi)平衡當(dāng)生產(chǎn)者和消費(fèi)者不在同一進(jìn)程比如Web服務(wù)生產(chǎn)者往Kafka發(fā)訂單Flink作業(yè)消費(fèi)者實(shí)時(shí)計(jì)算風(fēng)控分這時(shí)傳統(tǒng)的wait/notify完全失效。Kafka的解決方案堪稱教科書(shū)級(jí)用offset偏移量作為全局時(shí)鐘解耦生產(chǎn)與消費(fèi)的物理節(jié)奏。Kafka的每個(gè)partition都有一個(gè)單調(diào)遞增的offset生產(chǎn)者發(fā)消息時(shí)broker自動(dòng)分配offset消費(fèi)者拉取消息時(shí)自己維護(hù)一個(gè)current_offset處理完一條就提交next_offset。這個(gè)設(shè)計(jì)帶來(lái)三大優(yōu)勢(shì)異步解耦生產(chǎn)者發(fā)完就走不關(guān)心消費(fèi)者是否在線重復(fù)消費(fèi)可控消費(fèi)者可回溯offset重放數(shù)據(jù)比如修復(fù)bug后補(bǔ)算動(dòng)態(tài)擴(kuò)縮容新增消費(fèi)者實(shí)例時(shí)Kafka自動(dòng)rebalance partition分配無(wú)需改代碼。但陷阱在于offset提交時(shí)機(jī)。我們?cè)蛟O(shè)置enable.auto.commitfalse后忘記手動(dòng)commit導(dǎo)致消費(fèi)者重啟后從老offset開(kāi)始重消費(fèi)風(fēng)控模型重復(fù)扣減信用分。后來(lái)統(tǒng)一規(guī)范實(shí)時(shí)計(jì)算場(chǎng)景用commitSync()同步提交確保消息處理完再更新offset批處理場(chǎng)景用commitAsync()異步提交配合回調(diào)函數(shù)處理失敗關(guān)鍵業(yè)務(wù)開(kāi)啟enable.idempotencetrue配合transactional.id實(shí)現(xiàn)精確一次語(yǔ)義。更重要的是監(jiān)控offset lag。Kafka自帶kafka-consumer-groups.sh命令但我們用PrometheusGrafana做了可視化看板kafka_consumer_lag{topicorder_topic,grouprisk_group} 1000立即告警kafka_consumer_fetch_latency_ms{grouprisk_group}P99 200ms檢查消費(fèi)者機(jī)器網(wǎng)絡(luò)kafka_producer_request_rate{topicorder_topic}突增300%排查上游服務(wù)是否異常。這套監(jiān)控讓我們把平均lag從小時(shí)級(jí)降到秒級(jí)風(fēng)控響應(yīng)時(shí)間P95穩(wěn)定在800ms內(nèi)。4. 實(shí)戰(zhàn)復(fù)現(xiàn)用300行代碼搭建一個(gè)可監(jiān)控的生產(chǎn)者消費(fèi)者系統(tǒng)4.1 項(xiàng)目目標(biāo)與架構(gòu)設(shè)計(jì)不做玩具直擊線上痛點(diǎn)這次我們不寫(xiě)“Hello World”式的demo而是復(fù)現(xiàn)一個(gè)真實(shí)電商秒殺場(chǎng)景的庫(kù)存扣減服務(wù)。需求很明確生產(chǎn)者API網(wǎng)關(guān)接收用戶秒殺請(qǐng)求每秒峰值1.5萬(wàn)次消費(fèi)者庫(kù)存服務(wù)校驗(yàn)庫(kù)存并扣減單機(jī)穩(wěn)定處理8000 TPS緩沖區(qū)有界阻塞隊(duì)列容量12000滿時(shí)拒絕并返回友好提示監(jiān)控實(shí)時(shí)暴露隊(duì)列長(zhǎng)度、生產(chǎn)速率、消費(fèi)速率、拒絕次數(shù)。架構(gòu)采用極簡(jiǎn)設(shè)計(jì)避免引入Spring Boot、Dubbo等復(fù)雜框架用純Java SDKMicrometer暴露指標(biāo)方便你直接集成到現(xiàn)有系統(tǒng)[用戶請(qǐng)求] → [Netty HTTP Server] → [生產(chǎn)者線程池] → [ArrayBlockingQueue] → [消費(fèi)者線程池] → [Redis庫(kù)存扣減] ↑ [Micrometer Prometheus Exporter]關(guān)鍵決策點(diǎn)不用ThreadPoolExecutor的CallerRunsPolicy它會(huì)讓生產(chǎn)者線程自己執(zhí)行任務(wù)導(dǎo)致API響應(yīng)變慢違背“快速失敗”原則消費(fèi)者用ScheduledThreadPoolExecutor固定5個(gè)線程避免創(chuàng)建過(guò)多線程拖垮CPU隊(duì)列監(jiān)控用AtomicInteger比synchronized get()快10倍且能被Prometheus直接抓取。所有代碼均可運(yùn)行我已打包成Maven工程附GitHub鏈接但這里只展示核心邏輯——因?yàn)檎嬲靛X(qián)的是設(shè)計(jì)思路不是代碼本身。4.2 核心代碼實(shí)現(xiàn)每一行都對(duì)應(yīng)一個(gè)線上教訓(xùn)緩沖區(qū)與監(jiān)控集成public class SeckillQueue { // 有界隊(duì)列容量12000 private final BlockingQueueSeckillRequest queue new ArrayBlockingQueue(12000); // 原子計(jì)數(shù)器供Prometheus監(jiān)控 private final AtomicInteger queueSize new AtomicInteger(0); private final AtomicInteger produceCount new AtomicInteger(0); private final AtomicInteger consumeCount new AtomicInteger(0); private final AtomicInteger rejectCount new AtomicInteger(0); public boolean offer(SeckillRequest request) { if (queue.offer(request)) { queueSize.incrementAndGet(); produceCount.incrementAndGet(); return true; } else { rejectCount.incrementAndGet(); return false; // 明確返回false由上層處理拒絕邏輯 } } public SeckillRequest poll() { SeckillRequest req queue.poll(); if (req ! null) { queueSize.decrementAndGet(); consumeCount.incrementAndGet(); } return req; } // Prometheus指標(biāo)暴露方法 public int getQueueSize() { return queueSize.get(); } public int getProduceCount() { return produceCount.get(); } public int getConsumeCount() { return consumeCount.get(); } public int getRejectCount() { return rejectCount.get(); } }實(shí)操心得queueSize必須用AtomicInteger不能用queue.size()。因?yàn)閟ize()在并發(fā)環(huán)境下可能返回不準(zhǔn)確值內(nèi)部用迭代器遍歷而我們的監(jiān)控告警依賴精確數(shù)字。曾經(jīng)有團(tuán)隊(duì)用size()做熔斷結(jié)果因數(shù)值不準(zhǔn)導(dǎo)致誤熔斷。生產(chǎn)者Netty Handler中的非阻塞寫(xiě)入ChannelHandler.Sharable public class SeckillHandler extends SimpleChannelInboundHandlerFullHttpRequest { private final SeckillQueue queue; Override protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest req) { // 解析請(qǐng)求構(gòu)建SeckillRequest對(duì)象 SeckillRequest request parseRequest(req); // 異步寫(xiě)入隊(duì)列絕不阻塞Netty EventLoop boolean success queue.offer(request); if (success) { // 寫(xiě)入成功返回排隊(duì)中 sendResponse(ctx, QUEUED); } else { // 拒絕請(qǐng)求返回活動(dòng)已結(jié)束 sendResponse(ctx, FULL); } } private void sendResponse(ChannelHandlerContext ctx, String status) { FullHttpResponse resp new DefaultFullHttpResponse( HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.copiedBuffer(status, CharsetUtil.UTF_8) ); resp.headers().set(HttpHeaderNames.CONTENT_TYPE, text/plain; charsetutf-8); ctx.writeAndFlush(resp); } }注意Netty的EventLoop線程必須保持非阻塞。如果在這里調(diào)用queue.put()阻塞方法EventLoop會(huì)被卡住導(dǎo)致整個(gè)連接超時(shí)。offer()的非阻塞特性是保障Netty高性能的關(guān)鍵。消費(fèi)者固定線程池優(yōu)雅關(guān)閉public class SeckillConsumer { private final SeckillQueue queue; private final ScheduledExecutorService executor; private volatile boolean running true; public SeckillConsumer(SeckillQueue queue) { this.queue queue; // 固定5個(gè)線程避免線程數(shù)隨負(fù)載波動(dòng) this.executor Executors.newScheduledThreadPool(5, new ThreadFactoryBuilder().setNameFormat(seckill-consumer-%d).build()); // 每10ms拉取一次模擬高頻率消費(fèi) executor.scheduleAtFixedRate(this::consume, 0, 10, TimeUnit.MILLISECONDS); } private void consume() { if (!running) return; SeckillRequest req queue.poll(); if (req null) return; // 隊(duì)列空跳過(guò) try { // 扣減Redis庫(kù)存帶Lua腳本保證原子性 boolean success redisTemplate.execute(SECKILL_LUA, Collections.singletonList(seckill:stock: req.getItemId()), req.getUserId(), req.getItemId()); if (success) { // 扣減成功發(fā)MQ通知下游 mqProducer.send(seckill_success, req); } else { // 庫(kù)存不足記錄日志 log.warn(Stock insufficient for item {}, req.getItemId()); } } catch (Exception e) { log.error(Consume failed, e); } } public void shutdown() { running false; executor.shutdown(); try { if (!executor.awaitTermination(30, TimeUnit.SECONDS)) { executor.shutdownNow(); // 強(qiáng)制關(guān)閉 } } catch (InterruptedException e) { executor.shutdownNow(); Thread.currentThread().interrupt(); } } }關(guān)鍵細(xì)節(jié)scheduleAtFixedRate比scheduleWithFixedDelay更合適。前者保證每10ms執(zhí)行一次即使某次消費(fèi)耗時(shí)較長(zhǎng)如Redis超時(shí)下次仍準(zhǔn)時(shí)觸發(fā)后者會(huì)等上一次執(zhí)行完再等10ms可能導(dǎo)致消費(fèi)節(jié)奏拖慢。在秒殺場(chǎng)景寧可丟棄部分請(qǐng)求也不能讓消費(fèi)延遲累積。4.3 監(jiān)控指標(biāo)配置用Prometheus抓取Grafana畫(huà)圖Micrometer配置只需3行// 初始化MeterRegistry MeterRegistry registry new PrometheusMeterRegistry(PrometheusConfig.DEFAULT); // 綁定隊(duì)列監(jiān)控器 registry.gauge(seckill.queue.size, seckillQueue, q - q.getQueueSize()); registry.gauge(seckill.queue.produce.count, seckillQueue, q - q.getProduceCount()); registry.gauge(seckill.queue.consume.count, seckillQueue, q - q.getConsumeCount()); registry.gauge(seckill.queue.reject.count, seckillQueue, q - q.getRejectCount()); // 暴露HTTP端點(diǎn) HttpServer server HttpServer.create(); server.route(/actuator/prometheus, (req, resp) - { resp.status(200).send(registry.scrape()); });Grafana看板必備面板隊(duì)列水位圖seckill_queue_size閾值線設(shè)為12000超過(guò)變紅色速率對(duì)比圖疊加rate(seckill_queue_produce_count[1m])和rate(seckill_queue_consume_count[1m])兩條線交叉處就是積壓起點(diǎn)拒絕率熱力圖seckill_queue_reject_count/seckill_queue_produce_count5%立即告警消費(fèi)延遲直方圖用Micrometer的Timer記錄seckill_consume_duration_secondsP9950ms需優(yōu)化Redis連接池。上線后我們用這套監(jiān)控在雙十一大促中提前23分鐘發(fā)現(xiàn)庫(kù)存服務(wù)消費(fèi)速率下降及時(shí)擴(kuò)容2臺(tái)機(jī)器避免了訂單超賣。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄那些文檔里不會(huì)寫(xiě)的坑5.1 “明明隊(duì)列沒(méi)滿為什么生產(chǎn)者還在拒絕”——線程池飽和的真實(shí)原因現(xiàn)象監(jiān)控顯示seckill_queue_size始終在3000以下容量12000但reject_count每秒增長(zhǎng)100。排查過(guò)程先看生產(chǎn)者線程池狀態(tài)jstack發(fā)現(xiàn)大量線程在java.util.concurrent.ThreadPoolExecutor$Worker.run中WAITING再查線程池配置corePoolSize10, maxPoolSize10, queueArrayBlockingQueue(100)關(guān)鍵發(fā)現(xiàn)生產(chǎn)者用execute()提交任務(wù)但隊(duì)列滿后線程池執(zhí)行AbortPolicy默認(rèn)策略直接拋RejectedExecutionException——而我們的代碼沒(méi)捕獲這個(gè)異常導(dǎo)致請(qǐng)求直接失敗。根因不是隊(duì)列滿而是生產(chǎn)者線程池的work queue太小。ArrayBlockingQueue(100)只能緩沖100個(gè)任務(wù)當(dāng)每秒1.5萬(wàn)請(qǐng)求涌入10個(gè)線程根本來(lái)不及消費(fèi)隊(duì)列瞬間打滿。解決方案將線程池的work queue改為SynchronousQueue無(wú)緩沖強(qiáng)制線程池創(chuàng)建新線程或增大maxPoolSize到50配合CallerRunsPolicy讓Netty線程自己處理需評(píng)估Netty線程負(fù)載最優(yōu)解生產(chǎn)者線程池只負(fù)責(zé)入隊(duì)不執(zhí)行業(yè)務(wù)邏輯。把execute()換成submit()任務(wù)體只做queue.offer()真正的庫(kù)存扣減交給消費(fèi)者線程池——這樣生產(chǎn)者線程池永遠(yuǎn)不會(huì)滿。實(shí)操心得線程池的queue size和業(yè)務(wù)隊(duì)列的capacity是兩回事。前者影響生產(chǎn)者吞吐后者影響系統(tǒng)穩(wěn)定性。我見(jiàn)過(guò)太多團(tuán)隊(duì)把兩者混為一談結(jié)果調(diào)了半天業(yè)務(wù)隊(duì)列問(wèn)題卻在線程池配置上。5.2 “消費(fèi)者CPU100%但隊(duì)列長(zhǎng)度不變”——GC停頓偽裝成性能瓶頸現(xiàn)象seckill_queue_size穩(wěn)定在8000consume_count幾乎為0top顯示消費(fèi)者線程CPU 100%但jstat -gc顯示FGC頻繁。深入分析jstack發(fā)現(xiàn)所有消費(fèi)者線程都在java.lang.ref.Reference$ReferenceHandler中RUNNABLEjmap -histo顯示java.lang.ref.Finalizer對(duì)象占內(nèi)存70%原因消費(fèi)者代碼中創(chuàng)建了大量帶finalize()方法的對(duì)象如自定義的SeckillRequest而Finalizer線程處理不過(guò)來(lái)導(dǎo)致對(duì)象無(wú)法回收最終觸發(fā)Full GC。解決方案刪除所有finalize()方法用Cleaner替代Java 9或用PhantomReferenceReferenceQueue手動(dòng)管理資源釋放更徹底避免在消費(fèi)者中創(chuàng)建臨時(shí)對(duì)象復(fù)用對(duì)象池如Apache Commons Pool。我們最終用對(duì)象池將單次消費(fèi)內(nèi)存分配從1.2MB降到200KBFGC從每分鐘3次降到每天1次。5.3 “Kafka消費(fèi)延遲突然飆升但lag沒(méi)漲”——網(wǎng)絡(luò)分區(qū)的隱性殺手現(xiàn)象Kafka監(jiān)控顯示consumer_lag0但業(yè)務(wù)日志里訂單處理延遲從200ms漲到5秒。排查路徑kafka-consumer-groups.sh --describe確認(rèn)lag確實(shí)為0tcpdump抓包發(fā)現(xiàn)消費(fèi)者機(jī)器到Kafka broker的TCP連接頻繁重傳ping延遲正常但mtr顯示中間某跳丟包率90%定位到云廠商的某個(gè)AZ可用區(qū)網(wǎng)絡(luò)抖動(dòng)。根因Kafka消費(fèi)者配置了session.timeout.ms10000但網(wǎng)絡(luò)抖動(dòng)導(dǎo)致心跳超時(shí)Kafka觸發(fā)rebalance所有消費(fèi)者暫停消費(fèi)30秒rebalance耗時(shí)。雖然lag沒(méi)漲因?yàn)闆](méi)新消息但正在處理的消息被卡住。解決方案調(diào)大session.timeout.ms45000heartbeat.interval.ms15000避免誤判開(kāi)啟auto.offset.resetlatest防止rebalance后從頭消費(fèi)關(guān)鍵在消費(fèi)者代碼中加超時(shí)控制// 拉取消息時(shí)設(shè)置超時(shí) ConsumerRecordsString, String records consumer.poll(Duration.ofMillis(300)); if (records.isEmpty()) { log.warn(Kafka poll timeout, check network); continue; }獨(dú)家技巧在Kafka消費(fèi)者啟動(dòng)時(shí)先用consumer.listTopics()測(cè)試連通性失敗則直接退出避免帶病運(yùn)行。5.4 “用Disruptor后吞吐翻倍但內(nèi)存泄漏了”——RingBuffer的生命周期陷阱現(xiàn)象Disruptor版本上線后QPS從1.8萬(wàn)升到4.2萬(wàn)但jmap顯示com.lmax.disruptor.RingBuffer對(duì)象持續(xù)增長(zhǎng)Full GC后不釋放。根因Disruptor的RingBuffer是靜態(tài)分配的但EventFactory創(chuàng)建的事件對(duì)象被業(yè)務(wù)代碼強(qiáng)引用如存入HashMap導(dǎo)致GC無(wú)法回收。修復(fù)步驟確保EventFactory返回的對(duì)象是輕量級(jí)POJO不含外部引用在onEvent回調(diào)中絕不保存事件對(duì)象的引用如需暫存數(shù)據(jù)用ThreadLocal或?qū)ο蟪赜猛炅⒓碿learDisruptor shutdown時(shí)調(diào)用ringBuffer.setBufferSize(0)強(qiáng)制釋放。我們最終用ThreadLocalSeckillEvent替代全局Map內(nèi)存泄漏消失。6. 我的實(shí)戰(zhàn)體會(huì)生產(chǎn)者消費(fèi)者問(wèn)題的本質(zhì)是“信任邊界”的設(shè)計(jì)寫(xiě)完這篇5000字的實(shí)操筆記我想說(shuō)一句可能冒犯教科書(shū)的話生產(chǎn)者消費(fèi)者問(wèn)題從來(lái)就不是一個(gè)“如何同步”的技術(shù)問(wèn)題而是一個(gè)“如何定義責(zé)任邊界”的架構(gòu)問(wèn)題。我在金融系統(tǒng)里見(jiàn)過(guò)最優(yōu)雅的解法生產(chǎn)者只負(fù)責(zé)把數(shù)據(jù)“扔進(jìn)郵箱”不關(guān)心誰(shuí)收、何時(shí)收、收多少消費(fèi)者只負(fù)責(zé)“查郵箱”不關(guān)心誰(shuí)寄、寄什么、為何寄。郵箱緩沖區(qū)的規(guī)則容量、丟棄策略、持久化由雙方共同約定寫(xiě)進(jìn)SLA文檔而不是藏在代碼注釋里。這種設(shè)計(jì)讓系統(tǒng)獲得了驚人的韌性。去年某次數(shù)據(jù)庫(kù)主庫(kù)宕機(jī)我們的消費(fèi)者服務(wù)自動(dòng)降級(jí)為“只讀模式”繼續(xù)消費(fèi)Kafka積壓消息而生產(chǎn)者照常接收請(qǐng)求緩沖區(qū)撐了47分鐘直到主庫(kù)恢復(fù)——沒(méi)有一行代碼修改只靠緩沖區(qū)策略和監(jiān)控告警。所以下次當(dāng)你面對(duì)“生產(chǎn)者與消費(fèi)者問(wèn)題”時(shí)別急著打開(kāi)IDE寫(xiě)代碼。先拿出紙筆回答三個(gè)問(wèn)題生產(chǎn)者能承受的最大失敗率是多少?zèng)Q定拒絕策略消費(fèi)者能容忍的最長(zhǎng)延遲是多少?zèng)Q定緩沖區(qū)容量當(dāng)一方永久失效時(shí)另一方該如何優(yōu)雅退場(chǎng)決定持久化和重試機(jī)制這三個(gè)問(wèn)題的答案比任何鎖、隊(duì)列、信號(hào)量都重要。因?yàn)榧夹g(shù)只是工具而設(shè)計(jì)才是靈魂。最后分享一個(gè)小技巧在團(tuán)隊(duì)代碼評(píng)審時(shí)我總會(huì)問(wèn)新人“如果現(xiàn)在拔掉這臺(tái)消費(fèi)者的網(wǎng)線你的生產(chǎn)者代碼會(huì)怎么表現(xiàn)”——答案不是“報(bào)錯(cuò)”而是“按預(yù)定策略降級(jí)”。能做到這一點(diǎn)才算真正吃透了生產(chǎn)者與消費(fèi)者問(wèn)題。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久夜夜夜| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 91新在线欧美| 亚洲成熟国产精品美女| 99久久99九九99九九九| 人妻天天夜夜爽一区二区| 亚洲资源站| 看黑人AV不卡| 五月丁香啪啪啪| av天堂电影网| 青青草视频导航官网| 精品成人亚洲午夜电影| 韩日欧亚a级| 人妻天天操天天爽视频免费| 欧美日本一区二区a人| 操碰97| 欧美亚洲第1页| 在线人成亚洲视频免费观看| 亚洲色图欧美视频| 97Ai亚洲| 欧美亚州色的图| 极品极品色影院| 欧州91高潮| 久久精品91| 久久99国产综合精品女同| 国产女人和拘做爰视频| 国产97亚洲| 天操天操夜操夜月月年年操操| 激情第四色| 留下AⅤ黄色片| 五十路六十路素人熟女| 少妇久久| 麻豆精品一区二区三区四区免费观看| 国产天天噜一噜久久久| 超碰日韩美妻| 亚洲综合色图欧美| 亚洲双插| 中文字幕乱亚洲美女精品一区| 久久激情四射婷婷丁香五月天| 久噜噜| 麻豆AV96熟妇人妻| 精品丰满人妻一区二区三区免费观| 91东北熟女| 91制服丝袜| 亚洲激情欧美色图 | 亚洲污一污二| 免费农村成人少妇人妻Aa一区二区视频| 91深夜夜| 亚洲 欧美 日韩 国产一区二区| 日韩视频小说在线观看| 蜜桃久久一区| 男人的天堂网页| 五月婷亚洲精品天堂| 欧美色999| 尹人免费观看视频在线| 精品人妻一区二区视频| 欧美日韩亚洲少妇寂寞影院正在播放| 天天天干977| 97超碰碰| 高清一区AV无码| 亚洲最大成人a毛毛片| 中文字幕乱码人妻二区三区| 日韩精品在线放| 亚洲AV无码翔田千里网站| 3P乱轮视频| av在线观看不卡网站| 丁香六月东京热| 东京热亚洲一区二区| 九九久久99| 欧美视频一区二区在线| 亚欧性爱ab| 色伊人91| 亚洲乱码尤物193YW| 色五月婷婷麻豆在| 91丝袜激情在线| 黄色高清久久无码依人| 日本三级日本三级三级人妇四虎| 嗯~啊~快点 死我视频| 中文有码第五页| 夜夜爽爽夜夜精品视频| 超碰69| 色综合大香蕉| 国产亚洲女v在线观看| 夜夜一区二区| 亚洲综合113页| 久久精品成人| 顶级丝袜熟女一区二区三区 | 欧美综合色,www| 亚洲国产成人精品999| 中国探花熟女| 欧美综合站| 九一性生活免费视频| 精品97久久| 亚洲天堂精品日韩电影| 女人被男人桶爽视频网站| 久久九九网| 五月开心网| 日本好吊色视频| 欧美综合自拍| 五月丁香六月婷| 久久m| 干超碰碰熟女| 九热视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 超碰这里有精品| 国产一国产一级毛片古装| 欧美精品成人在线播放| 亚洲精品蜜桃久久久一区二区三区| 老女人碰碰在线碰碰视频| 亚洲97在线观看| 一级做a爰片性色毛片久久| 偷拍自拍在线视频观看| 久久综合精品一区二区三区| 四虎国产精品永久在线囯在线| 色婷婷丁香| 热久久无毒不卡| 交换娇妻呻吟声不停中文字幕| 91 在线亚洲| 91精品国| www久久99| 日本孕妇孕交| 亚洲成A∨人影院在线欢看| 欧美日韩亚洲五月天婷婷| 久久精品一区二区一8| 伊人久久大香线蕉无码| 区二区亚洲婷| 伊人影院综合是一个与深夜成人在线| 999熟女精品| 女性喷水高潮在线观看| 东北黄色电影| 国产精品不卡一区二区电影| 一区二区三区四区久久视1| 国产亚洲精品一区二区三区| 九九久久国产精品| 天堂中文日本在线观看| 自拍第一页| 婷婷五月天成人网| 欧美大片91| 3571色综合一区二区二区| 国产精品久久久久婷婷二区次| 色婷婷基地| 亚洲日韩美女丝袜美腿人妻视频| 色婷婷综合久久中文字幕雪峰 | 91色综合激情| 日韩亚洲精品一区二区| 88在线一区二区三区| 亚洲精品一区中文字幕乱码| 日韩av在线精品观看| 91操人视频| 亚洲欧美洲综合| 荡小穴在线观看| 91AV入口| 久久精品人妻一区二区三区| 国产按摩一区二区三区| 天天摸夜夜添无码小视频| 伦理日韩国产久久| 久久精品亚洲成a人天堂| 五十路熟女在线不卡观看一区二区| 黄色片一区二区三区四区五区| 日本中文字幕一区| 久久久久久亚洲精品不卡人乳| 99精品国产户外露出| 美性中文综合网| 久久riav中文精品| 日本二三四区| 男人的天堂VA在线| 国产一级片| 亚洲精品国产无码高清| 加勒比综合网| 日本亚洲嫩草影院啪啪| 91九九九小逼| 伊人激情| 九九九九久久久久| 国产精品69久久久久久久| 亚洲AV无码天美传媒一区| 97超碰超碰| 91美女看B| 人妻精品一区二区在线| 亚洲高清视频在线免费观看| 蜜臀久久在线视频| 少妇二级| 五月激情综合网| 国产一区二区三区久久久精品| 夜夜欧美 | 久久99国产综合精品女同| 91亚洲色人| 久久人妻熟女一区二区| 凸凹视频在线观看| 日韩乱伦影音先锋| 91丨豆花丨熟女| 日本欧美不卡| 999国产精品999久久久久久| 亚洲自拍小说| 天久久久噜噜噜久久国产精品爽爽 | 欧美色交| 丝袜美女诱惑 91 视频| 天天综合欧美综合| 一二三啪啪专区| 啊…啊…操我用力操我| 国产精品熟女乱伦| 久久社区一区二区三区| 爽极品影院| 欧美91精品国产自产| 久久精品操| 99热99re6国产在线播放| 日韩电影天堂视频一区二区| 伊人久久大香线综合无码| 欧美老熟另类| 日韩精品高清资源在线| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 日本日日色视频| 日韩三级网址| 亚洲性猛交| 蜜臀AV成人精品蜜臀| 精品国产99| 香蕉一区二区三区在线视频| 新97国产超碰| 九九九精品一区二区无码| 精品97久久综合| 激情综合av| 青青草色插素人| 综合激情一一91| 激情视频一二三| 欧美色图小说综合| AV色女综合| 精品天堂| 超碰国产精品久| 91成人久久| 图片区小说区| 欧美男人一区| 熟女欧美日韩综合婷婷| 97超碰免费生活| 中文熟女五十乱码在线| 在线综合网| 情趣丝袜无码操逼视频| 蜜臀久久99精品久久久久久酒店| 2017大香蕉| 久久国产逼| 欧美亚洲另类在线蜜桃| 日日夜夜狠狠| 天天日天天舔| 亚洲AV不卡在线观看尤物| 超碰到97情色| 一区AV| 激情网色| laoshunv91| 狠狠操狠狠燥| 69XX一中文字幕人妻91| 无码在线亚洲| 人人妻人人操人人乐| 91久久18禁| 久久久久久九九九九九九| 97在线视频免费看| 成人午夜小视频手机在线看| 九九天堂| 99在线精品观看视频中文| jazzjazz国产精品麻豆| 国产呦精品一区二区三区下载| 天天干天天做| 欧美精品一二三| 草草影院最新网址| 偷窥自拍亚洲色图| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 377p欧洲日本亚洲大胆| 蜜臀AV一区二区三区激情综合| 日韩欧美水蜜桃人妻| 日韩一二三区| 五月天成人综合| 欧美日韩亚洲五月天婷婷| 亚洲黄色电影| 久久久久久久久成人av解说| 欧美日本天堂| 精品无码久久久久久国产浪潮| 激情小说五月天| 久久国语| 伊人久久综合精品欧美| 情色av电影| 99re99| av资源在线观看少妇| 亚州乱码中文字幕综合久久久| 91欧| 91亚洲人电影| 97天天| 欧美一级A片在线看视频性色| 激情五月天色色网| 男人天堂无码| 亚洲AV无码久久久国产精品| 中文字幕精品专区搜索结果91| 亚瑟国产精品久久无码| 欧洲精品在线播放| 人人看人人插| 久久久∴| 91一起操| 蜜臀久久99精品久久久久久无删减| 日韩一级免费性爱| 97ai亚洲| 精品丰满人妻一区二区三区免费观| 日韩有码回春沙龙第一页| 欧美一级久久久久久久大片动画| 精品久久久久久久久久久久| 五月婷婷六月丁香网址| 91处女在线视频| 午夜福利在线合集| 成人情色综合网| 偷窥自拍A片| 欧美激情亚洲| 大香蕉伊利av| A级毛片在线看免费| 97精品视频免费| 日韩视频精品在线观看| 久久夜夜夜| 91人妻素女| 欧美,日韩,中文,另类| 麻豆国产96在线| 熟妇一区二区| 欧美性战999| 日韩熟女乱伦中出| 欧美专区17页| 最新加勒比丝袜在线| AVE乱伦| 福利天堂| 99操| 超碰色男人操熟女| 超碰是碰在线观看| 超碰超碰95| 91精品微拍福利| 精品少妇人妻一区二区三区| 欧美久久九九| 淫荡少妇免费| 日韩无码一区二区三区| 日本一天色道久久久精品视频| 久久五十路熟女人妻| 国产美女91| 好湿好紧好爽 视频| 日逼视频日本| 一起草高清无码| 手机久操欧美综合色码| 久久女婷| 日韩人妻中文视频| 国产无码三级视频在线观看| 色哟哟av| 久久精品视频28| 午夜福利成人免费视频| 国产乱色国产精品免费视| 91在线国产后入风骚翘臀美女素人| www.99热| 亚洲色图日韩精品| 蜜臀AV秘一区翔田千里| www.男人的天堂| 超碰在线97国产| 91无码中出人妻视频| 无码区蜜乳| 乱人乱色一区二区三区免费| 亚洲欧洲第二视频在线观看色图| 嗯嗯啊啊视频在线看| 伊人网综合在线视频| 久久夜夜| 国产精品另类| 日韩特一级久久| caopeng97人妻| 日日夜夜干| 人妻日日干| 俄罗斯一区二区视频在线观看| 欧美春色| 久久婷婷一区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 天天色,天天干,天天干| 精品视频在线观看精品| 2017天天插| 久久中文字幕女同性恋一区| 中文幕97| 美女裸体麻豆天美蜜桃91| 99超碰色| 91 亚洲 欧洲| 狠狠干综合| 国产成人久久久精品免费AV| 91高清无码下载| 岛国毛片在线观看免费| 日韩操逼性鲍| 岛国片在线视频网站| 欧洲黄色网| 国产高清成人免费视频| 大香蕉一级黄色片久久| 亚洲阿v天堂在线| 亚洲精品欧洲色| 清纯唯美激情| 国产操逼网站亚洲一级黄色| 热思思免费视频| 97综合| 亚洲一二三四区| 国产精品噜噜噜日日日| 精品亚洲天堂| 日韩兔费看黄片| 国产后入| 操逼不卡中文字幕| 黄网色一区二区三区四区精品| 在线观看色视频| 操高情无码| a级理论午夜日本| 极品尤物在线观看| 亚洲天堂东京热| 男人的天堂在线2| 99爱久久视频频| 日日夜夜青青草母狗| 日日做夜狠狠爱欧美黑人| 少妇丝袜在线观看AV| 久肏视频字幕| 天天澡天天狠天天天做| 国产av又色又爽又黄| 91爆操视频| 亚洲激情四射| 熟妇艹鸡八| 91老熟女91老女人| 欧美高清色| 超碰在线人妻中文字幕| 91人妻中文| 青草视频在线看看看看看看看看看| 婷婷色一区| 久日91在线| 亚洲图片 欧美电影| 屁股久久久久久久| 在线欧美69V免费观看视频| 亚洲经典啪啪| 99啪啪| 日韩欧美中文字幕搭讪巨乳美人妻视频| 久久久久久久唑| 欧美日日操| 亚洲综合激情五月久久| 亚热日本熟女| 秋霞色色影院| 无码自拍SM| 91红杏| 久久精品无码不卡| 日韩精品国产一区二区| 看日韩美女二区三区免费操逼视频 | 亚欧美综合网| 国产精品熟女丝袜一区二区| 欧美老妇女内射网址| 日韩AV噜噜噜一区二区三区四区| 亚洲国产成人精品久久久国产成人一区二区| 精品中文字幕一区二区| 色999人与兽| 成人精品水蜜桃久久久久久久| 亚洲色图亚洲| 激情一区二区三区在线观看| 亚洲自拍青操视频| 无码精品人妻一区二区三区妖精| 91欧美偷拍| 亚洲 在线| 美国aaaaa一级黄片| 亚洲欧美九九| 欧美天天干| 亚洲无码久久久久久久| 亚洲熟久久| 日本一级特级毛片视频| 九九九九九九九精品视频| 在线色资源| 国产一区二区三三视频| 国产精品午夜成人福利| 亚洲无992tv| 国产玖玖| 不卡二三区人妻少妇| 丝袜美腿制服人妻二区中文字幕| 国产精品网站免费| 不卡中文字幕aⅴ在线| 精品女人999| 噜噜噜噜久久久精品免费| 亚洲av淫乱| 亚洲色图 综合| 国产乱伦性爱区| 校园春色综合色| 亚洲天堂久久久久久粉红视频| 日韩人妻资源在线看| 天天影视综合色| 亚洲最大网站av| 久久亚洲天堂| 最新国产精品久久精品| 清纯唯美综合| 草草影院在线视频| 超碰欧美| 亚洲天堂第一页| 国产一区二区三区免费视频在性观看| 成人老鸭窝人人在线视频| 秋霞一集毛片观看| 97视频620| 欧美一区二区三区另类精品| 果冻传媒一区二区三区| 欧洲熟妇xxXx欧美老妇裸体| 欧美激情专区| 夜夜操av亚洲一区二区| 一级黄色性爱A级片| 久久久国产护士丝袜美腿一| 国产精品亚洲免费| 97超碰香蕉| 欧美在线伊人色| 午夜超爽| 97资源站国产精品| 色穴精品| 懂色av色欲av蜜臀av| 人妻无码一区二区三区久久99| 国产亚洲综合欧美一区| 日本人妻最新在线中| 99xav| 国产成人精品日本亚洲语言| 黑人猛交| 色综合1991| 天天添天天干电影| 亚洲国产尤物yw在线观看| 69久久| 欧美久久毛片基地| 亚洲国产精品无码AV在线| 2020中文字幕在线| 伊人97色天使| 91成人在线免费视频| 9久久久久| 都市激情人妻一区二区青青操视频 | 色色激情五月天| 日韩操逼性鲍| sewuyueav| 神马久久久久久久久久| 夜色五月天| 人妻81p| 午夜毛片亚洲精品片国产久久久| 青娱乐手机日韩在线视频| 伊人AAA| 日韩无码黄色片| 久久久久久九九九九| 亚洲综合骚逼| 久插综合| 亚洲情色婷婷五月天| 国产成人免费观看在线视频| 日婷婷| 91欧美网| 成人日本片久久久蜜桃| 99久在线精品99re8a| 伊人综合色网| 激情久久久| 久久高清欧美国产| 一个色导综合| 2018天天日天天日| 91国模| 欧美色吧综合| 国产AV人人夜夜澡人人爽麻豆| 日韩精品人妻中文字幕有码午| 偷看洗澡一二三区美女| 丰满岳乱妇一区二区三区| 人妻天天爽天天爽三区| 99夜夜操| 九久9精品| 亚洲情色 自拍| 超碰偷拍| 97超碰国产亚洲精品| 色欲色香天天天综合网www-亚洲综合国| 日韩在线视频1234| 97超碰国产精品| 婷婷大香蕉| 婷婷亚洲综合| 五月婷丁香| www.色婷婷.com| a在线观看| 欧美日韩性爱视屏免费看了| 国产乱伦性爱AV| 久操不卡视频| 丁香色婷婷| www.99热| 欧美乱色| 欧美久久久15P| 91撸色网 玖玖网 欧美| 久草草一二三四区久久| 九九九九九九视频| 五月天人妻综合| 久久久天堂| 另类欧美色| 啊啊啊好想要| 老熟女搡BBBB搡BBBB视频| 亚洲国产精品99久久久| 凹凸久久人人| 日本中文字幕在线视频| 天天综合亚在线| 夜夜狼人妻| 性色av一区二区| 智利AV在线网| 草久在线| 色在线综合| 中文字幕精品日韩中文字幕| 99自拍视频在线| 天天日B狠狠操| 日韩精品熟妇| 欧美线天码中字| 美欧色综合| 免费视频在线一区二区不卡| 亚洲日韩美女中文字幕乱| 去干网最新版| 有码人妻系列| 久久久91福利姬| 少妇高潮九九九九| 亚洲精品人妻在线| 99精品免费| 亚洲综合性感在线| 四虎免费在线播放| 久久久一区二区三区三州| 在线视频日韩欧美国产| 国产精品 亚洲情色| 操逼999| 97干在线视频| 国产黄片在线免费观看| 青青11操操操操操操操操| 成人在线午夜视频一区| 69精品| 强奸乱伦av电影| 91亚洲青青草原精品1区| 97久久天天综合色天天综合色电影| 中文字幕在线免费观看| 欧美日韩香蕉| 老熟女区| 欧美激情专区| 大香蕉黄色一区| 啊啊啊啊啊好大好舒服想要| 91天天综合日韩欧美| 黄在线| 嫩草 人人网精品| 人妻精品一区二区| 久久精品国产亚洲AV成人直播| 久久久久9久久久久| 亚洲精品 欧美97色色| 97久久免费| 日韩视频精品在线观看| 超碰狠狠操| 国产亚洲精品美女| 2025年A片视频精品| 99热思思| 国产精品农村妇女精品| 日韩 欧美 视频 在线 一区| 亚洲激情 欧美色图| 91成人无码| 国产精品熟女乱伦| 久久9精品网站| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 亚洲激情综合| 色婷婷日韩精品一区二区三区| 色五天伊人| 少妇人妻精品| 日韩簧片免费看| 中文字暮97| 屁股久久久久久久久久| 发朗少妇买婬全视频中文| 婷婷人妻激情| 一起草av| 欧在线一二区| 欧美亚洲日韩人妻在线观看| 成人青青草原伊人| 色播综合| 96久久久久| 男人的天堂在线有码| 亚洲天天更新| 九月丁香婷婷| 日韩一区二区精彩视频| 久久精品72| 多毛小伙内射老太婆| 亚洲色图综合网| 操高情无码| 亚洲图片欧美另类综合免费视频大大香| www.av在线视频| 色九九综合AV| 丁香五月自拍| 96久久久| 久久久久久久久久久999| 国产高清精品一区二区三区毛片 | 黄色av片三级三级三级免费看| 欧美色图97| 性爱综合网| 激情综合网亚洲| 精品亚洲俞拍视频一区| 免费观看的黄色的网站| 人妻少妇精品久久久久久| 亚洲 欧美 天天| 人人做天天爱| 少妇熟女视频一区二区三区| 亚洲成人av色网| 性爱综合一区二区| 久久久成人免费av电影| 发朗少妇买婬全视频中文| 欧美成人一级麻豆| 久久精品国产精品| 欧美色婷婷| 18禁在线视频| 无码二级三级| 91骚妇| 丁香九月激情啪| 大学生美女口爆| 欧美与日韩97| 96AV精品| 粉嫩不卡一区二区性爱| 91日韩国产欧美亚洲另类精盘州至城都| 青青草吊丝| 久久性爱大全| 妇女性内射冈站HDWWWCOM| 天天综合站| 不卡九肏| 大香蕉手机视频| 伊人久久综合影院| 91国模| 伊人四虎综合| 欧美色图亚洲特色| www色色色com| 国产aⅴ无码片毛片一级网站| 久久久久久久9| 日本孕妇孕交| 2025亚洲男人天堂| 99视频只有精品| 亚洲一欧洲中文字幕在线 | 少妇超碰在线| aaaa少妇高潮大片| 国产亚洲深夜激情| 91精品人妻一区二区三区蜜臀| 国产青青美女玩逼视频| 2025亚洲男人天堂| 青青操青娱乐| 五月色网| A片 AV一级在线播放观看免费| 色屁屁影院www国产| 96久久久久久久| 久久华人网| 亚洲综合贴图91| 青青草精玖玖69精品| 熟妇人妻精品一区二区视频色欲| 无码抄逼网| 国产成人手机视频激情| 国产av激情无码久久天堂| 色悠久| 久久老熟女| 91激情国产| 日本免费一区二区不卡 | 日韩免费在线观看不卡| 97欧美超碰| 久草成人| 97干色| 大色综合| 亚洲综合电影| 97香蕉网| 日韩啊V| 久久精品一区二区一8| 淫荡网址| 日韩av无码网站| 亚洲精品国产精品成人| 欧美Ⅴ性爱| 久久日韩精品一区二区| 成在线人在线观看视频| 在线色导航| 最好看的中文字幕在线2018| 国模不卡| 亚欧高清在线| 另类专区在线观看| 丝袜美腿诱惑亚洲欧美视频在线观看 | 欧美日动态视频| 欧美天堂第二区| 内射黑丝袜| 国产AV天美传媒一区二区三区 | 久9久9久9久9久9久9| 中文字幕熟女人妻丝袜丝| 日韩91网| 久久91| 久久亚州精品成人Av无| 波多野结衣先锋影音| 黄色一级视| 婷婷丁香六月天| 老女人日韩美91| 四虎884a| 亚洲色天堂九9| 91人妻人人澡人人爽人人精品| 免费试看60秒| 国产精品嫩草久久久久| av凤凰久久久| 白嫩嫩一区| 欧美亚洲AN| 9久9久| 性色AV网站| 萌白酱自拍视频| 五月丁香| 神马久久久久久久久久| 国产91丝袜 在线播放| 亚洲美女av无码| 欧美少妇性爱网站| 狠狠久久亚洲欧美专区| 超碰1024久久| 揉揉揉夜夜| 一级岛国大片| 超碰99热| 天美传媒在线一区| 婷婷激情四射| 丰满人妻一区二区三区四区| 少妇超碰在线| 97精品久久久久中文字幕| 久久久日本电影| 狼狼色丁香久久婷婷综合五月| 综合久久99| 久久大精品乱码视频人妻熟女| 极品色综合| 激情网色| 国产白嫩精品久久| 国产精品伦理| 精品国产丝袜一区二区三区乱码| 欧美亚洲综合色| 91美女視頻| 成人精品在线免费视频| 欧美亚洲中文字幕| 男人 天堂 日 亚洲| 啊啊啊草死我| 亚洲精品美女久久久久久久久| 啊啊啊97视频| 丝袜亚洲综合| 五月大香蕉| 久久机热| 国产一级不卡在线观看| 精彩视频日韩| 国产精品欧美在线观看| 综合欧美日本三级| 在线小视频| 男人天堂黄片| 蜜桃视频一区二区三区在线观看| 欧美性夜| 激情五月天丁香| 综合性视频99| 欧美老妇曰批的视频| 精品国产一区二区三区久久久蜜臀 | 久操com| 宗合情欲网| 97久久久| 久久久久久久久久久97| 天天影视亚洲| 嗯啊不要在线观看嗯啊| 超碰久超碰久| 91啪啪视频| 极品美女嘿咻| 九九热精品| 国产欧美另类久久久精品课程| 国产做?爰片久久毛片?片美国| 制服中出中文人人精品| 日韩激情啪啪啪| 国产精品电影推荐| 亚洲精品影视老司机| 色天堂在线观看| 青椒国产97在线熟女| 99蜜桃臀久久久欧美精品网站| 人妻干天天| 熟妇高潮精品一区二区三区下载| 国产精品无码久久久久2025| 97欧美色资源| 亚洲黄色网址视频| 色综九九九一区| 五月婷婷五月天| 啊啊啊啊啊啊好多水| 超碰国产情侣自拍网| 成人av福利在线观看| 天天干人妻| 最近2019中文字幕国语免费版| 偷拍亚洲情色| 亚洲天堂区| 超碰午夜| 在线情色电影 91大| 亚欧性爱ab| 欧洲精品二区| 一区二区三区四区五区高清无码永久视频| 91免费看一区二区三区| 国产乱码精品久久久久久| 日本性爱网址| 亚州性色| 欧美操逼视频二区| 天天干天天狼在线视频| 久久无码精品| 欧美日韩精品国产91| 九九探花视频在线观看| 日本久久超碰| 熟女AV一区| 婷婷五月天影院| 欧美视频一| 精品妇操一区二区三区| 久久久草成人网站久久久草成人久久久草久久久 | 亚洲啪啪综合?v一区综合精品区| 亚洲老司机123专区| 色色综合网站| 97资源视频| 午夜操一视频一区| 精品国产一区二区三区久久久蜜臀 | 日韩无码专区| 丰满美女一级毛片在线播放| 综合网亚洲1| 宗合情欲网| 亚洲成人综合在线| 精品国产乱码| 超碰美国| 亚州九九九精品视频| 亚洲无套久久嗯嗯| 成年人性爱日韩| 激情五月天中文字幕色| 九七人妻在线| 亚洲欧美性生活| 久热久| 中文字幕精品一区二区精| 91人人| 欧美成人精品一区二区男人蜜臀| 嗯~啊~快点 死我视频| 九九人人操| 操逼操逼视频操逼| 精品人妻一区二区三区四区石在线| 9997se| 久草热制服丝袜在线观看 | 欧美乱伦专区| 欧美激情高清性猛交| 老司机午夜精品福利视频一区二区| 在线观看十八禁| 丁香五月色情| 亚洲最大的综合性av| 无码外流操逼视频| 久久免费少妇| 天天综合网在线91| 久久久成人免费av电影| 日韩精品9999| 欧美第38页| 欧美三级一级| 91N欧美| 五月婷婷激情网| 天天躁日日躁AAAXX| 日本一区二区不卡精品| 免费黄色片。| 国产精品久久久无码aV去| 97天天日| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 人妻激情视频| 97超碰伊人| 亚洲脚交| 天天性射网| 久久久久幕乱码| nuu12国产麻豆精品| 黄色一区三区| 国产成人精品一区| 99热8| 嫩草 我啊~嗯~在线| 肉丝无码中文高清| 超碰综合97在线| 中出人妻中文字幕91在线| 91日日夜夜| 欧美线天码中字| 久草色在线观看| 亚洲欧美洲综合| 久久久人妻| 国产高清午夜成人在线观看| 伊人操你| 欧美精品xxxwww| 国产亚洲色婷婷久久99精品91葵花宝典| 亚洲AV无线| 国产激情片在线观看| 欧美成人精品A片免费一区99| 99无码| 女人妻一区| 日韩精品第3页| 99精品丰满人妻无码| 亚洲中文字幕av| 亚洲综合另类| 一级特黄aaa大片在线观看成人一级片在线观看| 韩三级a视频在线观看| 丰满高潮18xxxx| 六月婷婷综合| 91网亚洲| 久久网亚洲| 91亚洲欧洲| 日韩中文字幕精品一区在线| 国语国产操逼伊人AV网| 国产激情视频在线观看| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 96超碰网| 老司机午夜精品视频| 欧美顶级黄色大片免费| 夜夜操狠狠操| 九九九久久久久| 丰满熟妇大乳做爰| 国产在线综合网| 一区操逼日比视频| 裸体美女国产免费久久久网站| 欧美日韩电影一区二区| 我爱操| 欧美亚洲国产91在线| 91精品国产高清久久久久久,亚洲成人| 日韩三级一区 | 国色综合天| 国产成人午夜视频网址| 中文字幕 人妻不满 在线视频| 99热精品国产| 亚洲色婷婷综合久久久久中文| av一区二区三区不卡| 怡红院一区二区熟女人妻| 久久久工口| 色综合 加勒比| 亚洲成人黄色在线观看| 婷婷综合久久| 欧美少妇高潮久久91| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 无码人妻一区二区三区四区老鸭窝| 精品久久久久久中文字幕三区| 五月丁香成人网| 激情四射五月天| 中文字幕一区二区视频在线观看| 岛国黄色大片网站| 91九九九逼| 成人怡红院| 日韩黄色成人性爱| 1204av韩国| 国内偷拍精品一区二区| 六月丁香网| 男人天堂久久精品不卡| 久久69精品久久久久久久| 在现视频女上位好爽| 欧美色九九| 无码免费精品高清| 国产精品久久久久久久久久久久久久久久久久 | 少妇人妻太紧太深av| 亚洲中文人妻色| 中文字幕一区二区三区50路| 99爱爱| 999久久芭蕾| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 国产精品一区二区久久精品| 超碰超碰欧美| 久久区| 五月天婷婷基地| 午夜啊啊| 天天日夜夜爽| 清纯唯美综合| 婷婷大香蕉| 夜夜夜爽www精品视频| www.av在线观看| 舔舔啊| 亚洲中文字母在线播放| 国产欧洲精品亚洲午夜拍精品| 久久精品日韩| 日本天天干天天搞一区| 琪琪精品免费一区二区三区| 亚洲综合图文| 秋霞成人一级在线观看| 日韩 成人 有码| 亚洲1区2区三区高清中文字幕| 亚洲熟女乱综合一区二区三区| 精品毛片av一区二区| 加勒比海成人视频网| 91在线视频观看国产| 日韩淫色网| 超碰九色| 精品在线蜜臀| 欧洲免费一区二| 亚洲精品乱码线路中文字幕| laoshunv91| 狠狠色噜噜狠狠狠狠狠色综合久久 | 国产精品69久久久久久久| 激情综合网五月婷婷| 校园春色亚洲色图| 精品人人| wwwxxx日本爽| 精彩久久中文| 五月婷婷无码| 人妻三级在线中文字幕| 少妇500双飞99| 综合免费无码中文| 亚洲在线综合| 91九久| 男人天堂黄片| 97中文字幕一区| 少妇蜜汁| 99热99在线播放激情| 中文有码9| 激情露脸爱| 国产亚州高清国产拍精| 色五月av| 无码久| 超碰av在线| 国产午夜精品理论片一二三区区| 精品九九九九九九九九九| 日本九九九九| 91一区二区三区蜜桃| 久久久九精品| 白嫩嫩一区| 日韩欧美一级特黄大片| 一区二区视频在看| 色婷婷婷五月天激情四射| 青青草丝袜在线视频| 国产色产精品在线观看| 熟妇国产免费一区| 999狠狠综合| 亚洲毛片一级带毛片基地| 色欧洲| 人妻大香蕉| 精爱久久| 九九色逼| 在线a v| 少妇被c 黄 免费观看| 欧美线天码中字| 久久只有精品一区二区三区| 日本黄 R色 成 人网站| 国产亚洲性生活视频播放| 人妻91少妇| 啊啊啊啊啊好舒服视频| 丝袜狠狠草尤物人妻av91| 五月丁香社区婷婷日韩欧美精品影院| 亚洲性网| 一区二区三区一亚洲中文字幕、综合区灬 | 国产精品久久久久久久久久二区三区| 国产黄色影片在线观看| 欧洲精品二区| 欧亚日韩综合精品国产| 久久精品免费| 久热伊人| 国产亚洲日本精品在线| 日韩欧美午夜一区二区| 97亚洲在线| 亚洲在线观看| 加勒比伊人综合| 国产久久日韩网站导航| 青青操青娱乐| 人人扣人人操| 中国乱伦一区二区| 亚洲熟女精品| 久久国产AⅤ| 性色A∨91| 东京太热男人的天堂久久久| 亚洲se电影| 热热色色综合| 欧美 日韩 婷婷 五月| 99啪啪视频| 色香阁在线| 国产精品交换一区二区| 99久久综合| 国产激情视频在线观看| 再深点灬舒服灬太大了好硬好爽| 国产网站在线播放| 秋霞久久亚洲精品成人| 在线无码视频| 国产精品成人无码a v毛片| 69XX一中文字幕人妻91| 黄片视频观看| 久久超碰国产一区二区三区| 亚洲男人电影天堂| 国产精品日日摸夜夜添骚逼| 欧美加勒比| 亚洲丝袜综合| 亚洲综合91| 日本爽爽爽爽爽爽免费视频| 精品欧美老熟女一二区| 日本不卡一区二区| 少妇综合| 亚洲国产精品成人综合| 日欧操屄| 九月丁香婷婷色| 国产日韩欧美亚洲精品95| 免费伦费视频在线观看| 成人美女av| 亚洲一区中文字幕一区| 99热超碰在线| 欧美性猛交美女自慰91| 精品免费1| 中文字幕久久精视频久久大全|