精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

同步 vs 異步性能差十倍!SpringBoot 高吞吐接口實(shí)現(xiàn)終極方案

開發(fā)
服務(wù)端的異步或同步對(duì)于客戶端而言是不可見的。不會(huì)因?yàn)榉?wù)端使用了異步,接口的結(jié)果就和同步不一樣了。

Servlet 3.0之前:每一次Http請(qǐng)求都由一個(gè)線程從頭到尾處理。

Servlet 3.0之后,提供了異步處理請(qǐng)求:可以先釋放容器分配給請(qǐng)求的線程與相關(guān)資源,減輕系統(tǒng)負(fù)擔(dān),從而增加服務(wù)的吞吐量。

在springboot應(yīng)用中,可以有4種方式實(shí)現(xiàn)異步接口:

  • AsyncContext
  • Callable
  • WebAsyncTask
  • DeferredResult

第一中AsyncContext是Servlet層級(jí)的,比較原生的方式,本文不對(duì)此介紹(一般都不使用它,太麻煩了)。本文著重介紹后面三種方式。

特別說明:服務(wù)端的異步或同步對(duì)于客戶端而言是不可見的。不會(huì)因?yàn)榉?wù)端使用了異步,接口的結(jié)果就和同步不一樣了。另外,對(duì)于單個(gè)請(qǐng)求而言,使用異步接口會(huì)導(dǎo)致響應(yīng)時(shí)間比同步大,但不特別明顯。具體后文分析。

基于Callable實(shí)現(xiàn)

Controller中,返回一個(gè)java.util.concurrent.Callable包裝的任何值,都表示該接口是一個(gè)異步接口:

@GetMapping("/testCallAble")
public Callable<String> testCallAble() {
    return () -> {
        Thread.sleep(40000);
        return "hello";
    };
}

服務(wù)器端的異步處理對(duì)客戶端來說是不可見的。例如,上述接口,最終返回的客戶端的是一個(gè)String,和同步接口中,直接返回String的效果是一樣的。

Callable 處理過程如下:

  • 控制器返回一個(gè) Callable。
  • Spring MVC 調(diào)用 request.startAsync() 并將 Callable 提交給 AsyncTaskExecutor 以在單獨(dú)的線程中進(jìn)行處理。
  • 同時(shí), DispatcherServlet 和所有過濾器退出 Servlet 容器線程,但response保持打開狀態(tài)。
  • 最終 Callable 產(chǎn)生結(jié)果,Spring MVC將請(qǐng)求分派回Servlet容器以完成處理。
  • 再次調(diào)用 DispatcherServlet,并使用 Callable 異步生成的返回值繼續(xù)處理。

Callable默認(rèn)使用SimpleAsyncTaskExecutor類來執(zhí)行,這個(gè)類非常簡(jiǎn)單而且沒有重用線程。在實(shí)踐中,需要使用AsyncTaskExecutor類來對(duì)線程進(jìn)行配置。

基于WebAsyncTask實(shí)現(xiàn)

Spring提供的WebAsyncTask是對(duì)Callable的包裝,提供了更強(qiáng)大的功能,比如:處理超時(shí)回調(diào)、錯(cuò)誤回調(diào)、完成回調(diào)等。本質(zhì)上,和Callable區(qū)別不大,但是由于它額外封裝了一些事件的回調(diào),所有,通常都使用WebAsyncTask而不是Callable:

@GetMapping("/webAsyncTask")
public WebAsyncTask<String> webAsyncTask() {
    WebAsyncTask<String> result = new WebAsyncTask<>(30003, () -> {
        return "success";
    });
    result.onTimeout(() -> {
        log.info("timeout callback");
        return "timeout callback";
    });
    result.onCompletion(() -> log.info("finish callback"));
    return result;
}

這里額外提一下,WebAsyncTask可以配置一個(gè)超時(shí)時(shí)間,這里配置的超時(shí)時(shí)間比全局配置的超時(shí)時(shí)間優(yōu)先級(jí)都高(會(huì)覆蓋全局配置的超時(shí)時(shí)間)。

基于DeferredResult實(shí)現(xiàn)

DeferredResult使用方式與Callable類似,但在返回結(jié)果時(shí)不一樣,它返回的時(shí)實(shí)際結(jié)果可能沒有生成,實(shí)際的結(jié)果可能會(huì)在另外的線程里面設(shè)置到DeferredResult中去。

//定義一個(gè)全局的變量,用來存儲(chǔ)DeferredResult對(duì)象
private Map<String, DeferredResult<String>> deferredResultMap = new ConcurrentHashMap<>();

@GetMapping("/testDeferredResult")
public DeferredResult<String> testDeferredResult(){
    DeferredResult<String> deferredResult = new DeferredResult<>();
    deferredResultMap.put("test", deferredResult);
    return deferredResult;
}

如果調(diào)用以上接口,會(huì)發(fā)現(xiàn)客戶端的請(qǐng)求一直是在pending狀態(tài)——等待后端響應(yīng)。這里,我簡(jiǎn)單的將該接口返回的DeferredResult對(duì)象存放在了一個(gè)Map集合中,實(shí)際應(yīng)用中可以設(shè)計(jì)一個(gè)對(duì)象管理器來統(tǒng)一管理這些個(gè)對(duì)象。

注意:要考慮定時(shí)輪詢(或其他方式)這些對(duì)象,將已經(jīng)處理過或無效的DeferredResult對(duì)象清理掉(DeferredResult.isSetOrExpired方法可以判斷是否還有效),避免內(nèi)存泄露。

這里我又寫了一個(gè)接口,模擬:

@GetMapping("/testSetDeferredResult")
public String testSetDeferredResult() throws InterruptedException {
    DeferredResult<String> deferredResult = deferredResultMap.get("test");
    boolean flag = deferredResult.setResult("testSetDeferredResult");
    if(!flag){
        log.info("結(jié)果已經(jīng)被處理,此次操作無效");
    }
    return "ok";
}

其他線程修改DeferredResult的值:首先是從之前存放DeferredResult的map中拿到DeferredResult的值,然后設(shè)置它的返回值。當(dāng)執(zhí)行deferredResult.setResult之后,可以看到之前pending狀態(tài)的接口完成了響應(yīng),得到的結(jié)果,就是這里設(shè)置的值。

這里也額外說下:在返回DeferredResult時(shí)也可以設(shè)置超時(shí)時(shí)間,這個(gè)時(shí)間的優(yōu)先級(jí)也是大于全局設(shè)置的。另外,判斷DeferredResult是否有效,只是一個(gè)簡(jiǎn)單的判斷,實(shí)際中判斷有效的并不一定是有效的(比如:客戶端取消了請(qǐng)求,服務(wù)端是不知道的),但是一般判斷為無效的,那肯定是無效了。

DeferredResult 處理過程如下:

  • 控制器返回一個(gè) DeferredResult 并將其保存在可以訪問的內(nèi)存隊(duì)列或列表中。
  • Spring MVC 調(diào)用 request.startAsync() 。
  • 同時(shí),DispatcherServlet 和所有配置的過濾器退出請(qǐng)求處理線程,但響應(yīng)保持打開狀態(tài)。
  • 應(yīng)用程序從某個(gè)線程設(shè)置 DeferredResult,Spring MVC 將請(qǐng)求分派回 Servlet 容器。
  • 再次調(diào)用 DispatcherServlet,并使用異步生成的返回值繼續(xù)處理。

提供一個(gè)線程池

異步請(qǐng)求,不會(huì)一直占用請(qǐng)求的主線程(tomcat容器中處理請(qǐng)求的線程),而是通過一個(gè)其他的線程來處理異步任務(wù)。也正是如此,在相同的最大請(qǐng)求數(shù)配置下,異步請(qǐng)求由于迅速的釋放了主線程,所以才能提高吞吐量。

這里提到一個(gè)其他線程,那么這個(gè)其他線程我們一般都不適用默認(rèn)的,都是根據(jù)自身情況提供一個(gè)線程池供異步請(qǐng)求使用:(我給的參數(shù)都是測(cè)試用的,實(shí)際中不可照搬)

@Bean("mvcAsyncTaskExecutor")
public AsyncTaskExecutor asyncTaskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    // 線程池維護(hù)線程的最少數(shù)量
    // asyncServiceExecutor.setCorePoolSize(Runtime.getRuntime().availableProcessors() + 1);
    executor.setCorePoolSize(5);
    // 線程池維護(hù)線程的最大數(shù)量
    executor.setMaxPoolSize(10);
    // 線程池所使用的緩沖隊(duì)列
    executor.setQueueCapacity(10);
    //   asyncServiceExecutor.prefersShortLivedTasks();
    executor.setThreadNamePrefix("fyk-mvcAsyncTask-Thread-");
//      asyncServiceExecutor.setBeanName("TaskId" + taskId);
    //  asyncServiceExecutor.setKeepAliveSeconds(20);
    //調(diào)用者執(zhí)行
    //   asyncServiceExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
    executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
    // 線程全部結(jié)束才關(guān)閉線程池
    executor.setWaitForTasksToCompleteOnShutdown(true);
    // 如果超過60s還沒有銷毀就強(qiáng)制銷毀,以確保應(yīng)用最后能夠被關(guān)閉,而不是阻塞住
    executor.setAwaitTerminationSeconds(30);
    executor.initialize();

    return executor;
}

把這個(gè)線程池配置設(shè)置到異步請(qǐng)求配置中:

@Configuration
public class FykWebMvcConfigurer implements WebMvcConfigurer {

    @Autowired
    @Qualifier("mvcAsyncTaskExecutor")
    private AsyncTaskExecutor asyncTaskExecutor;

    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        //異步操作的超時(shí)時(shí)間,值為0或者更小,表示永不超時(shí)
        configurer.setDefaultTimeout(60001);
        configurer.setTaskExecutor(asyncTaskExecutor);
    }
}

什么時(shí)候使用異步請(qǐng)求

異步請(qǐng)求能提高吞吐量,這個(gè)是建立在相同配置(這里的配置指的是:最大連接數(shù)、最大工作線程數(shù))的情況下。因此并不是說任何接口都可以使用異步請(qǐng)求。

比如:一個(gè)請(qǐng)求是進(jìn)行大量的計(jì)算(總之就是在處理這個(gè)請(qǐng)求的業(yè)務(wù)方法時(shí)CPU是沒有休息的),這種情況使用異步請(qǐng)求就沒有多大意義了,因?yàn)檫@時(shí)的異步請(qǐng)求只是把一個(gè)任務(wù)從tomcat的工作線程搬到了另一個(gè)線程罷了。直接調(diào)大最大工作線程數(shù)配置也能到達(dá)要求。

所以,真正使用異步請(qǐng)求的場(chǎng)景應(yīng)該是該請(qǐng)求的業(yè)務(wù)代碼中,大量的時(shí)間CPU是休息的(比如:在業(yè)務(wù)代碼中請(qǐng)求其他系統(tǒng)的接口,在其他系統(tǒng)響應(yīng)之前,CPU是阻塞等待的),這個(gè)時(shí)候使用異步請(qǐng)求,就可以釋放tomcat的工作線程,讓釋放的工作線程可以處理其他的請(qǐng)求,從而提高吞吐量。

由于異步請(qǐng)求增加了更多的線程切換(同步請(qǐng)求是同一個(gè)工作線程一直處理),所以理論上會(huì)增加接口的耗時(shí)。但,這個(gè)耗時(shí)很短很短。

責(zé)任編輯:趙寧寧 來源: 程序員小富
相關(guān)推薦

2025-07-18 09:40:44

2024-09-12 15:24:29

2024-09-09 14:12:38

2025-03-13 11:59:00

2025-06-05 04:22:00

SQL性能索引

2025-05-26 00:02:00

TypeScriptGo 語(yǔ)言前端

2023-09-07 11:29:36

API開發(fā)

2024-10-09 11:31:51

2009-12-15 21:49:05

2025-10-10 05:56:11

2025-07-08 09:33:08

2017-09-26 14:56:57

MongoDBLBS服務(wù)性能

2022-09-15 16:59:46

人工智能空調(diào)能源

2016-07-07 15:38:07

京東

2022-04-28 07:31:41

Springkafka數(shù)據(jù)量

2021-04-13 14:25:41

架構(gòu)運(yùn)維技術(shù)

2009-11-19 08:46:16

Windows 7系統(tǒng)驅(qū)動(dòng)

2025-08-12 07:46:29

2021-09-13 10:25:35

開發(fā)技能代碼

2025-06-05 03:00:00

Spring異步接口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品一区二区三区自拍图片区| 色吧影院999| 欧美午夜性视频| 秋霞欧美在线观看| 久久亚洲综合| 亚洲图片在线综合| 中文字幕 91| 2024最新电影在线免费观看| 成人丝袜视频网| 456国产精品| 欧美另类z0zx974| 99精品视频在线免费播放| 亚洲精品免费视频| 精品一区二区三区日本| 岳乳丰满一区二区三区| 欧美激情在线| 亚洲人成电影在线| 欧美日韩精品区别| 18aaaa精品欧美大片h| www.激情成人| 国产精品视频区| 日韩欧美在线观看强乱免费| 亚洲黄网在线观看| 一区二区蜜桃| 精品调教chinesegay| 另类小说色综合| 午夜精品久久久久久久99热黄桃| 亚洲视频播放| 久久精品中文字幕免费mv| 午夜激情影院在线观看| 99爱在线观看| 国产精品久久久久久久久免费桃花 | 国产亚洲视频系列| 成人免费观看网站| 中文在线最新版天堂| 在线成人av| 超在线视频97| 久久午夜福利电影| 精品国产亚洲一区二区三区在线| 色综合天天天天做夜夜夜夜做| 亚洲视频在线观看日本a| 亚洲 欧美 自拍偷拍| 精品一区二区三区香蕉蜜桃| 欧洲亚洲免费视频| 精品亚洲永久免费| 久久精品青草| 欧洲亚洲精品在线| www.好吊操| √新版天堂资源在线资源| 9l国产精品久久久久麻豆| 亚洲综合小说区| 中文字幕男人天堂| 美女被久久久| 3344国产精品免费看| 九九久久免费视频| 91精品啪在线观看国产18| 一区二区三区视频观看| 91久久免费视频| 美女毛片一区二区三区四区| 精品亚洲精品福利线在观看| 天堂va欧美va亚洲va老司机| 深夜福利亚洲| 欧美日韩黄色一区二区| 黄色一级片在线看| 欧美另类tv| 一区二区三区四区不卡在线| 干日本少妇视频| 搞黄网站在线观看| 亚洲欧美欧美一区二区三区| 欧美aaa在线观看| av免费在线一区二区三区| 久久久www成人免费毛片麻豆| 噜噜噜噜噜久久久久久91| 日本黄色一区二区三区| 成人福利在线看| 精品无人乱码一区二区三区的优势| 国产极品久久久| 国产传媒一区在线| 国产视频精品网| 色呦呦免费观看| 91热门视频在线观看| 欧美精品一区二区三区在线看午夜| 清纯唯美亚洲色图| 国产精品无码永久免费888| 亚洲一卡二卡三卡| 毛片免费不卡| 亚洲成av人片一区二区梦乃| 伊人网在线免费| 国产亚av手机在线观看| 精品日韩美女的视频高清| 国产淫片免费看| 在线看欧美视频| 欧美精品 国产精品| 女同性αv亚洲女同志| 日韩精品欧美大片| 亚洲精品不卡在线| 波多野吉衣中文字幕| 精品日韩欧美一区| 欧美成人免费播放| 成人精品在线看| 美女性感视频久久| 91黄色精品| 深夜福利在线观看直播| 石原莉奈一区二区三区在线观看| 国产97在线视频| 成人小说亚洲一区二区三区| 国产女主播在线一区二区| 中文字幕日韩精品无码内射| 午夜精品成人av| 欧美成人乱码一区二区三区| 国产毛片欧美毛片久久久| 国产专区一区| 国产日韩欧美视频| 六十路在线观看| 26uuu色噜噜精品一区二区| 婷婷视频在线播放| 欧美成人精品三级网站| 亚洲国产成人精品电影| 波多野结衣家庭教师| 日韩av中文在线观看| 精品国产一区二区三区日日嗨| mm1313亚洲国产精品美女| 91久久精品午夜一区二区| 日本五十肥熟交尾| 欧美日韩视频| 92看片淫黄大片欧美看国产片| 国产小视频在线播放| 精品国产乱码久久久久久天美| 欧美在线a视频| 91日韩视频| 国产精品久久久久久亚洲调教| 四虎成人免费在线| 亚洲va国产va欧美va观看| 麻豆精品国产传媒| 欧美va天堂在线| 亚洲伊人成综合成人网| 老司机在线永久免费观看| 在线一区二区三区四区| 欧美丰满少妇人妻精品| 国产精品久久久久9999高清| 国产在线一区二区三区四区| 操喷在线视频| 亚洲成人网av| 好吊操这里只有精品| 成人激情免费网站| 91免费黄视频| 麻豆一区二区麻豆免费观看| 国外成人在线直播| 天天操天天干天天干| 精品国产乱码久久久久酒店| 波多野结衣福利| 亚洲专区免费| 日本欧洲国产一区二区| 成人精品电影在线| 中文字幕久精品免费视频| 夜夜嗨av禁果av粉嫩avhd| 中文字幕在线观看不卡| 国产三级精品三级在线| 中文字幕乱码亚洲无线精品一区| 亚洲r级在线观看| 免费在线中文字幕| 亚洲国产精久久久久久 | 91亚洲精品一区| www男人的天堂| 伊人性伊人情综合网| 欧美性生交xxxxx| 在线综合亚洲| 日韩一本精品| 高清一区二区| 国内免费久久久久久久久久久| 日本在线视频1区| 欧美亚洲国产bt| 国产在线一卡二卡| 91亚洲精品久久久蜜桃| 免费激情视频在线观看| 天天射天天综合网| 国产欧美日韩综合一区在线观看| 成人直播视频| 日韩视频中文字幕| 亚洲美女福利视频| 色综合久久久久综合体| 男人天堂资源网| 国产成人综合视频| 已婚少妇美妙人妻系列| 久久视频在线| 精品在线视频一区二区| 天天综合av| 在线看欧美日韩| 亚洲av无码一区二区乱子伦| 一本一本大道香蕉久在线精品 | 亚欧色一区w666天堂| 玖玖爱在线观看| 久久国产精品无码网站| 天堂8在线天堂资源bt| 精品一区欧美| 91视频婷婷| 日本精品网站| 久久久久久中文| 日本美女在线中文版| 亚洲精品成人免费| 97人人爽人人爽人人爽| 日韩欧美中文免费| 99热精品免费| 亚洲国产精品ⅴa在线观看| 俄罗斯黄色录像| 久国产精品韩国三级视频| 国产男女无遮挡| 国产一区二区中文| 水蜜桃一区二区三区| 加勒比中文字幕精品| 成人久久久久久| 最新欧美电影| 91国内精品久久| 91中文在线| 中文字幕一区二区精品| 四虎国产精品永远| 精品国产精品一区二区夜夜嗨| 夜夜嗨av禁果av粉嫩avhd| 欧美视频在线观看免费网址| 九九九久久久久| 国产精品黄色在线观看| 黄色aaa视频| 99久久免费精品高清特色大片| 99视频在线观看视频| 日韩成人一区二区| 九色在线视频观看| 亚洲婷婷免费| 男人添女人下部视频免费| 日韩av密桃| 欧美日韩电影一区二区| 欧美一级一片| 国产高清自拍一区| 91麻豆精品激情在线观看最新| 国产有码在线一区二区视频| 精品欧美一区二区三区在线观看 | 中文字幕亚洲欧美在线| 欧美日韩在线精品一区二区三区激情综| 日韩欧美一级精品久久| 国产孕妇孕交大片孕| 欧美日韩视频在线一区二区| 亚洲 小说区 图片区| 日本高清视频一区二区| 天天操夜夜操视频| 欧美视频国产精品| 99精品人妻国产毛片| 色悠悠久久综合| 无码人妻精品一区二区50| 欧美视频在线观看免费| 日本a级c片免费看三区| 91久久免费观看| 欧美 亚洲 另类 激情 另类| 日本福利一区二区| 伊人久久中文字幕| 欧美男人的天堂一二区| 国产精品亚洲lv粉色| 69堂成人精品免费视频| 国产男女裸体做爰爽爽| 日韩三级视频在线看| 亚洲精品一区二区三区区别| 精品卡一卡二卡三卡四在线| 少妇av在线播放| 亚洲欧美激情精品一区二区| 精品视频三区| 中文字幕日韩精品在线| 免费大片黄在线观看视频网站| 久久亚洲综合国产精品99麻豆精品福利 | 日韩资源在线观看| а√资源新版在线天堂| 久久免费成人精品视频| 欧美私密网站| 国产精品久久精品| crdy在线观看欧美| 国产高清一区视频| 综合亚洲自拍| 在线观看免费黄色片| 亚洲香蕉网站| 日韩av播放器| 国产老女人精品毛片久久| 久久国产劲爆∧v内射| 久久久久久久综合狠狠综合| 国产一级久久久久毛片精品| 亚洲日本护士毛茸茸| 国产第100页| 日本韩国欧美三级| 性一交一乱一精一晶| 亚洲人成网站免费播放| 国产三级在线播放| 91av视频在线播放| 中文成人在线| 久久伊人资源站| 66国产精品| 成人在线观看a| 国产高清视频一区| 中文字幕免费视频| 亚洲欧美日韩国产手机在线| 国产精品视频久久久久久久| 欧美日韩一二区| 视频一区 中文字幕| 日韩中文字幕视频在线观看| 蜜桃视频www网站在线观看| 成人激情在线播放| 蜜桃精品wwwmitaows| 国产片侵犯亲女视频播放| 日本亚洲欧美天堂免费| 男男做爰猛烈叫床爽爽小说 | 欧美一区二区三区综合| 日本免费在线视频不卡一不卡二| av在线播放网址| 亚洲你懂的在线视频| 国产成人av免费| 亚洲黄色在线看| 牛牛电影国产一区二区| 91精品久久久久久久久久| 中文字幕av一区二区三区人| 久久综合久久网| 国产麻豆精品久久一二三| 日韩一区二区a片免费观看| 五月天久久比比资源色| www.久久综合| 久久九九有精品国产23| 蜜桃视频成人m3u8| 欧美高清性xxxxhd | 亚洲少妇30p| 真实的国产乱xxxx在线91| 亚洲精品国产电影| 大香伊人中文字幕精品| 成人动漫视频在线观看免费| 国产电影一区二区在线观看| 丁香婷婷激情网| 国产三级一区二区三区| 免费日韩一级片| 亚洲福利视频免费观看| 999福利在线视频| 国产精品我不卡| 最新日韩av| 亚洲欧美日韩偷拍| 五月激情丁香一区二区三区| 好吊色一区二区三区| 欧美日本精品在线| 亚洲精品一区二区三区在线| 中文字幕第50页| 国产精品1区2区| 久久久久97国产| 精品少妇一区二区三区| 色呦呦网站在线观看| 99久久精品无码一区二区毛片 | 无套内谢的新婚少妇国语播放| 欧美激情性做爰免费视频| 97se亚洲国产一区二区三区| 日本黄色片一级片| av电影在线观看完整版一区二区| 在线观看精品国产| 亚洲欧洲在线观看| 成人国产精品入口免费视频| 一区二区不卡视频| 国产美女娇喘av呻吟久久| 日韩一区二区三区四区在线| 精品日韩一区二区| 岛国在线视频网站| 欧美在线3区| 蜜桃视频一区二区| 性色av无码久久一区二区三区| 欧美一区二区三区喷汁尤物| 男女免费观看在线爽爽爽视频| 久久av二区| 热久久国产精品| 亚洲熟女www一区二区三区| 精品日产卡一卡二卡麻豆| 男人天堂视频在线观看| 欧美二区在线看| 久久国产精品色婷婷| 国产在线观看你懂的| 日韩电影在线观看永久视频免费网站| 在线成人av观看| 一级做a爰片久久| 成人久久18免费网站麻豆| 国产成人精品网| 日韩网站免费观看| 久久97精品| 欧美成人黄色网址| 亚洲福利一区二区| youjizz在线播放| 91香蕉视频在线下载| 免费永久网站黄欧美| 国产麻豆a毛片| 亚洲国产精品成人va在线观看| 神马久久资源| japanese在线播放| 久久品道一品道久久精品| 国产精品伦一区二区三区| 欧美综合第一页| 一级欧洲+日本+国产| 日本少妇高潮喷水xxxxxxx| 日韩午夜在线播放| 高清电影一区| 日韩黄色短视频| **性色生活片久久毛片| 午夜视频福利在线| 91沈先生播放一区二区| 日本vs亚洲vs韩国一区三区 |