亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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ù)庫、做耗時(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
返回資訊列表
小视频玖玖| 水野优香在线观看| 97超碰国产精品| 高清孕妇孕交 交| 激情五月婷婷综合| 中文字幕第9页萱萱影音先锋| 男人的天堂2019| 91美女丝袜诱惑视频| 成人a大片在线观看| 99精品无码| 国产亚卅97| 人人看黄色视频| 少妇人妻在线| 欧亚久久偷拍视频| 亚洲成人久久美女| 超碰精品日韩欧美国产| 精品一区二区三区麻豆| 中文字幕一二三av| 性色av一区二区| 亚洲乱码国产乱码精网站| 97久久超碰亚洲| 国产黄片精品在线| 爱丝福利| 亚洲一本色码中文字幕| 人妻少妇精品一区二区三区| 亚洲精品亚洲人成人网| 色999;丁香五月| yellow网站免费观看日韩高清无码| 大屁股熟女一区二区三区| 在线只有精品| 黄色小视频日本txt| 亚洲第一页第二页激情| 亚洲综合91| h色99999| 宗合情欲网| 国产精品自在自拍视频| 国产欧美精选激情视频| 在线A日本| 日韩欧美成人综合在线| 夜夜欧美| 无套内射性感少妇视频| 美国人人操人人操| 国产强奸超碰AV| 日韩欧美亚洲一区二区三区影院| 天天躁日日躁AAAAXXXX国产| 国产一级高清免费观看| 91中出在线| 日韩欧美麻豆 | 久久性爱视频免费看| 欧美天天性| 九九综合九九综合| 欧美亚洲手机在线| 欧美色图综合网| 一区二区无码视频| 狼人狠干| 我要色综合网| 欧在线一二区| 中国一级特黄大片护士| 人人操人人狠狠操| 亚洲s在线观看| 91精品久久综合熟女| 色99在线| 五月天欧美色图| 精品女同一区二区三区| 亚洲综合在线视频| 国产呦精品一区二区三区下载| 91丝袜在线观看| 欧美一二三级精品在线| 亚洲国产成人精品久久久国产成人一区二区 | 国语精品av| 久久久神马影院| 国产欧美黑人丰满在线| 国产乱不卡| 国产精品电影大全| 五月综合色| 丁香五月天激情网站| 男女性感激情网站| 操B久久| 色综合98| 婷婷综合在线观看| 丝袜天堂| 五码视频在线观看| 人妻啊啊人妻啊| 亚洲无码99| 亚洲 欧美 另类 综合 偷拍| 91美女視頻| 伊人网在线点播| 国内偷拍精品一区二区| 激情色播| 玖玖资源视频一区二区三区| 欧美日产国产在线成人第一区| 色色综合网站| 91日日夜夜| 日本一级特级毛片视频| a在线观看| 美女91色黄18| 六月婷婷综合| 超碰久久综合| 日韩亚洲中文字幕在线| 婷婷亚洲天堂| 后入综合久久| 狠狠激情综合狠狠操中文字幕| 1区2区3区中文字幕日韩| 特色a在线上| 偷窥自拍A片| 蜜臀th| 久久久久久久伊人精品| 久久內射| 超碰无码加勒比| 日韩女模中文造逼| 欧美洲精品一级| 日韩高清黄片| 男人天堂久久精品| 超碰九区| 亚洲性图91| 成人情色综合网| 日本视频一区二区三区| 人妻插插人妻人| 精品女同一区| 亚洲国产一区二区三区四区国产| 精品国产乱码久久久影院| 亚洲一区二区三区AV无码| 成人五月香网在线| 国产丝袜一区二区三区| 欧美国产伊人久久久久| 亚洲做性| 亚州精品一区二区三区香中文字幕在线| 久久久一区二区三区麻豆| 国产 热久久久久国产精品| 青青草大香蕉在线视频| 巨爆乳一区二区爆乳区| 天天日天天干天天摸天天操| 好淫网一二三视区| 91女日逼| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 东北女人操比视频| 久久香蕉国产线看观看猫咪av| 久久久一区二区| 激情婷婷综合久久| 亚洲精品男人的天堂| 欧美色综合网| 欧美日韩超碰在线| 亚洲伊人a线观看视频| 亚洲国产丝袜在线观看| 五月婷婷激情网| 一本色道综合久久欧美日韩精品| 超碰97起碰| 欧美一二三级精品在线| 亚洲精品97p| 无码99| 51国产午夜精品视频| 久久久工口| A级国产欧美激情在线| 欧美综合传媒| 艳美熟妇先锋一二三区| 精品蜜乳AV免费观看| 又摸又舔在线观看网站| 国产亲戚伦亲在线| 天天综合-91入口| 91亚洲影院综合| 一区二区三区 日韩欧美| 五月天久久人妻| 男人下部插入女人下部| 色香色欲天天综合网天天来吧| 欧美丝袜中文字幕07在线| 久久久久久久久久久97| 九九激情网| 激情五月综合开心五月| 国产免费一区2区3区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 色伊人91| 色在线69堂| 综合 亚洲 欧美| 天堂在线一区二区| 区日韩亚洲乱码av电影| 久久久五月天| 国产 日韩 另类 视频一区爱| 久9爱精品| 精品一区二区三区四区女| 伊人久操| 国产无马视频| 成人小说另类在线| 大香蕉中文在线| 亚洲永久永久永久永久一级一级一级精品| 九九伊人网| 国产成人欧美一区二区三区的国产| 一级AAA片一区二区三区| 欧美日韩国产电影| 欧美激情片一区二区| 久久久久久亚洲精品不卡人乳| 熟女乱伦A| 97在线视频免费观看| 锕锕好爽 死我在线观看| 欧美在线色图| 九九久久久久久爱| www. 男人天堂成人在线| 婷婷五月天久久精品视频一区二区三区 | 岛国1区2区3区在线观看| 校园春色亚洲色图| 日日玩天天干| 人妻精品一区二区三区| 加勒比aⅴ| 91女优在线观看| 麻豆福利视频导航| 黑丝日韩av丝袜av| 91美女色视频亚洲| 不卡免费av在线播放| 尤物网址| 99久久婷婷丁香| 欧美人人操人人插| 欧美日韩另类在线播放| 中文字幕日韩人妻视频一区二区三区 | 性色中出| 久久精品视频一区三区小泽玛利亚| 欧美丝袜激情| 98福利在线视频| 精品国产国产AV| 91爱做| wuyechaopeng| 福利视频网站| 综合久久久久久久久91| 伊人黄色片| 国产一进一出视频网站| 干婷婷综合网| 夜夜中出国产| 牛牛久久国产精品视频一二三 | 影音先锋每日最新资源在线观看| 欧美成人A天堂片在线观看| 国产高清精品一区二区三区毛片| AV无码久久久精品| 国产精品天美传媒| 日本东京热大香蕉a片| 99re6国产精品99re| 午夜无码熟妇丰满人妻| 91亚洲高清| 欧美片第一页| 成人av免费观看| 午夜天天碰综合视频| 九九热视频这里只有精品| 精品一区二区麻豆| 天堂网亚洲区手机版| 国产精品女aA片爽爽视频| 精品国产无码中文| 亚洲国产第一页综合视频| 少妇与黑人高潮在线| 91色综合色| 亚洲天天更新| 欧美人妻久久精品二区三区| 99热超碰| 99精品丰满人妻无码| 男人的天堂va在线| 欧美日日操| 色丁香五月婷婷| 成人一区二区三区四区| 91精品国产91久久福利| 熟女突然公开看18禁影片 | 蜜臀无码视频在线观看| 一二三区在线| 日本黄色XXX| 国内毛片欧美香蕉精品| 黄片在线免费在线观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲国产熟妇综合色专区| 亚洲欧美日韩免费电影| 大奶啊啊好爽 | 超清中文乱码字幕| 床上啊啊啊一区二区三区| 9精品在线| 免费国产视频| 亚洲最新Av| 亚洲日韩成人性爱视频| 97在线资源| 国产二区三区免费视频| 高清无码网址| 伦理第一页| 色噜噜精品一区二区三| 亚洲区限制级| 强奸国产精品视频| 青青国产在线拍揄自揄拍| 天美传媒AV在线| 婷婷五月天激情网| 人妻少妇精品无码专区二区密桃| 亚洲AV无线| 传媒免费一区二区三区| 18禁在线视频| 天天综合网1| AA级电影三区| 97在线观视频免费观看| 强奸乱伦大香蕉| 丝袜喷水在线| 午夜超爽| 亚州色图欧美| 91人妻最真实刺激绿帽| 97久久免费| 99久国产精品午夜性色福利| 一区,二区,三区视频| 人人做,人人操,人人摸| 欧美97日韩| 日韩中文字幕视频| 熟妇高潮一区二| 欧美精品23| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 天天影视激情欧美| 在线岛| 久久精品人妻一区二区| 殴美在线AⅤ| 久久久9 9 9精品| 操婷婷逼| 亚洲色欲天天天堂色欲网女| 韩日精品福利视频一区不卡在线免| 91香蕉视频在线观看免费| 蜜臀久久久国产| 综合操逼| 另类欧美色| 亚洲有码 欧美精品| suv精产一二三区| 欧美熟妇视频| 蜜乳Av成人片网站| 欧美啪啪色吧在线| 人妻在线大香蕉| 亚洲一级特黄大片在线播放91| 少妇人妻激情四射| 国产免费大片| 国产 丝袜 欧美中文 另类| 欧美,日韩,中文,另类| 婷婷五月天网| 麻豆 欧美 日韩| 日本淫乱女一区二区三区视频| 成人色女网| 伊人久久大香大香线蕉中文| 欧美极品| 中文字幕精品亚洲熟女| 色妺妺在线视频| 伊人精品久久网站| 外国91| 91l欧美在线| 99九九精品| 日韩免费高清大片在线| 亚洲精品欧洲色| 欧美 日韩 另类 亚洲| av凤凰久久久| 久久一区二区高清免费| 精品欧美不卡在线播放| 久久国产精品一区二区| 嗯嗯啊好大| 欧美精品第3页| av天堂精品久久| 大香蕉伊人75| 久久人体一区二区| 日韩精品99久久久久久中文字幕 | 欧美色图亚洲特色| www.99色| 国产精品探花在线| 成 人片 黄色大片| 九九九色| 日日摸天天爽夜夜欢| 大香蕉在线SuP| 日韩精品高清资源在线| 日本三级久| 亚洲乱码尤物193YW| 中文字幕精品免费一区二区| 97亚洲在线| 青青草原伊人网| 超碰1997| 久久亚洲熟妇在线视频| 97超碰无码网| 久久精品天美| 宅男91视频在线播放| 天天肏夜夜肏| 一级久久性爱视频| 蜜乳AV一区| 国产无码精品成人| 蜜臀无码视频在线观看| 淫荡网址| 欧美人妻少妇| 亚洲欧美色图片| 999热日韩精品| 色综合1991| 操死我了啊啊啊| 91路www| 人妻人人澡人人爽人人| 中文字幕-区二区三区四区视频中国| 亚洲情色91| 99精品在线| 99热官网| 天天操av懂色| 久久成年精品| 伊人操操| 伊人午夜福利视频| 99在线精品视频| 欧亚日韩中文在线| 少妇被c 黄 免费观看| 日本不卡一区二区| 思思热久久成人| 91足交| 九九性爱网| 欧美婷婷| 97国产精品国| 精吧天堂| 香蕉精品二区二区| 91免费看一区二区三区| 秋霞成人一级在线观看| 国产在线视视频有精品| 欧美亚洲日韩人妻在线观看| 黄色成品网站| 欧美啪啪天堂| 日韩熟女操逼| 91free福利| 台湾佬激情综合| 日韩精品99久久久久久中文字幕 | 一区二区三区 日韩欧美| 东北女人被操| 97一本大道亚洲一区| 免费草草草草草视频| 96国产精品| 精品无码久久久久久久久果冻糖心| 91P0RNY大屁股人妻| 亚州免费啪啪视频| 天天日天天操心| 99九九久久| 欧美三四五区| 蜜乳AV免费观看| 日亚韩精品视频二区三| 人人爽夜夜操| 99在线观看视频在线高清| 国产午夜在线观看| 一块操欧美性爱| 内射黑人| 91国产丝袜白虎| 成人av在线播放| av一区二区三区 中文| 青青草日逼视频| 九色 蝌蚪 熟女自| 一级做a爰片性色毛片久久| 国模无码一区二区三区在线| 久久久啊啊| 四虎影视永久在线观看精品免费网站 | 97久久精品| 亚洲第一在线视频| 97超碰总站| 国产精品国产精品国产| 亚洲免费人妻在| 色鬼在线综合| 九九亚洲| 日韩欧美女优电影| 一区二区播放| 久久性爱网站| 欧美论理片| 成人午夜高潮av猛片| 日韩成人免费电影| 麻豆a'v电影| 成人乱人伦一区二区| 欧美精品人妻视频| 欧美色青| 婷婷色一区| 久伊人网78| 亚洲第一无码播放立川理惠| 亚州综合AⅤ| 先锋影音av先锋一区| 久久香蕉国产传媒一区剧情天美| 97中文字幕一区| 欧美系列在线一区二区| 亚州综合图片| 密乳无码| 91超碰在线播放| 成人亚欧免费视频| 中文字幕神马久久| 亚洲精美粉嫩嫩泬在线观看| 91久久18禁| 精品人妻1区| 久久九七| av天堂精品久久| 99国产精品免费| 在线看的av| 另类视频在线| 日韩999| 久久香蕉国产线看观看亚洲女人 | 中文字幕成人| 亚洲精品久久久久久久蜜桃臀| 九九热精品| 久久久久久久人妻丝袜| 久久神马影院| 最新日产中文在线麻豆| 欧美日本视频一区| 色啪网| 91老熟女| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 亚洲成人在线乱码色午夜| 国产成人精品亚洲日本| 中国少妇啪啪视频| 骚乳在线| 日韩一区二区三区四区五区| 欧美色另类| 日韩人体偷拍| 国产精品视频麻豆入口| 亚洲资源吧| 夫妻四区五区六区| 亚洲中文日韩欧美大香蕉视频| 97欧美色| 少妇六月天| 成人八戒网站| 大肥女高潮bbwbbwhd视频| 青青操在线亚洲视频观看欧美在线 | 日本肉体xxxx裸交| av网站国产主播在线| 中出后入| 99re这里只有精品中心播放 | 天天亚洲综合| 亚洲激情在线一区二区| 久久精品人妻一区| 亚洲图片在线| 久草精品热视| 亚洲一区二区中文字幕| 日本视频在线中文字幕| 欧美黑人168页欧美黑人167| 台湾佬激情综合| 中日韩久久久| 日韩啊V| 91大香蕉伊人| 91爰爱欧美| 日韩精品一二三四| 成人5码视频| TS人妖另类精品视频系列| 九热超碰| 四虎免费看黄| 99超碰色| 色婷五月| 囯产操逼片| 国产91av在线播放| 久久男人的天堂| 国产精品午夜精品| 欧美A√综合网| 久久久久久久久久久久久久久性生活视频 | 84YTCOM性无码| 日本幼女18+| 裸体美女久久久| 中文字幕 一区二区 亚洲无码| 搡老熟女老女人老熟妇免费视频| 2017人人操,人人摸| 五月丁香激情四射| 精品国产AV一区天美传媒| 2019亚洲男人天堂| 青青草色插素人| 91国产大片| 欧洲免费一区二| 裸体美女国产免费久久久网站| 91精品国产高清久久久久久,亚洲成人| 日韩无码视频黄色| 人人操人人插 - 百度 - 百度| 亚洲 欧美 色图| 亚洲欧美综合图片| 亚州高清AV| 欧美激情亚洲| 91精品人妻| 97免费视频在线| 91精品导航| 青青草大香蕉视频| 麻豆av一区二区| 久久久亚洲熟妇资源| 97日韩欧美亚洲| 蜜臀中文无码午夜| 欲香欲色综合天天伊人| 99re黄 | 天天干人妇| 日韩av乱伦| 伊人激情| 香一区二区三区| 久草资源在线视频官方总站日韩丝袜美腿 | 亚洲猛交| 亚洲91色| 国内毛片国产欧美拍| 日本成人A片网站| 免费看黄视频亚洲网站| 精品国产乱码久久久久久口爆网站| 强奸乱伦日韩AV| 久久婷五月| 九九热免费国产视频婷婷伊人五月 | 国产后入清纯| 蜜臀99久| 1000部熟女视频在线观看| 91爽啪| 亚洲欧洲另类| 岛国毛片手机在线观看| 中文字幕一区二区无码成人| 岛国在线一区二区三区| 啊v在线观看视频| 亚洲天堂美臀在线| 91亚洲不卡一区| 亚洲精品啪视频| 久久草草亚洲蜜桃臀| 亚洲第91页| 午夜精品久久久久久久男人的天堂 | 91色狼| 国产AV人人夜夜澡人人爽麻豆| 九九久久99| 啊啊啊不要好爽日韩无码一区| 欧美精品精品一区二区| 麻豆乱码久久精| www…国产操逼| 99这里只有精品| 色操逼网| 免费av高清无码| 亚洲 欧美 精品专区 极品| 十八禁电影伊人网| 日日日啊啊啊| 天堂日本亚洲欧美| 午夜久久一区二区无码中出| www.99热| 啊啊啊啊嗯嗯嗯用力好爽| 97精品国产97久久久久久户外免费| 国产东北女人在线视频| 亚洲激情综合另类男同| 日韩无码精品综合久久| 中国AV美女| 免费一级性爱久久| 成人八戒网站| 五月天婷婷久久| 猛交交| 神马久久久久眼| 国产精品乱人伊人网| 女一区二区| 夜夜夜夜爽| 99re这里只有精品2| 99av| 国产精品一区二区a| 欧美激情性久久久久久| 无码精品蜜桃一区二区三区ww| 超碰在线日韩一区| 色综合一本| 一区二区三区免费岛国片| 嗯啊不要啊在线 | 精品午夜福利| 欧美性爱日韩性爱| 免费观看的av| 亚洲国产精品久久久久婷婷老年 | 97超碰人人操人人操| 成人精品久久久午夜福利| 国产精品国产自产高清AV| 99色在线| 青青草在线视频美女| 一级岛国大片| 色婷婷狠狠18禁| 久久久久ab| 家庭乱伦麻豆| 午夜婷婷| 婷婷九月国产| 国产人伦a片信息免费片| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 四虎884a| 91欧美色| 国产自产一区视频在线| 91亚洲影视| 懂色AV蜜臀无码精品APP | 亚洲三区视频| 亚洲中文字幕在现观看| 日韩欧美性吧婷婷乱伦大香蕉| 国产兽交视频在线播放| 日产狠狠干| 北约熟女超碰| www久久久| 操b网站亚洲无码| 精品人妻久久久久一区二区三区| 91欧美亚洲| 欧亚性爱啪啪| 成人女人国产| 97碰碰色| 欧美特大黄一级片片免费| 美女黄页| 日韩猛交| 日韩国产中文字幕| 高清肉丝中文无码| 亚洲 小说 欧美 激情 另类| 国产精品亚洲美女久久久久| 亚洲性爱高潮影院| jk白丝没脱就开始啪啪| 天天操夜夜操| 亚洲第一页综合在线| 丰满人妻一区二区三区性色| 国产精品一区午夜福利| 色人久久| 九久9精品| 99这里都是精品| 99久在线精品99re8| 日本天天操| 亚洲综合贴图91| 欧美日韩香蕉| 深夜激情| www.色五月| 青青在线视频日韩欧美| 亚洲高潮少妇| 日韩一级欧美一级国产一级台湾| 青青草日韩无码| 国产视频第二页| 99热亚洲天堂| 久久精品久久久久久久久| 超碰97资源中文字幕| 人人干人人操人人爱| 1二区9| 日本操BAV| 怡红院久久老司机| 伊人大香蕉在线| 久久中文字幕一区不卡| 久久久久夜夜夜夜| 熟女少妇一区二区三区| 婷婷五月天社区| 秋霞网—男女啪啪亚洲免费体验区| 国产精品亚洲天堂网址| 亚洲骚男同com| 久久久蜜桃一区二区三区| 操逼网站网站| 一本一道久久综合久久| 日韩人妻资源网| 亚洲AV操| 欧美日本成人一区二区| 97在线免费观看| 国产精品无码av嫩草| 日韩一级片| 欧美狠狠操| 97jingpin| 欧美gv在线观看| 亚洲高潮少妇| 玖日综合网| 懂色Av| 日日97| 久久在肏| 最新日本中文字幕| 午夜成人爽爽爽爽A片李冰冰| 色路综合| 97视频免费在线观看| 伦理第一页| www.91视频网| 91精品人妻一品二品三品| 男人干美女| 亚洲激情网一二三四区| 九久精品| 熟女色图在线| 五月天婷婷色色| 国产AB视频| 人妻碰碰碰碰碰碰| 舔足天天操天天射| 欧美se综合| 69视频入口| 情侣操 逼视频99| 亚洲夜色在线| 乱性AV| 亚欧中文字幕在线视频| 996热| 婷婷美人网| 啊啊啊好舒服视频| 日逼视频日本| 九九九九九九九九九九九免费国产| SUV一区二区在线看| 天天澡天天狠天天天做| HEYZO高无码国产精品227| 青青操在线亚洲视频观看欧美在线| av影院十区| 國產尤物AV尤物在線觀看| 精品乱子一区二区三区99| 夜夜性| 操逼日韩无码| 欧美草草高清日韩视频| 亚州AV无码国产精品| 天天摸天天碰天天添青青| 久久日韩肥臀| 五月婷婷激情综合| 情色图区| 九热视频| 蜜臀99久久国产| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 欧美成人A天堂片在线观看| 香蕉在线一区二区三区| 蜜臀久久久99久久久久 | 色婷婷久久| 亚洲精品国产熟女久久久| 欧美激情另类一区二区| 成人综合网 欧美| 一区AV| 青苹果影院男人的天堂| 岛国A V在线免费看| 亚洲情色五月天| 亚洲中文字幕在现观看| 美女高潮视频91| 神马久久久久久伦理片| 色99久草| 国产女人高潮视频| 波多野结衣之双飞调教在线播放 | 亚洲精品亚洲人成在线麻豆| 96精品一区| 大香蕉亚洲中文| AV麻豆免费一区| 九九九精品一区二区无码| 欧美人妻一区| 国产99热| 欧美体内射精| 婷婷五月影院| 啪啪啪精品视频| 四虎在线观看视频| 91日日夜夜| 久久久久久性爱片| 欧美另类综合久久| 久久成年片色大黄全免费网站| 中文字幕视频免费| 婷婷成人久久久精品| 金莲网址| 欧美色图片| 欧美淫乱视频| 天天综合网91入口| 久久极品伊人| 亚洲AV无码国产成人| 少妇人妻好深太紧了vr91| 久久久久九九九| 欧亚韩国999| 夜夜福利| 丝袜喷水在线| 天天日天天插| av资源在线播放天堂| 手机在线人成免费视频| 另类TS人妖一区二区三区| 久久精品国产亚洲粉嫩| 久男人久久| 欧美影音在线| 少妇极品熟妇人妻无码| 97中文超碰| 97久精品| 乱人伦 国语对白:视频直接看| 8050午夜少妇无码| 人人做人人妻人人夜视频| 亚洲AV无码成人精品久久| 人人插人人搞人人操| 久久精品店| www.av在线观看| 丁香五月成人| 欧美色图片91| 四虎免费看黄| 熟女久久久| 欧美日韩亚洲少妇寂寞影院正在播放| 全国男人天堂网| 啊啊啊啊好疼| 丁香婷婷五月| 天天色播亚洲综合网站| 岛国成人av在线播放网址| 人妻熟女一区在| 蜜奶av| 久久精品视频一区三区小泽玛利亚| 10000部十八禁看电影| 操淫穴亚洲五月丁香| 色区97| 一区二区三区黄色片a| 日韩卡一卡二卡三在线| 色综合色综合网| 久久国产精品91| 97国产伦理| 亚洲天天操| ..日韩av毛片精品久久久| www.色五月| 欧美天堂亚洲电影院一区在线播放| 亚洲极品| 懂色中文一区二区三区| 激情五月丁香五月| 麻豆性爱视频在线播放| 亚洲精品99999| 香蕉人人操tv| 毛片视频白嫩| 五月天人妻综合| 亚洲精品1区| 久久精品亚洲婷婷| AV一二区| 欧美丝袜中文字幕07在线| 伊人网免费视频| 亚洲天堂中文字幕无码男同| 一直超碰| 97鸡把在线视频| 欧美自拍偷拍免费观看| 中文字幕丝袜美腿| 少妇色| 天天爽天天爽| 人人妻人人爽| 六月色色| 亚洲双插| 97最新在线播放视频| 亚洲精品国产av天美传媒| 在线播放免费av福利片| 久久综合中文国产| av网站免费看| 九九热免费国产视频婷婷伊人| 欧美se综合| 欧美性爱五月天| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 久草成人福利导航| 伊香蕉综合久久久久久久噜噜噜| 亚洲成人网站在线观看| 精品久久久久久久| 久久色激情一区二区三区| 日韩激情电影中文字幕| 亚洲在高跟鞋自慰久久在色线| av网站免费线看| 91高潮喷水美女| 丰满少妇乱子伦精品无| 超碰人人干天天射| 久久久久久久久久久人妻| 日本不卡高清视频| 亚洲天堂电影网99999| 一本一道人妻久久一区二区三区 | 丝袜足交视频| 久久熟妇五十路一区| 亚洲日韩美女中文字幕乱| 欧美97se| 丝袜喷水在线| 青青草天天亲夜夜操网| 成人午夜高潮av猛片| 男女性扦B| 人妻日日夜夜精品| 久久欧美性爱视频| 亚洲欧美一区二区网址| 色香欲天天天天综合色| 国产精品 亚洲情色| 曰韩av中文字幕专区| www.99色| 91久| 人妻喷水| 九一精品牛牛一区二区| 亚洲av夫妻操穴网| 91丨熟女丨丰满熟女| 久久精品国产亚洲AV高清演员表| 亚洲另类天堂| 美女高潮国产高清| 97人人模人人爽人人| 9精品久久久久| 偷窥自拍亚洲天堂网爆| 超碰69| 精彩视频日韩| 99热在线播放| 国产原创精品| 成年人性爱日韩| 国产乱伦性爱区| 日本熟女不卡视频| 久久αⅴ| 亚洲欧美不卡线| 日本道人妻久久久在线不卡色视频| 99精品丰满人妻| 色香91| 一区二区不卡免费| 日产成人久久| 97综合久第一页| 久久99国产精品| 亚洲色人| 黄色大片免费在线| 精品久久久高清无码| 欧美日本一区二区a人| 美國A片| 久久久久久久人妻| 亚洲 欧美 小说| 福利一级版子| 疯操AV| 国产成人亚洲精品无| 最新无码国产| 青娱乐国产精品| 国产激情综合| 老熟女区| 欧美丝袜亚洲| 看大黄色大片原件| 六六久久日韩不卡| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 偷拍偷窥与盗摄视频专区| 亚洲精品日日夜夜52| 2017人人操,人人摸| 蜜臀人妻少妇久久在线观看| 国产suv精品一区二区四| 91在线限制级| 一区二区三区四区久久视1| 97视频900| 9久9久9久9久视频网站| 水滴偷拍| 免费精品国偷自产在线在线| 天天干天天燥| 久久精视频美日韩在线视频| www.99热| 97视频7| 久久99干一本高清| 搡老女人老91妇女老熟女| 国模无码人体一区二区三| 日韩久久.一级黄色片| 日本中文字幕在线电影| 国产suv精品一区二区四区999 | 亚洲男人的天堂网| 久久久啊啊啊| 久久久久久久久久va| 99久久精品国产高潮| 欧美亚洲国内自拍| 狠狠干妹子| 色激情综合网站| 免费啪啪一级视频| 99青草| 曰本特级特黄特色黄色A级网站高清在线免费看 | 男人天堂欧美| 久啪| 操逼网站网站| 中文字幕精品一区二区精| 中国女人内射6XXXXX| 久久超碰爱| 久久久久亚洲熟妇熟女| 私人尤物在线精品不卡| 欧美日韩精品一区二区三区高清| 五月天伊人| 加勒比久久av| 色九九九综合| 91性| 大JI巴好深好爽又大又粗视频| 上海一级黄片| 啊啊啊啊啊操我视频| 一本色道久久综合狠狠操| 日日操免费视频| 五月天激情网站| 色亚州人久干视频在线观看免费版| 欧美黄业| 操逼网站地址| www被窝色com| jizz啪啪| 国产成人亚洲精品自产在线| 黄站在线免费观看| 亚洲国产精品9999在线观看| 国产精品对白内射| 91n欧美| 无套内射性感少妇视频| 中文一区二区| 精品中文字幕一区二区| 一区中文字幕二区日韩| 久久久久久久精| 五月激情啪啪| 青青草一本道福利视频| 免费观看的黄色的网站| 婷婷另类小说| 中文字幕乱码人妻二区三区| 老熟女91av| 大学生美女口爆| 欧美制服另类丝袜| 国产精品播放| 国产一区96在线| 亚洲一区二区av| 色婷久久| 淫淫综合网| 骚逼高潮久久精品| 国产AV中文| 欧美制服另类丝袜| 蜜臀久久99精品久久久电影| 99这里有精品| 久久综合九色综合欧洲98| 久久免费老司机精品| 国产内射爽爽大片| 岛国AV一区二区电影| 99久久国产精品免费高潮| 免费农村成人少妇人妻Aa一区二区视频| 免费试看60秒| AV天堂电影网| 五月婷婷丁香六月丁香| 人妻少妇三级| 亚洲 欧美日韩 另类| 男人天堂毛片| 天天日夜夜| 久久伊人最新网址视频| 亚洲精品 超碰| 91在线超高颜值国产| 在线免费试看60秒| 五月婷婷AV| 国产精品天堂| 欧美操逼视频二区| 国产av又色又爽又黄| 热热色国产一二区AV| 亚洲九九夜夜| 污色区网站| 黑人与人妻| 99ri在线视频| 97精品久久| 蜜臀久久久国产| 99热欧美| 亚洲 无码 偷拍| 天美传媒av一区二区| 日本国产成人亚洲精品无码| 美欧色综合| 亚洲情色在线| 超碰在线国产| 黄色成人网久久久久久| 啊啊啊啊啊啊啊在线| 先锋精品av色鲁| 翔田千里无码中出中文字幕| 精品人妻一区二区蜜桃视频| 麻豆2区1区天美| 99精品欧美一区二区三区桃色| 婷婷8月天青娱乐| 91国产大片| 国产精品熟女丝袜一区二区| 超碰97欧美| 日韩八十路老熟女| 91狠| 九九久久99| 日韩性爱毛片操骚逼| 国产女人91精品嗷嗷嗷嗷| 97爱亚洲| 欧美91久久久久| 射丝袜高跟鞋99| 无码日韩网站| 国产Av超碰| 96麻豆精品一区二区三区| 日本999精品| 一区二区偷拍拍视频| 十八禁的黄污污免费网站| 91亚洲人| A男人的天堂| 亚洲精品丝袜| 久久婷五月| 男人高清无码一区二区| 试看日韩黄片| 欧美精品系列| 黄久在线| 久久国产对白激情浪潮| 无码免费一区二区三区啪啪| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 中国AV美女| 亚洲女人91| 91亚洲欧美综合高清在线| 国产精品天美传媒| 天天躁日日躁AAA片李宗瑞| 日韩高清黄片| 亚洲 暴爽 AV人人爽日日碰| 亚洲做性| 曰本特级特黄特色黄色A级网站高清在线免费看| 九一亚洲国产免费| 综合熟女| 日韩午夜啪啪视频| 中国东北熟女老太婆内谢| 免费1级a做爰片观看| 男人女人18禁片免费看网站| 在线不欧美| 黄色工厂这里只有精品| 亚洲,欧美,综合网| 国产精品动态一区二区三区四四| 做爱福利视频一区二区| 97这里都是精品| 亚洲人在线| 久久精品视频久久久| 熟女人妻av在线资源,黄色的资源| 五月天婷婷色色| 91啪啪视频| 久/久精品99看9| 99色| 国产欧美日韩女同性恋ww喷水精品| www.zbzhongsen.com| 女人高潮大叫一级毛片| 中文一区在线视频| 国产超碰97| 九九热九九热| 欧日韩一二三f区| 一本大道久| 大茄子熟女AV导航| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 天天欧美色| 99国产精品人妻人伦| 精品久久99| 区二区亚洲婷| 少妇第一页|