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

ARTICLE DETAIL

資訊詳情

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

異步HTTP客戶端對(duì)決:HttpAsyncClient能否替代WebClient

異步HTTP客戶端對(duì)決:HttpAsyncClient能否替代WebClient 有個(gè)群里聊到一個(gè)挺有意思的問題既然 Apache HttpAsyncClient 也是異步 HTTP 客戶端能不能直接替換掉 Spring WebFlux 的 WebClient畢竟很多團(tuán)隊(duì)嘴上說著響應(yīng)式實(shí)際寫代碼還是 Future、回調(diào)那一套WebClient 的 Mono/Flux 鏈?zhǔn)綄懛ù_實(shí)勸退了不少人。這個(gè)問題背后其實(shí)是在問兩件事兩個(gè)客戶端到底差了些什么以及我的項(xiàng)目到底屬于哪種異步場(chǎng)景。今天就把這兩個(gè)東西掰開揉碎對(duì)比一遍順便結(jié)合我實(shí)際遷移和排障的經(jīng)驗(yàn)聊聊什么時(shí)候該用誰什么時(shí)候千萬別硬換。先說一個(gè)結(jié)論HttpAsyncClient 和 WebClient 都是異步、非阻塞的 HTTP 客戶端但它們的異步模型完全不是一個(gè)流派。HttpAsyncClient 走的是“回調(diào) Future”的傳統(tǒng)異步路線WebClient 走的是“響應(yīng)式流 背壓”的 Reactive Streams 路線。單看“能不能替代”答案是有條件地能但你要是想在一個(gè) WebFlux 全鏈路的項(xiàng)目里無腦替換那大概率會(huì)把簡(jiǎn)單事情搞復(fù)雜甚至讓整個(gè)調(diào)用鏈的響應(yīng)式語義徹底崩掉。下面我會(huì)分五塊來聊每一塊都會(huì)給出能直接落地的代碼和配置也會(huì)把踩過的坑交代清楚。1. 先搞清楚兩個(gè)客戶端的本質(zhì)差異1.1 HttpAsyncClient 是什么、怎么運(yùn)作HttpAsyncClient 是 Apache HttpComponents 旗下的異步 HTTP 客戶端算得上后端江湖里的老牌異步組件了。它底層基于 NIO發(fā)起請(qǐng)求以后不會(huì)卡住當(dāng)前線程而是通過回調(diào)或者 Future 在請(qǐng)求完成后再拿到結(jié)果。最典型的用法是這樣CloseableHttpAsyncClient client HttpAsyncClients.custom() .setMaxConnPerRoute(20) .setMaxConnTotal(200) .build(); client.start(); HttpGet request new HttpGet(https://example.com/api/data); FutureHttpResponse future client.execute(request, null); // 注意future.get() 是阻塞的在這里調(diào)了就是同步 HttpResponse response future.get();不想阻塞的話可以傳入一個(gè) FutureCallback請(qǐng)求完成時(shí)框架會(huì)在自己的 I/O 線程里回調(diào)你client.execute(request, new FutureCallbackHttpResponse() { Override public void completed(HttpResponse result) { // 這里可以處理響應(yīng) } Override public void failed(Exception ex) { // 異常處理 } Override public void cancelled() { // 取消處理 } });這種模式眼熟吧很多老框架用了一輩子這種套路。它的優(yōu)點(diǎn)是很直觀一下就能看懂請(qǐng)求發(fā)出去、結(jié)果回來之后干什么。缺點(diǎn)也同樣直觀一旦業(yè)務(wù)復(fù)雜起來回調(diào)嵌套、多個(gè)請(qǐng)求并發(fā)歸并、重試、超時(shí)這些事都得你自己拿代碼去湊寫起來非常容易失控。1.2 WebClient 是什么、怎么運(yùn)作WebClient 是 Spring WebFlux 給出來的響應(yīng)式 HTTP 客戶端。它跑在 Reactor 之上返回的全部是 Mono 或 Flux也就是“發(fā)布者”。你調(diào)一次 WebClient 并不會(huì)立即發(fā)起請(qǐng)求只是定義了一個(gè)數(shù)據(jù)流等下游真正訂閱的時(shí)候才會(huì)觸發(fā)網(wǎng)絡(luò)調(diào)用。典型寫法長(zhǎng)這樣WebClient webClient WebClient.builder() .baseUrl(https://example.com) .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .build(); MonoString result webClient.get() .uri(/api/data) .retrieve() .bodyToMono(String.class);光看這段你可能會(huì)覺得和普通聲明式 API 差不多。但 WebClient 真正的殺傷力在于它能把多個(gè)請(qǐng)求組合成一個(gè)響應(yīng)式鏈路然后統(tǒng)一編排超時(shí)、重試、錯(cuò)誤恢復(fù)和并發(fā)執(zhí)行Mono.zip( webClient.get().uri(/api/a).retrieve().bodyToMono(A.class), webClient.get().uri(/api/b).retrieve().bodyToMono(B.class) ) .map(tuple - combine(tuple.getT1(), tuple.getT2())) .retryWhen(Retry.backoff(3, Duration.ofSeconds(1))) .timeout(Duration.ofSeconds(5)) .onErrorResume(e - Mono.just(fallbackValue));這一串操作在 WebClient 里就是幾個(gè) operator放在 HttpAsyncClient 里你要寫多少回調(diào)、多少共享狀態(tài)、多少個(gè) CountDownLatch 才能把并發(fā)歸并做完想都不敢想。1.3 真正的分水嶺回調(diào)模型與響應(yīng)式模型所以你會(huì)發(fā)現(xiàn)這兩個(gè)客戶端表面上看都是“發(fā)起異步請(qǐng)求、不阻塞線程”但本質(zhì)區(qū)別在于程序設(shè)計(jì)范式。HttpAsyncClient 的異步終點(diǎn)是 Future 和回調(diào)它解決的是“別讓線程傻等 I/O”的問題。你拿到 Future 以后仍需自己考慮如何把多個(gè)異步結(jié)果組合起來或者如何優(yōu)雅處理失敗。雖然也能搭配 CompletableFuture 做編排但這是從外部把它硬包成響應(yīng)式或組合式的樣子核心還是命令式的。WebClient 的異步終點(diǎn)是 Publisher它強(qiáng)調(diào)的是“數(shù)據(jù)流動(dòng)鏈路”。發(fā)請(qǐng)求只是整個(gè)響應(yīng)式流中的一個(gè)節(jié)點(diǎn)上游、下游天然帶有背壓機(jī)制你可以用 flatMap、zip、retryWhen、timeout 這些操作符像搭積木一樣搭出一個(gè)聲明式的執(zhí)行流程。麻煩也是顯而易見的學(xué)習(xí) Reactor 的思維模型比學(xué)會(huì) HttpClient API 要難得多。不少人把“異步”當(dāng)成一個(gè)統(tǒng)一概念認(rèn)為換了客戶端就換了異步姿勢(shì)。實(shí)際上從 HttpAsyncClient 切到 WebClient或者反過來切你改變的不僅是 API而是整條調(diào)用鏈的編程模型。這個(gè)認(rèn)知如果不建立起來后面任何一個(gè)遷移方案都會(huì)踩坑。2. 逐項(xiàng)對(duì)比從 API 風(fēng)格到生態(tài)集成2.1 編程模型與 API 風(fēng)格的差距先看最簡(jiǎn)單的“單個(gè)請(qǐng)求同步等結(jié)果”。HttpAsyncClient 里最典型的寫法就是future.get()這一行代碼下去當(dāng)前線程就阻塞了所以嚴(yán)格說這只是“支持異步但允許你同步等待”。而 WebClient 如果非要同步拿結(jié)果得先block()再返回比如webClient.get()...block()這種寫法在 WebFlux 服務(wù)端里屬于高危動(dòng)作但放在普通 Spring MVC 里倒是能用。再看復(fù)雜編排。我用 HttpAsyncClient 做過一次多接口聚合兩個(gè)請(qǐng)求并發(fā)出去然后等兩個(gè)都回來以后做合并當(dāng)時(shí)的偽代碼大概是這樣FutureHttpResponse futureA client.execute(requestA, null); FutureHttpResponse futureB client.execute(requestB, null); HttpResponse responseA futureA.get(); HttpResponse responseB futureB.get(); // 合并處理這看起來沒什么但兩個(gè)get()是串行阻塞的。要是想真正并發(fā)等待還得用CompletableFuture.allOf(...)把兩個(gè) Future 包一層。一旦加上超時(shí)、重試、熔斷代碼復(fù)雜度會(huì)指數(shù)級(jí)上升。而 WebClient 用Mono.zip和retryWhen幾行就搞定代碼可讀性完全不在一個(gè)量級(jí)。不過這里要公平說一句并不是所有項(xiàng)目都需要復(fù)雜編排。如果你的場(chǎng)景就是“發(fā)一個(gè)請(qǐng)求拿一個(gè)響應(yīng)完事”HttpAsyncClient 的 API 比 WebClient 的 Flux/Mono 鏈要直白得多。尤其團(tuán)隊(duì)里都是寫慣命令式代碼的人讓他們寫 Reactor 反而會(huì)弄出一堆反模式比如在subscribe里拋異常、把block()塞到循環(huán)里等等。2.2 與 Spring 生態(tài)的集成深度這是 WebClient 的主場(chǎng)。在 Spring Boot 項(xiàng)目里WebClient 可以通過Configuration和Bean方便地配置連接池、超時(shí)、過濾器、攔截器也能直接拿來和 WebTestClient 配合做接口測(cè)試。更重要的是當(dāng)你的服務(wù)端是 WebFlux 的 Controller 時(shí)Controller 可以直接 return 一個(gè) WebClient 返回的 Mono整個(gè)請(qǐng)求鏈路從入口到出口都不阻塞也不需要手動(dòng)適配類型。HttpAsyncClient 在這塊就明顯吃虧了。它和 Spring 生態(tài)沒有原生綁定你要自己管理客戶端的創(chuàng)建、啟動(dòng)、關(guān)閉自己處理依賴注入。在 Spring MVC 項(xiàng)目里把它當(dāng)普通 Bean 用倒也行但服務(wù)的關(guān)閉鉤子、連接池的銷毀、異常響應(yīng)體的解析都要自己寫。比如最基礎(chǔ)的一個(gè)問題HttpAsyncClient 拿到響應(yīng)后響應(yīng)體是HttpEntity需要你自己轉(zhuǎn)成字符串、解析 JSONWebClient 加上 Jackson 之后bodyToMono(SomeDto.class)直接幫你反序列化。這個(gè)差距在寫業(yè)務(wù)代碼的時(shí)候會(huì)非常明顯。如果你處于一個(gè)全鏈路 WebFlux 項(xiàng)目里上游服務(wù)返回的就是 Flux/Mono服務(wù)端也要求你返回響應(yīng)式類型那 WebClient 就是為這個(gè)鏈路設(shè)計(jì)的零件。硬塞一個(gè) HttpAsyncClient 進(jìn)去你得像做“轉(zhuǎn)接插頭”一樣把 Future 轉(zhuǎn)成 Mono把回調(diào)包裝成響應(yīng)式流。能做嗎能做但每次看到那堆橋接代碼你都會(huì)懷疑自己是不是在自討苦吃。2.3 性能與連接管理的對(duì)比性能方面兩者在絕大多數(shù)普通業(yè)務(wù)場(chǎng)景下差異并不大因?yàn)樗麄兊讓佣际欠亲枞?I/O。真正拉開體驗(yàn)差距的是連接管理、超時(shí)控制、協(xié)議支持和背壓。HttpAsyncClient 通過PoolingAsyncClientConnectionManager管理連接池。你可以精確控制最大連接數(shù)、單路由最大連接數(shù)、連接 TTL這套連接池從 Apache HttpClient 時(shí)代就一路打磨到今天成熟度相當(dāng)高。PoolingAsyncClientConnectionManager connectionManager PoolingAsyncClientConnectionManagerBuilder.create() .setMaxConnTotal(200) .setMaxConnPerRoute(20) .build(); CloseableHttpAsyncClient client HttpAsyncClients.custom() .setConnectionManager(connectionManager) .build();WebClient 默認(rèn)走 Reactor Netty也有自己的連接池配置方式但 API 完全是另一套。它的底層 HttpClient 需要單獨(dú)配置然后再包成 ReactorClientHttpConnector最后給到 WebClientConnectionProvider connectionProvider ConnectionProvider.builder(myPool) .maxConnections(200) .pendingAcquireMaxCount(100) .build(); HttpClient httpClient HttpClient.create(connectionProvider) .responseTimeout(Duration.ofSeconds(5)); WebClient webClient WebClient.builder() .clientConnector(new ReactorClientHttpConnector(httpClient)) .build();HTTP/2 支持上WebClient 的 Reactor Netty 鏈路算是自然的配置一下就啟用HttpAsyncClient 要單獨(dú)引入額外的 HTTP/2 模塊配置更繁瑣一些而且不少老版本默認(rèn)還是以 HTTP/1.1 為主。如果你的線上服務(wù)大量使用 HTTP/2 多路復(fù)用WebClient 在這塊會(huì)省心一些。背壓這塊就更不用多說了。WebClient 作為響應(yīng)式客戶端天然支持按需消費(fèi)響應(yīng)流你訂閱多少就消費(fèi)多少不會(huì)把整個(gè)響應(yīng)體一次性塞進(jìn)內(nèi)存。HttpAsyncClient 的 Future 模型沒有背壓概念響應(yīng)體要么整體拿到要么自己控制處理速度。遇到超大響應(yīng)體下載的場(chǎng)景WebClient 的按需消費(fèi)優(yōu)勢(shì)會(huì)立刻體現(xiàn)出來。2.4 可測(cè)試性與錯(cuò)誤處理日常開發(fā)里可測(cè)試性很重要。Spring 項(xiàng)目測(cè)試 WebClient 有現(xiàn)成的 WebTestClient可以直接綁定到本地服務(wù)或者 Mock 的響應(yīng)體上跟 MockMvc 風(fēng)格一脈相承。WebClient 鏈?zhǔn)?API 也能很容易地注入到 Service 里做單元測(cè)試。HttpAsyncClient 測(cè)試也不是不行像 WireMock 這類工具照樣可以用。但麻煩在于異步回調(diào)函數(shù)的線程模型測(cè)試?yán)锝?jīng)常要配合 CountDownLatch 或者輪詢?nèi)サ然卣{(diào)結(jié)果寫起來比同步測(cè)試費(fèi)勁。而且一旦代碼里大量使用 FutureCallback你還要額外考慮回調(diào)里的異常如何拋回測(cè)試線程搞不好就出現(xiàn)測(cè)試“假綠”其實(shí)回調(diào)壓根沒執(zhí)行完。錯(cuò)誤處理方面WebClient 在鏈路里統(tǒng)一用onErrorResume、onErrorReturn、onErrorMap做恢復(fù)或者轉(zhuǎn)換。HttpAsyncClient 則是你在回調(diào)里自己判斷狀態(tài)碼、自己捕捉異常。代碼組織得差一些的話錯(cuò)誤處理邏輯會(huì)散落在不同的匿名內(nèi)部類里后期維護(hù)成本比較高。我把兩者核心差異匯成一張對(duì)照表方便各取所需維度HttpAsyncClientWebClient編程模型Callback FutureReactive Streams / Mono / Flux復(fù)雜編排能力弱需要手寫組合強(qiáng)操作符豐富Spring 生態(tài)集成弱需要手動(dòng)管理強(qiáng)與 WebFlux 無縫銜接內(nèi)置連接池PoolingAsyncClientConnectionManagerReactor Netty ConnectionProviderHTTP/2 支持需額外配置集成相對(duì)方便響應(yīng)式背壓不支持原生支持測(cè)試生態(tài)通用 Mock 工具WebTestClient 等學(xué)習(xí)曲線簡(jiǎn)單直接相對(duì)陡峭3. 到底能不能替代關(guān)鍵看場(chǎng)景3.1 這些場(chǎng)景下可以替代如果項(xiàng)目本身不是 WebFlux 全鏈路而是普通的 Spring MVC 工程也不追求用 Reactor 做響應(yīng)式編程只是想找一個(gè)“異步發(fā) HTTP 請(qǐng)求”的工具那 HttpAsyncClient 完全可以用。比如定時(shí)任務(wù)里批量拉取數(shù)據(jù)、消息監(jiān)聽器里調(diào)外部服務(wù)、Netty 或者自研的異步網(wǎng)關(guān)里做 HTTP 轉(zhuǎn)發(fā)這些場(chǎng)景都不需要響應(yīng)式鏈?zhǔn)骄幣臜ttpAsyncClient 反而更簡(jiǎn)潔。再比如團(tuán)隊(duì)里沒有人熟悉 Reactor硬上 WebClient 很容易寫出各種反模式。這種情況下HttpAsyncClient 用 Future 回調(diào)的方式至少能讓所有人看得懂、會(huì)維護(hù)。只要在代碼里約定好“拿到 Future 之后不能立刻 get 阻塞”異步的收益一樣能拿到。沒有背壓不代表必然內(nèi)存爆炸對(duì)于普通接口調(diào)用響應(yīng)體本來就不大背壓的意義沒有你想象中那么關(guān)鍵。3.2 這些場(chǎng)景下千萬別硬換最典型的反面場(chǎng)景就是 WebFlux 服務(wù)端。你的 Controller 已經(jīng)返回 Mono/Flux業(yè)務(wù) Service 用的也是 Reactor整個(gè)調(diào)用鏈都是非阻塞的。這時(shí)候你把 WebClient 換成 HttpAsyncClient要處理的第一件事就是把 Future 橋接成 Mono。最蠢的寫法是直接future.get()再包裝成 Mono那等同于把異步調(diào)用重新變成同步阻塞整個(gè) WebFlux 的非阻塞優(yōu)勢(shì)毀于一旦。正確的橋接方式是用Mono.fromFuture()把 Future 轉(zhuǎn)換成 Mono。但注意HttpAsyncClient 的 execute 返回的是FutureHttpResponse并不是 Java 里的 CompletableFuture。你還需要自己把它包裝成 CompletableFuture才能在Mono.fromFuture()里用。這個(gè)包裝代碼要寫多久不算長(zhǎng)但它把你從響應(yīng)式流拉回命令式接著還要再手動(dòng)處理響應(yīng)體的流式讀取。相當(dāng)于每個(gè)請(qǐng)求你都要在兩種模型之間來回橫跳代碼會(huì)變得非常割裂。還有一種場(chǎng)景是大量調(diào)用需要按流量自動(dòng)降級(jí)、熔斷、聚合指標(biāo)。WebClient 和 Reactor 的鏈路天然能配合很多響應(yīng)式組件做這些事HttpAsyncClient 沒有標(biāo)準(zhǔn)機(jī)制得自己寫攔截器、埋點(diǎn)、計(jì)數(shù)工作量完全是兩碼事。3.3 混用方案橋接兩個(gè)世界的套路如果你的項(xiàng)目確實(shí)已經(jīng)用了 WebFlux 服務(wù)端又因?yàn)槟承v史原因必須調(diào)用 HttpAsyncClient 維護(hù)的老接口不是不能混用但建議嚴(yán)格控制橋接層。我的做法是單獨(dú)封裝一個(gè)“異步適配器”把 HttpAsyncClient 的響應(yīng)封裝成 Mono不把 HttpClient 本身泄露到業(yè)務(wù)代碼里。適配器的核心思路很簡(jiǎn)單用CompletableFuture承接異步結(jié)果再交給Mono.fromFuture()轉(zhuǎn)成響應(yīng)式發(fā)布者。大致骨架如下CompletableFutureString future new CompletableFuture(); client.execute(request, new FutureCallbackHttpResponse() { Override public void completed(HttpResponse result) { future.complete(EntityUtils.toString(result.getEntity())); } Override public void failed(Exception ex) { future.completeExceptionally(ex); } Override public void cancelled() { future.cancel(true); } }); MonoString mono Mono.fromFuture(future);這樣 WebFlux 的業(yè)務(wù)層不用關(guān)心回調(diào)細(xì)節(jié)所有調(diào)用看起來和其他異步響應(yīng)式方法一致。但這只是應(yīng)急方案橋接層越多響應(yīng)式編程的優(yōu)勢(shì)損耗就越大。如果從零開始的新項(xiàng)目我更推薦從一開始就用 WebClient。4. 實(shí)操踩坑與排查實(shí)錄4.1 HttpAsyncClient 使用中我踩過的坑第一個(gè)坑就是“回調(diào)里做重活”。FutureCallback 是跑在 HttpAsyncClient 內(nèi)部 I/O 線程上的你在 completed 里寫日志、寫數(shù)據(jù)庫(kù)、做耗時(shí)計(jì)算會(huì)直接拖垮客戶端的響應(yīng)處理能力。遇到一次內(nèi)部接口偶發(fā)超時(shí)排查半天結(jié)果發(fā)現(xiàn)是我自己在回調(diào)里同步調(diào)用了一個(gè)外部服務(wù)導(dǎo)致 I/O 線程全被占滿。正確做法是回調(diào)里只做輕量操作重邏輯交給自己的業(yè)務(wù)線程池。第二個(gè)坑是不手動(dòng)關(guān)閉客戶端。CloseableHttpAsyncClient實(shí)現(xiàn)了 Closeable使用完要關(guān)閉。很多老代碼在每次請(qǐng)求時(shí) new 一個(gè)客戶端用完也不關(guān)連接池直接泄漏。后來我統(tǒng)一把客戶端做成單例 Bean在 Spring 容器的銷毀方法里執(zhí)行 close連接問題才徹底消失。第三個(gè)坑是超時(shí)配置。HttpAsyncClient 的連接超時(shí)、Socket 超時(shí)都有獨(dú)立參數(shù)但很多人只配了連接超時(shí)沒配請(qǐng)求超時(shí)結(jié)果某個(gè)下游服務(wù) hang 住整個(gè)線程池掛滿。記住異步客戶端尤其要配置絕對(duì)超時(shí)否則懸著的請(qǐng)求會(huì)慢慢吃掉所有連接。4.2 WebClient 使用中我踩過的坑WebClient 的坑也不少。最經(jīng)典的是“看起來沒配超時(shí)實(shí)際請(qǐng)求永遠(yuǎn)不超時(shí)”。WebClient 本身沒有全局超時(shí)概念必須在底層 HttpClient 上設(shè)置 responseTimeout否則遠(yuǎn)端一直不響應(yīng)訂閱方可能無限等下去。我見過線上告警查到這條線一個(gè)個(gè)改配置才恢復(fù)。第二個(gè)坑是使用block()的時(shí)機(jī)。在 WebFlux 服務(wù)端或 Reactor 鏈路里調(diào)用 block會(huì)直接拋異?;蚩ㄋ?。有些同事從 Spring MVC 轉(zhuǎn)過來不習(xí)慣習(xí)慣性地想拿同步結(jié)果結(jié)果代碼在 Test 環(huán)境沒問題、生產(chǎn)一壓測(cè)就出詭異現(xiàn)象。后來我們?cè)?Code Review 里直接規(guī)定WebFlux 鏈路代碼禁止出現(xiàn) block除非在測(cè)試線程中使用。第三個(gè)坑是連接池耗盡的表現(xiàn)。WebClient 底層連接池如果不夠并發(fā)上來后請(qǐng)求會(huì)排隊(duì)等待看起來像超時(shí)但實(shí)際上是 pendingAcquire 配置太低。排查連接池參數(shù)和實(shí)際并發(fā)量的關(guān)系比調(diào)代碼重要得多。我把這些常見問題整理成一個(gè)小速查表方便你直接對(duì)照自查現(xiàn)象可能原因排查思路請(qǐng)求一直不返回連接池排隊(duì)堆積 / 超時(shí)未配置檢查連接池最大連接數(shù)和 responseTimeoutHttpAsyncClient 吞吐量低回調(diào)里做了耗時(shí)操作把重邏輯移到業(yè)務(wù)線程池回調(diào)保持輕量WebClient 全鏈路偶發(fā)卡死某個(gè)請(qǐng)求沒有響應(yīng)式超時(shí)給底層 HttpClient 配置 responseTimeout請(qǐng)求出現(xiàn) Connection pool shut downHttpAsyncClient 被提前 close客戶端做成單例應(yīng)用停止時(shí)再關(guān)閉WebFiux Controller 里 block 拋異常在非阻塞通路調(diào)用阻塞方法刪掉 block改用 Mono 返回值或 subscribe響應(yīng)報(bào)文很大但內(nèi)存占用高讀取整個(gè)響應(yīng)體到內(nèi)存用 Flux 流式處理或限制 buffer 大小4.3 從 WebClient 切到 HttpAsyncClient 的典型報(bào)錯(cuò)如果你真決定從 WebClient 遷移到 HttpAsyncClient大部分代碼會(huì)死在類型不兼容上。WebClient 方法返回 MonoController 可以直接返回這個(gè) MonoOrder 由 WebFlux 自動(dòng)訂閱。換成 HttpAsyncClient 后你要么把 Controller 改成普通對(duì)象等于把響應(yīng)式端點(diǎn)改成阻塞端點(diǎn)要么自己做橋接。不少團(tuán)隊(duì)遷移到一半發(fā)現(xiàn) Controller 和 Service 里全是Mono.fromFuture和future.get()的混合體一壓測(cè)性能比原來躺著寫同步代碼還差。另一個(gè)常見報(bào)錯(cuò)是IllegalStateException: block()/blockFirst()/blockLast() are blocking。這個(gè)常見于原先 WebClient 代碼配合.block()同步取結(jié)果切到 HttpAsyncClient 后又用 Future 的 get最終在 WebFlux 請(qǐng)求線程里卡死。本質(zhì)原因不是客戶端選型而是沒有搞清當(dāng)前線程是什么線程模型。所以遷移之前務(wù)必先把調(diào)用鏈拆開明確每一層是阻塞線程還是非阻塞線程。最怕的是 WebFlux 鏈路里混進(jìn)future.get()這種代碼既不響應(yīng)式也不異步純粹是拿異步 API 做同步操作性能和可維護(hù)性全丟。5. 個(gè)人結(jié)論與實(shí)踐建議回到標(biāo)題那個(gè)直白的問題HttpAsyncClient 能不能替代 WebClient我的答案是如果只在“發(fā)異步 HTTP 請(qǐng)求”這個(gè)最小職能上能但如果放到 WebFlux 生態(tài)、響應(yīng)式鏈路、復(fù)雜編排和背壓場(chǎng)景里替代的代價(jià)遠(yuǎn)高于收益。我更愿意把它看成兩個(gè)不同時(shí)代的產(chǎn)物而不是同一服務(wù)的一對(duì)競(jìng)品。我的實(shí)際建議是新項(xiàng)目如果已經(jīng)選擇 Spring Boot 且服務(wù)端可能要上 WebFlux那就直接用 WebClient別繞路。團(tuán)隊(duì)不會(huì) Reactor 不是換客戶端的理由找兩三天時(shí)間集中培訓(xùn)一下比后期在兩種異步模型之間反復(fù)橫跳要?jiǎng)澦愕枚唷@享?xiàng)目如果只是想把同步 HTTP 調(diào)用換成異步不想引入響應(yīng)式編程那 HttpAsyncClient 是非??煽康倪x擇。它成熟、穩(wěn)定、連接池功能扎實(shí)在非響應(yīng)式工程里完全可以支撐起高質(zhì)量異步調(diào)用。最后再分享一個(gè)我實(shí)踐過的折中方案在少數(shù)必須混用的項(xiàng)目里先封裝一個(gè)統(tǒng)一的 HttpClient 接口底層分別提供 HttpAsyncClient 實(shí)現(xiàn)和 WebClient 實(shí)現(xiàn)業(yè)務(wù)代碼只依賴接口。這樣你可以在非響應(yīng)式模塊里用 HttpAsyncClient在 WebFlux 模塊里用 WebClient切換時(shí)不用到處改業(yè)務(wù)代碼。接口的設(shè)計(jì)也不用復(fù)雜暴露請(qǐng)求參數(shù)、返回 CompletableFuture 或者 Mono 的適配方法就夠了。等哪一天團(tuán)隊(duì)真正統(tǒng)一到響應(yīng)式模型你可以把另一套實(shí)現(xiàn)收起來業(yè)務(wù)層幾乎無感。這個(gè)方案雖然不是最優(yōu)雅但在真實(shí)的存量項(xiàng)目里遠(yuǎn)比“一刀切換掉”靠譜。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
美女视频尤物网在线看| 中文字幕亚韩| 人妻 制服 日韩 中文 在线| 3p国产色噜噜一区| 国产精品麻豆成人av| 920日本午夜免费| AAAA欧美日韩| 9999伦理视频| 久久一二区四| 色一色综合网| 日韩极品无码B| 99国产精品自在自在| 1024久久高清视频| 一区二区国产视频在线观看| 丰满岳乱妇一区二区三区| 精品人妻伦一区二区三区久久| 五月丁香综合啪啪| 欧美日韩理论一区| 99精品免费| 中文字幕日韩人妻视频一区二区三区 | 少妇毛片久久| 探花一区二区三| 中国熟妇| 韩日自拍| 91国内外在线| 91色色综合| 日本高清久久| 天天天天天干夜夜夜夜夜操| 精品人妻中文字幕高清| 怡红院成人视频| 龙兴卡官方查询| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产无马av| 免费A片三p视频| 清纯唯美激情| 欧美探花网| 久久久久久久久久久人妻| 青青11操操操操操操操操| 男女激烈网站最新| 无码 黑人一区二区三区| 日韩色| 国产精品一区二区三区四区五区| 激情四射婷婷六月天| 99999这里都精品| 成人热久久精品| 美女9118禁| 国产女性无套 免费观看| 六月丁香啪啪| 乱色视频中文字幕| 中文字暮97| 大香网伊人久久综合| 日韩人妻中文视频| 日本操逼二区| 激情五月婷婷| 日本九九九九| 亚欧色图在线激情| 97青娱乐超碰久久| 二区熟妇韩日| 五月婷婷六月激情| 青草青青久久久久久国产| 志村玲子视频一区二区| 伊人久久国产免费观看视频| 97色论| 亚洲情色一区二区三区| 午夜精品久久久久久久| 一区二区播放| 94色色电影网| 久久亚州精品成人Av无| 肏逼福利网站| 亚洲美女AV无码| 亚洲h片在线免费观看| 国产精品99精品视频网站| 婷婷久久网| 久久久草成人网站久久久草成人久久久草久久久 | 五月天婷婷影院| 欧美久久婷婷| 天天操妹子| 日本成人免费一区二区三区| 色情综合| 天堂资源站| 熟妇女伦乱视频视频| 欧美亚洲色图另类国产| 久久久婷婷| 97操综合| 国产91会所女技师在线观看| 久久精精区一区二区一蜜桃一区二区| 久久综合久色欧美综合狠狠| 网友自拍第一页| 国产情色在线| 亚洲无线码欧洲精品区别| 天天草天天日| 日韩av乱伦| 久久一区,青青青青草视频在线播放| 欧美精品999| 操逼啊啊啊91| 囯产乱伦一区二区三女 | 日韩欧美大片免费高清啪啪| 啊啊啊不要好爽日韩无码一区| 欧美一区二区三区不卡高清视频| 色情五月婷婷| 蜜臀久久99精品久久久久久-DVD| 外国免费性情大片| 国产精品无码论坛| 久久伦理视频久久大香蕉视频| 美女91| 伊人久久综合精品欧美| 长久操视频| 性videos欧美熟妇hdx| 啪啪啪大香蕉| 亚洲情色 自拍| 尤物一级在线免费观看| 天天躁狠狠躁av| 手机午夜电影神马久久| 亚洲人久久久网| 国内精品久久人妻性色av| 亚洲情色1区| 欧美色性情| 综合久久欧美| 噜噜噜噜天天狠狠| 成人av动漫在线观看| 99久在线精品99re8| 波多野结衣一级视频| 久艹伊人精品综合在线| 日本精品一级二级三级| 伊人色综合超碰| 2025年A片视频精品| 色女综合| 91P0RNY大屁股人妻| 超碰社区97| 国产成年女人免费视频播放a| 色综合色| 超碰97亚洲| Julia在线播放亚洲久久| 黄页| 精品免费1| 熟女这里只有精品6| 男人的天堂2018.| 亚洲日韩人妻中文字幕一区| 欧美 日韩 国产传媒| 天天上日日上日韩精品| 校园春色亚洲色图| 国产大片精久久久久久| 无码WWW免费视频网站| 99精品综合久久久久五月天| 五月天综合网| 欧美日韩啪啪电影| 欧美色综合网| 蜜屁Av| 色情五月婷婷| 久久超碰国产一区二区三区| 久久精品高清无码一区| 玖玖视频在线资源一区二区三区| 欧美精品三区| 五月开心久久AV官网| 色色色色电影网| 少妇被c 黄 免费观看| 亚洲人妖网| 无码自拍SM| 狠狠91| 九九九九一级| 亚州色图第三区| 中文字幕91页| 试看日韩黄片| yw尤物av无码点击进入麻豆| 9美女超碰在线免费观看| 超碰在线91| 国产高清MV操逼视频| 国产精品久久久亚洲第一牛牛_在线观看| 99啪啪视频| 无码在线亚洲| 午夜超爽| 天堂а√在线最新版在线| 中文字幕免费在线观看| 麻豆区久久久久亚| 久久999久| www色婷婷| 欧美十八禁导航成人| 日韩熟女精一区二区三区不卡| 青青草手机在线免费观看| 国产AV高清AV无码| 无码乱人伦中文视频| 亚洲一区二区av| 国产青青美女玩逼视频| 亚洲男人天堂视频| 国产天美传媒精品| 好看的91视频| 国产白领连续中出在线观看| 日韩啪啪啪啪啪| 屁屁影院一区二区三区国产| 人人操人人操人人操人人操人人操人人人11.CM | 国产亚洲日本精品在线| AV污污污污| 思思热国产高清| 久久久女人| 亚洲国产精品久久久久婷婷老年| 日本不卡二三区| 精品一区二区三区最新| 综合影院亚洲| 97爱免费插| 欧美后进式| 婷婷综合激情| 猛交交| 亚洲欧洲网站免费观看| 青青草操逼逼视频| 美女诱惑爱爱| 99r九九| 啊啊啊用力在线观看| 色蜜AV| 亚洲一区二区麻豆影院| 夜夜福利| 国产人妻精品一区二区三区秋霞 | 色色色热| 亚洲色图超碰在线| 夜夜高潮夜夜爽高清视频一| 天天干天天日天天射黄色大片 | 久操精品| 影音先锋少妇| 激情视屏国产乱伦强奸| 99精品在线观看| 中文字幕日韩综合| 精品国产污一区二区三区| 日本三级日本三级三级人妇四虎| 亚91亚洲网| 免费久久9999| 久久精品无码不卡| 五月情色天| 一起草视频在线| 亚洲欧美日韩中文播放| 日本三级久| 国产自偷| 国产精品白领在线观看 | 国产精品亚洲无码| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 无码高清专| 99在线精品观看99| #NAME?| 丝袜美腿91| 色综合一本| 91偷拍欧美亚洲| 精品四五区| 美女的肌被草喷水视频| 精品中文一区二区| 亚洲av综合色| 夜夜爽33333| 天天日日日射| 亚洲天堂加勒比| 精品无码欧美三级| 人人操人人狠狠操| 欧亚久久偷拍视频| 欧美在线电影| 国产中文大片资源中文字幕| 巨爆乳肉感一区二区三区竹菊影视| 亚洲色图激情小说| 亚洲欲| 亚洲天堂综合AV| 96爱综合| 99久久久无码国产精品性啊聊| 免费一级a毛片久久久久久鸭绿欲| HEYZO高无码国产精品227| 大香蕉在线视频15| 日韩精品人妻中文字幕不卡乱码| 精品久久久高清无码| 九九热最新| 诱惑人妻欧美一区在线播放| 伊人超碰97| 亚洲高清无码在线桃色| 中文久久一区| 日韩欧美性爱电影在线观看| 凹凸视频特色日本特黄| 国产麻豆一区二三区| 亚洲人成网站7777| 91亚·色| 中文字幕乱妇免费视频| 操逼网免费无码视频| 午夜天堂网| 啊啊啊啊啊在线| 国产 日韩 另类 视频一区爱| 国产日韩精品一区二区三区| 精品在线蜜臀| 二区熟妇韩日| 成人无遮挡毛片免费看| 熟女AV一区| 久久黄片国产一区二区| 美腿丝袜高跟网免费视频免费视频| 亚洲少妇视频| 99re99视频在线免费观看| 黑人无码一区二区| 青青草九九九九九| 久久一二三四不卡 | 久干9操| 精品久9| 男女一级A片大黄,一进一出| 日日AAvv| Julia Annxxxxx| 91伊人久| 久草精品视频| 深夜激情无码| 日本大香蕉综合网| 天天流夜夜操| 无码外流操逼视频| 精久久久91| 九九在线视频| 中文字幕乱亚洲美女精品一区| 日韩免费性爱视频在线观看| 丝袜美腿丝袜| 亚洲人妻一区二区三区| 伊人一级免费黄片| 日韩人妻无码精品系列| 亚洲高清无码在线桃色| 男人的天堂Va| 婷婷情色综合网| 久久的免费性爱视频| 青青草视频爽一爽| 少妇无码av专区线| 91国产丝袜白虎| 婷婷久久五月| 国模私拍一区二区三区神乳| 国偷自 一区| www.色99| 午夜男女爽爽爽影院视频| 国产白丝在线| 99热思思| 被男人添B超爽视频| 超碰9 7女人 | 日韩欧美~中文字| 婷婷综合五月| 久久久久亚洲熟妇熟女| 黑人粗大V S日韩女优视频| 日本人妻A片成人免费看片| 久久久久99精品成人片蜜臀| 亚洲美女精品| 精品妇女一区二区三区| 欧美亚洲高清不卡| 国产精品视频一区二区三区八戒| 大香蕉伊人色偷偷在线| 久久精品 六十路 熟女 欧美| 久草男人天堂| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲男人在线观看天堂| 精品然女一区二区| 天天日天天插| 90后性网国产欧美| 岛国毛片手机在线观看| 天美传媒婬乱| 欧美久久人体| 天堂资源站| 六九九九| 久久综合激情| 中文字幕一区二区韩| 天堂成人网| 国产欧美后入| 亚洲色图欧美色图制服丝袜| 日韩精品一二三四| 成人丁香五月| 超97在线精品视频| 亚洲影院365| 亚洲天堂 视频你懂的| 91久久久久| 热久久91婷婷| 激情五月天丁香社区| 亚洲无码超碰免费| 性综合网| 校园春色五月天| 男人天堂无码| 青青操视频在线| 性爱AV天堂| 亚洲熟妇乱女区二区三区| 国产超碰| 黄网色一区二区三区四区精品| 亚洲有码 欧美精品| 国产99999| nuu12国产麻豆精品| 天天看人人操屄犊摸阴| 熟妇人妻精品一区二区| 婷婷五月天色色| 午夜120视频在线观看| 欧美亚洲自拍另类人妻| 日本中文熟女视频| 欧美综合区| 操逼啊啊啊91| 玖玖玖玖精品国产剧情| 国产一区二区精品久久99| 内射夫妻三片| 中文日本免费高清| 国产精品美女在线一区| 亚洲av影音先锋| 日韩丰满熟妇| 乱色视频中文字幕| 男人的天堂2019AV| 影音综合网| 伊人国产视频| 日本免费一区二区不卡| 色综合1991| 日天天九九天堂666| 欧成人在线| 亚洲毛片久久| 人人搞人人插人人操| 13小男生GAY自慰脱裤子| 亚洲男人天堂网| 亚洲成人在线高清| 国产91精品福利在线| www.人人cao| 韩国久久97| 欧色综合| 亚洲综合大片| 美女网站91| 91久久久亚洲| 性色av网站| 色色婷| 亚洲色图久久精品蜜| 一道本东京热加勒比一区二区三区| 成人网欧美风情| 天天超级碰碰碰| 久久久久国色αv免费观看| 2020中文字幕在线观看| 操操逼视频| 亚洲无码AV九九九| 九久9热| 久噜噜| www欧美91| 日本黄大片在线观看视频| 国产一进一出视频网站| 久操大香蕉手机视频在线看| 国产传媒1234区| 97国产精品久久久久 | 97超碰日韩| 国产v片在线免费观看| 欧美国产伊人久久久久| Av色五月| 韩国嫰模上门援交视频| 人人操人人色网| 日本一级二级三级网站| 图片区小说区| 自拍偷拍 高清无码| 欧美天天性| 成全动漫视频观看免费下载| 激情干在线| 日韩偷拍色图| 久久97视频| 黑人精品XXX一区一二区| 精品国产肉丝袜在线拍国语| AV在线资源| 在线欧美亚洲| 国产又粗又长又爽又色| 久日91在线| 欧美超碰97| 色五月激情网| 久操免费电影| 青青操狠狠撩| 日韩精品影视| 啪一啪免费视频| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 99热这里只有精品1| 男人天堂网站| 一本一道人妻久久一区二区三区 | 91neishe| 国产熟女无套内射| 六月丁香啪啪| 欧美日韩人妻精品一区二区三区| 日本天天操| 日逼五月天| 国产内射爽爽大片| 欧美专利1区2区3区4区5区免费| AV中文字幕三四五| 婷婷综合激情| 精品九区| 女人天堂AV五区在线| 免费在线视频97| 天天干一干| 99re28在线观看| 色婷视频| 九九九九九精品| 欧美午夜精品久久久久久3D| a啊啊啊啊啊啊啊啊一区二区| 私色综合网| 久湿久久| 欧美亚洲日本视频久久久| 亚洲国内精品成人不卡| 91人妻素女| 亚洲脚交| AA丁香综合激情| 啊啊啊好舒服视频| 91色图片| 中文字幕乱在线伦视频中文字幕乱码在线 | 一区e区三| 亚洲欧美日韩精品久| 中文一区在线日| 99国产在线 精品 视频| 日本 情色 1区2区3区| 国产免费久久久久| 97日韩| 97欧美精品综合| 国产东北女人在线视频| 久久久性少妇| 国产精品白虎| 亚洲砖码砖专无区2023| 60秒不遮不挡| 亚洲大色堂| 国产18精品亚洲精品| 中文字幕在线免费观看 | 亚洲不卡一| 久久香蕉国产传媒一区剧情天美| 12一15性XXXX粉嫩国产| 天天激色| 玖玖人人爱| 岛国黄| 熟女少妇视频| 亚洲综合夜色| 色av中文字| 岛国色情视频在线观看| 本道综合精品| 日日日骚女人精品| 久久久啊啊| 日韩国产成人自拍视频| 精品人妻一区二区三区四区石在线 | 亚洲国产蜜臀系列在线观看| 女色视频社区| av婷婷色婷婷色六月| 色牛aV| 欧美综合传媒| 亚洲一本色码中文字幕| 色噜噜狠狠色综无码久久合欧美| 国产美女销魂在线观看不卡| 高精欧美色| 加勒比海成人视频网 | 天天操夜夜操| 熟女五十路一区二区三| 另类图片天天影视| 久久久天美| 操人妻逼91| 91视频国品一二三区| 色嗨嗨在线| 强奸抽插av| 天天欲望网| 97久久国产精品| 午夜天堂网| 蜜桃久久综合视频| 九九久久精品| 中文字幕av亚洲在线| 探花一区二区三| 翔田千里AV无码秘 三区| av2014 日韩在线中文字幕| 欧美 亚洲 综合 制服 另类| 成人女人国产| 江都AV在线| 操穴国产| 欧美色图片91| 久久熟妇五十路一区| 成年女人一区| 久都青青视频| 天美av在线观看| 五月丁香久久| 久久精品一区二区三区不卡| 色九月| 五月丁香六月激情综合| 日韩成人综合网| 国产福利第一视频| 色五月婷婷久久| 婷婷色在线| 亚洲综合另类| 亚洲天堂男人天堂| 精品综合久久久久久97| 男女性扦B| 91女优在线观看 | 精品成人av一区二区三区在线| 粉嫩不卡一区二区性爱 | 欧美在线 亚洲| 久湿久久| 欧洲精品二区| 少妇久久久久久| 超碰午夜| 97在线视频观看网站| 亚洲成人免费中文字幕| 久久免费精品视频免一| 亚洲五月婷婷| 九九久久首页| 亚洲综合性网址| 国产精彩女在线观看视频| 欧美后入式| 精品对白久久不卡| 永久免费av无码网站国产app | 久草男人天堂| 99久久免费看精品国产一区| 啊啊嗯嗯好爽| 久久首页| 五月婷婷色| 亚洲91网。| 九九人妻| 91亚洲色图| 少妇一区二区三区高速| 久久人人看| 不卡码视频| 狠狠干2020| 不卡在线观看视频| 超97在线精品视频| 中文字幕日韩综合| 国产性爱欧美性爱在线| 天天色欧美| 日韩国产欧美伦理在线| 亚洲va综合va国产va中文| 91亚洲影院综合| 亚洲中字慕不卡| 精品国产Av无码久久久亚洲| 国产女人91精品嗷嗷嗷嗷| 翘臀vidoes| 国产精品国产| 日韩免费av片高清无码| 色色色综合网| 四虎在线免费视频| 日韩性爱小视频| 亚洲一区二区性爱电影| 超碰4A| 免费中文综合精品| 久热超碰| 91网站在线播放| 91久久免费视频互動交流| 柠檬AV导航| 欧美日韩婷婷中文| 中日韩免费看男女操逼大全| 91粉嫩萝控精品福利网站_精品影音先锋国 | 日韩综合无码一区久久92| 人人考人人摸人人干| 久久一二三四不卡 | 久久久精品日本一道| 欧美丝袜美女电影一二三四区| 女沟厕偷窥piss小便| 色色激情| 国产97在线播放| 中文字幕日韩人妻视频一区二区三区| 厕所偷拍在线| 啊啊啊草死我| 五月婷婷六月丁香| 亚洲一区二区中文字幕| 国产精品无码论坛| 天天情欲宗合网| 久久久久921| 91欧美在线| 五月天色色网站| 91少妇通奸网站| 日本欧美一区二区三区免费| 欧洲亚洲人妻无码中字久久三区四区 | 精品一区99999| 一起草日韩| 91爱看| 26uuu性物| 色婷婷电影网| 国产精彩女在线观看视频| 日本高清视频xxxx| 日韩二三区| 精品蜜乳AV免费观看| 嗯嗯嗯嗯啊啊啊好紧好大| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 加勒比性爱成人在线| 少妇高潮流水av免费| 国产日韩精品一区二区三区| 日韩兔费看黄片| 毛片视频白嫩| 国内毛片国产欧美拍| 久久精品视频28| 男人天堂黄片| 99这里都是精品| 欧洲熟妇xxXx欧美老妇裸体 | 大香蕉视频一二三区| 欧美 日韩 另类 亚洲| 天天草夜夜草高潮片| 色亚州人久干视频在线观看免费版| 久久精品高清AV| 精品9999| 亚洲一区二区麻豆影院| 亚洲欧洲av影音| 啊啊啊要高潮了| 日本精品一区二区中文字幕| 夜夜躁狠狠躁日日躁av| 日韩av熟女一区二区三区成人| 豆花视频操逼网址| 91国产伊人大香蕉| 曰韩香蕉97| 五月天久久婷婷亚洲| 中文字幕五月婷婷免费| 亚洲日韩黑丝| 天美精品av| 欧美探花网| 久伊人网78| 色综合中文字幕不卡| 国产东北女人在线视频| 精品一区二区三区蜜桃| 欧美97在线观看| 亚洲精品a人片在线观看视| 2017天天插| 极品后入免费视频| 五月综合激情| 成年人黄色小视频网站| 一起草视频在线| 蜜桃一区二区三区| 亚洲情色电影网| 乱伦AVxx| 6080YYY午夜理论片在线观看| 成人乱人伦一区二区| 久久久久久中文| 日韩AV中文字幕电影| 国产精品久久久久无码AV会牛| 2019天天干| 欲色啪| 中文字幕在线观看网页| 久久艹逼视频| 日韩亚洲中文有码视频| 97精品免费视频网站| 伊人色综合欧美| 91女网站| 大奶啊啊好爽| 国产版a级片直播在线| 91露脸熟女专区| 亚洲欧洲激情卡通另类文学四射小说网站| 少妇精品久久久| 亚洲成人一二三区| 丰满人妻一区二区三区| 亚洲成人性爱在线观看| 亚川综合视频| 中国操逼无码| 久久九色| 亚洲视频精选| 大香蕉一人| 久久人妻少妇| 性交一区二区在线播放| 欧美 传媒 麻豆 日韩 偷拍| 伊人综合色网| 淫妻综合网| 色玖玖| 久操婷婷| 99在线精品观看99| 人妻少妇av在线观看| 婷婷丁香五月天综合东京热| 韩国一级婬片A片无码天美| 91国产操逼视频| 婷婷丁香激情| 亲子敌伦对白在线播放| 久操视频在线观看| 91香蕉国产尤物视频| 亚洲综合九九| 午夜精品久久久| 天天色图| 一道α片欧美| 国产精品ⅴ无码大片在线看.| 国产 日韩,欧美 自拍| 国产农村妇女精品| 肏逼视频日本| 欧美激情视频在线一区| 大香蕉黄色一级片免费看| 国产久久成人| 久久直播国产| 视频分类 国内精品| 91|九色|国产熟女| 欧美亚性天堂| 欧美熟妇乱码在线一区| 色噜噜人妻丝袜AV资源| 欧美国产一区二区三区麻豆传媒| 欧美中字二区| 国产风韵犹存熟妇三区| 久久大香蕉97| 探花精品 一区二区| 免费精品国偷自产在线在线| 国产AV色黄看到爽| 美女操逼福利视频| 激情五月天丁香| 亚州精人品大香蕉| 男人的天堂色偷偷青青草视频婷婷网| 日本精品免费一区二区三区四区| 激情五月天校园春色网| 91综合天天看| 九九九久久久| 99热99在线播放激情| 影音先锋国产精品| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 日本道人妻久久久在线不卡色视频| 青草伊人网| 午夜性生活av免费在线看| 国产欧美精选激情视频| 国内三级自拍小视频在线观看| 99热在线观看| 亚洲限制级| 国产精品丝袜在线| 男女做爰猛烈动高潮A片免费应用| 亚欧成人综合影院| 中文字幕 人妻不满 在线视频| 九久9热| 国内外毛片在线观看| 啊啊啊操死我| 欧美性爱视频免费一区一A| 久久一二三四五六七八九区区区 | 亚洲综合射| 欧美亚洲情色| 在线强奷到舒服的无码视频 | 日日干日日摸| 国产Av超碰| 久久人妻丝袜一区二区三| 亚州综合色图| 97免费视频在线观看| 亚州AV无码国产精品| 欧洲Au麻豆| 亚洲欧美碰碰| 在线观看精品国产免费| 亚洲成人精品久久久| 淫淫综合网| 人妻系列无码专区中文有码| 伊人青青一区成人视频在线观看区| 国产AB视频| 浓厚中出中文字幕在线| 亚洲色图久久精品蜜| 欧亚韩国999| 粉嫩av久久一区二区三区| 久久人妻办公室视频| 国产丝袜高跟美女av免费观看| aaa亚无码专区| 色色国产| 超碰色大香蕉| 国产黄色av大片网站| 青青草男人天堂| 在线免费观看高清无码视频| www.色五月| 欧美最婬乱婬爆婬牲视频| 中国国产精品一区视频| 久久综合女优| 91搞逼视频| 亚洲国产综合久久久性感熟妇| 哈哈操电影| 99热超碰在线| 女生看匆91网站| 久久婷婷亚洲| 亚洲精品电影| 天天天天干| 亚洲国产天堂| 精品超碰中文在线| 亚洲欧美伦综合| 激情99| 日日摸天天爽夜夜欢| 色婷婷狠狠| 亚洲欧美日韩不卡人妻| 六月丁香五月婷婷| 免费视频一二三区| 亚洲国男人的天堂| 久久久人妻| 97干日韩| 翔田千里无码一区| 可免费观看的av毛片中日美韩 | 漂亮人妻被强中文字幕hd| 免费在线黄片视频| 夜夜免费视频| 激情五月天社区| 97在线公开视频| 色五月综合| 成人性交免费视屏| 美女超碰978| 国产又黄又粗又猛大片| 天天α片| 久久亚洲AV成人精品无码| nuu12国产麻豆精品| 99热超碰在线| 日韩在线国产字幕| 欧美永久激情一区二区| 亚洲精品国产专区在线观看| 欧洲亚洲综合| 日本综合色图| 麻豆三极片| 亚洲精品蜜桃久久久久久久| 亚洲精品aa久久伊人| 插插综合网天天影视网| 久久人人妻| 欧美成人A天堂片在线观看| 妇女乱色二区| 国产精品对白内射| 十八禁的黄污污免费网站| 少妇大屁屁| 中文字日本乱码| 亚洲精品一区二区三区在线播放| 狠狠躁伊人中文字幕| 欧美日韩222| 欧美人妻一区| 91肉丝| 亚洲日韩久久精品一区| 亚洲少妇喷视频看| 欧美aa一级片| 亚洲97精品| 超碰98综合网| 插入综合网| 色嗨嗨在线| 女人天堂av在线播放| AAAA级日本片免费视频| 中文字幕视频免费| 少妇高潮99p| 国产精品自拍xxxx| 九九九九国产| 国产久9| 97爱爱影院| 桃色五月天| 郑州宾馆老熟女露脸啪啪| 97精品免费| 久久精品无码不卡| 亚洲欧洲色情高清| 亚欧精品久久久久久久久久久| 色色色色日本| 日韩欧无码一区二区三区免费不卡| 欧美骚少妇| 国产精品91ai| 国产人妻精品久久久一区二区三区| 国产不卡免费在线视频| 亚洲一区二区三区在线激情| 欧日韩一二三f区| 国产精品不卡一区二区三区| 91久青| 伊人AAA| 人人色人人操在线| 99性爱在线观看| 一本色道久久天天射天天干| 黄页av| 久久久女人| 欧美一区二区三区成人性生活| 青青草视频在线观看一区二区| 可以看的av| 亚卅熟女乱色| 午夜福利免费精品视频| 美女尤物人人操| 国产精品爱欲| 午夜a成v人电影| www.99色| 亚洲国产一级黄色视频| 97在线免费视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 日韩 成人 有码| 激情亚洲天堂| 少妇69中文| 一区二区三区蜜桃成人撸久久东京热| 91人妻丝袜无码| 99re6国产精品99re在线| 久久久精品国产亚洲伊人| 91丨九色丨东北熟女| 你懂得91| 99精品在线播放| av中文在线| 五月天成人综合| 加勒比大香蕉视频在线| 九九亚洲| 午夜精品一区二区三区三上悠亚| 丁香六月天| 欧美日不卡| 人妻密肉在线观看| 色天使大香蕉| 欧美A√综合网| 99蜜桃臀久久久欧美精品网站| 淫骚熟女一区二区三区| 四季AV一区二区凹凸精品小说| 免费看污网址| 天天综合网合集91| 老熟女综合网 | 国产区91柔拿会所技师| 99久久久久久久久| 乱伦熟女区| 激情五月婷婷| julia在线观看久久| 一及黄久一点| 欧美亚州综合图片| 色香91| 91精品网站| 亚洲精品一二牛牛| 成人八戒网站| 亚洲综合五月天| 伊人色综合超碰| 国产久久男人天堂| 日韩三级av片| 三级日韩一区二区三区| 日韩欧美中文日韩欧美色| 91久久久久久久| 国产精品对白内射| 嗯,啊。舔我逼| 水滴偷拍| 国产一区自拍欧美日韩| 亚洲精品人妻吞精av | 蜜臀在线看片| 江都AV在线| 久久人爽| 国产97色在线| 色黄污美女啪啪啪免费网站| 乱伦Av网| 玖玖97综合| 天天摸天天舔天天操| 亚洲欧美97√| 性爱Av免费| 五月综合色| 久久国产精品,久久国产| 久久是精品| 天天看精品动漫视频一区| 91操人| 北条麻妃99精品青青久久| 久久精品中文字幕女同| 日本一区二区三区四区五区六区七区八区九区| 天天射天天操天天干天天吃2018| 国产高清精品福利| 肥臀熟女福利视频一区二区| 丝袜狂射91| 26uuu最新| 久久xxxx| 天天内射| 97综合久久| 日韩av在线播放不卡| 天天综合网91入口| 日韩一卡二卡三卡| 一级黄色牲爱A级片| 天天日日日射| 天天影视亚洲| 国产高清成人传媒影视| 天天综合网1| 亚洲97在线观看| 免费一级视频特黄色大片| 操死我了嗯嗯嗯| 亚洲?V高清一区二区三区尤物| 睡产熟女乱伦| 后入式视频国产自| 亚洲影院无码在线| 激情开心五月天| 国产精品色| 秋霞久久亚洲精品成人| 嗯~啊~快点 死我视频| 欧美78P| 久热伊人| 久久宗合97| 久久6热视频免费观看| 亚洲AV无码久久精品蜜桃小说| 天天色图| 看看小穴| 欧美日韩1234| 男人天堂婷婷五月天校园春色| 综合少妇网| 日本色色色| 男人天堂最新手机版在线青青草| 国产操操日韩三级黄| 日韩美女高潮喷水视频| 伊人黄色片| 精品人妻一区二区三区视频| 国产精品探花色| 男人天堂久久日韩| 性爱综合一区二区| 99999久久久久9国产精品| 精品78| 国产欧美一区二区| 亚洲av性爱电影| 亚洲、日韩、综合、另类| 久久久国产三级黄色片| 欧美日韩天堂| JIZZJIZZ国产精品喷水| 中出20p| 丁香五月综合| 男人天堂2017| 美女高潮视频91| 久久久久久一日韩字幕无码| 97超碰资源网| 国产精品探花在线| 夜夜高潮夜夜爽夜夜爱爱一区| 婷婷丁香六月天| 97超碰超碰| 日本不卡二三区| 插日本熟女视频| 亚洲激情深爱文学小说网站| 去干网最新版| 亚洲男人天堂AV| 99国产天美| 中文字幕日韩人妻视频一区二区三区| 欧美一二级| 国产毛片精品一区二区色欲黄A片| 精品人妻一区二区三区在线视频不卡| 四月丁香婷婷| 国产亚洲中文不卡二区| 亚洲好色人妻| 91亚洲黑人| 嗯啊视频免费在线观看| 中文字幕精品三级久久久| 午夜精品久久久久久久男人的天堂| 欧美超碰97| 亚洲性图91| 骚逼高潮久久精品| 国产在线观看91精品一区| 941超碰| 性色一线| 亚洲 日韩 丝袜 熟女 变态| 91高清欧美| 亚洲97P| 婷婷操逼| 亚洲好看强奸乱伦| 青青草综合在线| 欧美性区| 色综合九九| 久久久久久久久久va| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 久久久蜜桃一区二区三区| 亚洲熟妇乱女区二区三区| 亚洲精品一区二区精品| 欧亚日韩一区在线| 老汉网| 青青草手机在线免费观看| 乱色老一区二区三区的观看方式| 人妻丝袜一区二区三区在线| 影视综合无码少妇| 伊蕉97蜜桃97狠狠综合干| 69久久| 久久综合九九| 黄色香蕉视频网站一区| 色综合 加勒比| 97干色天堂| 午夜大香蕉| 国产操伦| 久久久久九九九| 欧美丝袜美女电影一二三四区| 97亚洲综合电影| 丁香五月综合| 熟女精品va中文字幕| 国内偷拍精品一区二区| 熟人人妻少妇精品久久| 亚洲精品一区二区免费在线观看| 美中韩AV综合网| 人妻熟女av国产网站| 天天操夜夜嗨| 日韩精品在线放| 97欧美在线| 久久亚洲日韩熟女精品| 91丝袜熟女| 精产国品一区二三产品| 91neishe| 色一情一乱一乱一区91Av| 午夜福利免费福利视频| 日本一区二区三区午夜观看| 99re这里只有精品9| 国产农村妇女毛片精品久久| 天天日熟妇| 色偷偷人人玩人人舔人人操人人摸人人爽| 欧美性,亚州色| 中文字幕91综合| 日韩草久视频| 亚洲一区二区麻豆影院| 五月丁香啪啪啪| 操一区| 日本九九九九| 美日韩成人| AA丁香综合激情| AV九九| 亚洲男人天堂Av| 欧美另类色图片| 日韩有码免费视频| 亚洲人妻一区二区三区| 屌逼传媒| 极品五月天噜噜| 国产suv精品一区二区四| 91久精品| 亚洲天堂另类小说男人| 国产60区。| 亚洲色香| 91N综合网在线| 毛片99-全集电影手机免费观看完整-B029AV| 少妇熟女1区2区3区| 丝袜美腿诱惑亚洲欧美视频在线观看 | 久久精品国产AV一区二区三区| 日本人妻最新在线中| 亚洲黄片免费在线播放|