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

如何調用一個只支持batch_call的服務?

開發 后端
如果非得使用同步調用的方式進行調用,建議模仿Nagle算法的形式,攢一批數據再發起請求,這樣既可以增大batch,同時減少并發,真·一舉兩得,親測有效。

我們先來說下標題是什么意思。

為了更好的理解我說的是啥,我們來舉個例子。

假設你現在在做一個類似B站的系統,里面放了各種視頻。

圖片

用戶每天在里頭上傳各種視頻。

按理說每個視頻都要去審查一下有沒有搞顏色,但總不能人眼挨個看吧。

畢竟唐老哥表示這玩意看多了,看太陽都是綠色的,所以會有專門訓練過的算法服務去做檢測。

但也不能上來就整個視頻每一幀都拿去做審查吧,所以會在每個視頻里根據時長和視頻類型隨機抽出好幾張圖片去做審查,比如視頻標簽是美女的,算法愛看,那多抽幾張。標簽是編程的,狗都不看,就少抽幾張。

將這些抽出來的圖片,送去審查。

為了實現這個功能,我們會以視頻為維度去做審核,而每個視頻里都會有N張數量不定的圖片,下游服務是個使用GPU去檢測圖片的算法服務。

現在問題來了,下游服務的算法開發告訴你,這些個下游服務,它不支持很高的并發,但請求傳參里給你加了個數組,你可以批量(batch)傳入一個比較大的圖片數組,通過這個方式可以提升點圖片處理量。

于是,我們的場景就變成。

上游服務的入參是一個視頻和它的N張圖片,出參是這個視頻是否審核通過。

下游服務的入參是N張圖片的,出參是這個視頻是否審核通過。

圖片batch_call上下游

現在我們想要用上游服務接入下游服務。該怎么辦?

看上去挺好辦的,一把梭不就完事了嗎?

當一個視頻進來,就拿著視頻的十多張圖片作為一個batch去進行調用。

有幾個視頻進來,就開幾個這樣的并發。

這么做的結果就是,當并發大一點時,你會發現性能很差,并且性能非常不穩定,比如像下面的監控圖一樣一會3qps,一會15qps。處理的圖片也只支持20qps左右。

狗看了都得搖頭。

圖片

圖1-直接調用時qps很低

圖片

這可如何是好?

為什么下游需要batch call

本著先問是不是,再問為什么的精神,我們先看看為啥下游的要求會如此別致。

為什么同樣都是處理多張圖片,下游不搞成支持并發而要搞成批量調用(batch call)?

這個設定有點奇怪?

其實不奇怪,在算法服務中甚至很常見,舉個例子你就明白了。

同樣是處理多張圖片,為了簡單,我就假設是三張吧。如果是用單個cpu去處理的話。那不管是并發還是batch進來,由于cpu內部的計算單元有限,所以你可以簡單理解為,這三張圖片,就是串行去計算的。

圖片

cpu處理圖片時的流程

我計算第一張圖片是否能審核通過,跟第二張圖片是否能審核通過,這兩者沒有邏輯關聯,因此按道理兩張圖片是可以并行計算。

奈何我CPU計算單元有限啊,做不到啊。

但是。

如果我打破計算單元有限的這個條件,給CPU加入超多計算單元,并且弱化一些對于計算沒啥用處的組件,比如cache和控制單元。那我們就有足夠的算力可以讓這些圖片的計算并行起來了。

圖片

并行處理圖片

是的,把CPU這么一整,它其實就變成了GPU。

圖片

GPU和CPU的區別

上面的講解只是為了方便理解,實際上,gpu會以更細的粒度去做并發計算,比如可以細到圖片里的像素級別。

這也是為什么如果我們跑一些3d游戲的時候,需要用到顯卡,因為它可以快速的并行計算畫面里每個地方的光影,遠近效果啥的,然后渲染出畫面。

回到為什么要搞成batch call的問題中。

其實一次算法服務調用中,在數據真正進入GPU前,其實也使用了CPU做一些前置處理。

因此,我們可以簡單的將一次調用的時間理解成做了下面這些事情。

圖片

GPU處理圖片時的流程

服務由CPU邏輯和GPU處理邏輯組成,調用進入服務后,會有一些前置邏輯,它需要CPU來完成,然后才使用GPU去進行并行計算,將結果返回后又有一些后置的CPU處理邏輯。中間的GPU部分,管是計算1張圖,還是計算100張圖,只要算力支持,那它們都是并行計算的,耗時都差不多。

如果把這多張圖片拆開,并發去調用這個算法服務,那就有 N組這樣的CPU+GPU的消耗,而中間的并行計算,其實沒有利用到位。

并且還會多了前置和后置的CPU邏輯部分,算法服務一般都是python服務,主流的一些web框架幾乎都是以多進程,而不是多線程的方式去處理外部請求,這就有可能導致額外的進程間切換消耗。

當并發的請求多了,請求處理不過來,后邊來的請求就需要等前邊的處理完才能被處理,后面的請求耗時看起來就會變得特別大。這也是上面圖1里,接口延時(latency)像過山車那樣往上漲的原因。

圖片

還是上面的圖1的截圖,一張圖用兩次哈哈

按理說減少并發,增大每次調用時的圖片數量,就可以解決這個問題。

這就是推薦batch call的原因。

但問題又來了。

每次調用,上游服務輸入的是一個視頻以及它的幾張圖片,調用下游時,batch的數量按道理就只能是這幾張圖片的數量,怎么才能增大batch的數量呢?

這里的調用,就需要分為同步調用和異步調用了。

同步調用和異步調用的區別

同步調用,意思是上游發起請求后,阻塞等待,下游處理邏輯后返回結果給上游。常見的形式就像我們平時做的http調用一樣。

圖片同步調用

異步調用,意思是上游發起請求后立馬返回,下游收到消息后慢慢處理,處理完之后再通過某個形式通知上游。常見的形式是使用消息隊列,也就是mq。將消息發給mq后,下游消費mq消息,觸發處理邏輯,然后再把處理結果發到mq,上游消費mq的結果。

圖片

異步調用

異步調用的形式接入

圖片

異步調用的實現方式

回到我們文章開頭提到的例子,當上游服務收到一個請求(一個視頻和它對應的圖片),這時候上游服務作為生產者將這個數據寫入到mq中,請求返回。然后新造一個C服務,負責批量消費mq里的消息。這時候服務C就可以根據下游服務的性能控制自己的消費速度,比如一次性消費10條數據(視頻),每個數據下面掛了10個圖片,那我一次batch的圖片數量就是10*10=100張,原來的10次請求就變為了1次請求。這對下游就相當的友好了。

下游返回結果后,服務C將結果寫入到mq的另外一個topic下,由上游去做消費,這樣就結束了整個調用流程。

當然上面的方案,如果你把mq換成數據庫,一樣是ok的,這時候服務C就可以不斷的定時輪詢數據庫表,看下哪些請求沒處理,把沒處理的請求批量撈出來再batch call下游。不管是mq還是數據庫,它們的作用無非就是作為中轉,暫存數據,讓服務C根據下游的消費能力,去消費這些數據。

這樣不管后續要加入多少個新服務,它們都可以在原來的基礎上做擴展,如果是mq,加topic,如果是數據庫,則加數據表,每個新服務都可以根據自己的消費能力去調整消費速度。

圖片

mq串聯多個不同性能的服務

其實對于這種上下游服務處理性能不一致的場景,最適合用的就是異步調用。而且涉及到的服務性能差距越大,服務個數越多,這個方案的優勢就越明顯。

同步調用的方式接入

雖然異步調用在這種場景下的優勢很明顯,但也有個缺點,就是它需要最上游的調用方能接受用異步的方式去消費結果。其實涉及到算法的服務調用鏈,都是比較耗時的,用異步接口非常合理。但合理歸合理,有些最上游他不一定聽你的,就是不能接受異步調用。

這就需要采用同步調用的方案,但怎么才能把同步接口改造得更適合這種調用場景,這也是這篇文章的重點。

限流

如果直接將請求打到下游算法服務,下游根本吃不消,因此首先需要做的就是給在上游調用下游的地方,加入一個速率限制(rate limit)。

這樣的組件一般也不需要你自己寫,幾乎任何一個語言里都會有現成的。

比如golang里可以用golang.org/x/time/rate庫,它其實是用令牌桶算法實現的限流器。如果不知道令牌桶是啥也沒關系,不影響理解。

圖片

限流器邏輯

當然,這個限制的是當前這個服務調用下游的qps,也就是所謂的單節點限流。如果是多個服務的話,網上也有不少現成的分布式限流框架。但是,還是那句話,夠用就好。

限流只能保證下游算法服務不被壓垮,并不能提升單次調用batch的圖片數量,有沒有什么辦法可以解決這個問題呢?

參考Nagle算法的做法

我們熟悉的TCP協議里,有個算法叫Nagle算法,設計它的目的,就是為了避免一次傳過少數據,提高數據包的有效數據負載。

當我們想要發送一些數據包時,數據包會被放入到一個緩沖區中,不立刻發送,那什么時候會發送呢?

數據包會在以下兩個情況被發送:

  • 緩沖區的數據包長度達到某個長度(MSS)時。
  • 或者等待超時(一般為200ms)。在超時之前,來的那么多個數據包,就是湊不齊MSS長度,現在超時了,不等了,立即發送。

這個思路就非常值得我們參考。我們完全可以自己在代碼層實現一波,實現也非常簡單。

1.我們定義一個帶鎖的全局隊列(鏈表)。

2.當上游服務輸入一個視頻和它對應的N張圖片時,就加鎖將這N張圖片數據和一個用來存放返回結果的結構體放入到全局隊列中。然后死循環讀這個結構體,直到它有結果。就有點像阻塞等待了。

3.同時在服務啟動時就起一個線程A專門用于收集這個全局隊列的圖片數據。線程A負責發起調用下游服務的請求,但只有在下面兩個情況下會發起請求

  • 當收集的圖片數量達到xx張的時候
  • 距離上次發起請求過了xx毫秒(超時)

4.調用下游結束后,再根據一開始傳入的數據,將調用結果拆開來,送回到剛剛提到的用于存放結果的結構體中。

5.第2步里的死循環因為存放返回結果的結構體,有值了,就可以跳出死循環,繼續執行后面的邏輯。

圖片

batch_call同步調用改造

這就像公交車站一樣,公交車站不可能每來一個顧客就發一輛公交車,當然是希望車里顧客越多越好。上游每來一個請求,就把請求里的圖片,也就是乘客,塞到公交車里,公交車要么到點發車(向下游服務發起請求),要么車滿了,也沒必要等了,直接發車。這樣就保證了每次發車的時候公交車里的顧客數量足夠多,發車的次數盡量少。

大體思路就跟上面一樣,如果是用go來實現的話,就會更加簡單。

比如第1步里的加鎖全局隊列可以改成有緩沖長度的channel。第2步里的"用來存放結果的結構體",也可以改成另一個無緩沖channel。執行 res := <-ch, 就可以做到阻塞等待的效果。

而核心的仿Nagle的代碼也大概長下面這樣。當然不看也沒關系,反正你已經知道思路了。

func CallAPI() error {
size := 100
// 這個數組用于收集視頻里的圖片,每個 IVideoInfo 下都有N張圖片
videoInfos := make([]IVideoInfo, 0, size)
// 設置一個200ms定時器
tick := time.NewTicker(200 * time.Microsecond)
defer tick.Stop()
// 死循環
for {
select {
// 由于定時器,每200ms,都會執行到這一行
case <-tick.C:
if len(videoInfos) > 0 {
// 200ms超時,去請求下游
limitStartFunc(videoInfos, true)
// 請求結束后把之前收集的數據清空,重新開始收集。
videoInfos = make([]IVideoInfo, 0, size)
}
// AddChan就是所謂的全局隊列
case videoInfo, ok := <-AddChan:
if !ok {
// 通道關閉時,如果還有數據沒有去發起請求,就請求一波下游服務
limitStartFunc(videoInfos, false)
videoInfos = make([]IVideoInfo, 0, size)
return nil
} else {
videoInfos = append(videoInfos, videoInfo)
if videoInfos 內的圖片滿足xx數量 {
limitStartFunc(videoInfos, false)
videoInfos = make([]IVideoInfo, 0, size)
// 重置定時器
tick.Reset(200 * time.Microsecond)
}
}
}
}
return nil
}

通過這一操作,上游每來一個請求,都會將視頻里的圖片收集起來,堆到一定張數的時候再統一請求,大大提升了每次batch call的圖片數量,同時也減少了調用下游服務的次數。真·一舉兩得。

優化的效果也比較明顯,上游服務支持的qps從原來不穩定的3q~15q變成穩定的90q。下游的接口耗時也變得穩定多了,從原來的過山車似的飆到15s變成穩定的500ms左右。處理的圖片的速度也從原來20qps提升到350qps。

到這里就已經大大超過業務需求的預期(40qps)了,夠用就好,多一個qps都是浪費。

可以了,下班吧。

圖片

圖片

總結

  • 為了充分利用GPU并行計算的能力,不少算法服務會希望上游通過加大batch的同時減少并發的方式進行接口調用。
  • 對于上下游性能差距明顯的服務,建議配合mq采用異步調用的方式將服務串聯起來。
  • 如果非得使用同步調用的方式進行調用,建議模仿Nagle算法的形式,攢一批數據再發起請求,這樣既可以增大batch,同時減少并發,真·一舉兩得,親測有效。

最后

講了那么多可以提升性能的方式,現在需求來了,如果你資源充足,但時間不充足,那還是直接同步調用一把梭吧。

性能不夠?下游加機器,gpu卡,買!

然后下個季度再提起一個技術優化,性能提升xx%,cpu,gpu減少xx%。

有沒有聞到?

這是KPI的味道。

責任編輯:武曉燕 來源: 小白debug
相關推薦

2024-03-15 15:20:10

并發服務IP

2014-04-14 15:54:00

print()Web服務器

2017-11-13 13:33:09

MySQL全備份恢復表

2022-04-06 08:47:03

Dubbo服務協議

2013-08-15 10:00:07

產品產品經理優秀的產品

2009-06-26 15:48:23

Windows Mob

2022-09-13 08:01:58

短鏈服務哈希算法字符串

2021-05-20 13:22:31

架構運維技術

2025-05-20 08:00:00

鏈式調用異步

2015-10-10 11:09:48

NFVNFVI網絡虛擬化

2022-11-08 08:35:53

架構微服務移動

2017-04-11 16:16:48

HTTPS互聯網服務端

2022-05-22 13:55:30

Go 語言

2021-07-28 14:59:08

鴻蒙HarmonyOS應用

2024-05-24 08:31:49

服務器聯網SSH

2025-02-11 08:20:00

DeepseekAIOPS人工智能

2021-04-26 18:13:37

微服務模式數據庫

2010-07-22 12:15:59

Batch Telne

2019-11-13 14:00:48

Java架構微服務

2023-09-11 10:53:32

點贊
收藏

51CTO技術棧公眾號

国产精品资源在线观看| 一区二区三区四区日本视频| 精品一区二区三区在线观看| 欧美理论电影在线播放| 三级视频网站在线观看| 经典三级一区二区| 亚洲激情网站免费观看| 九九九九精品九九九九| 亚洲特级黄色片| 在线免费高清一区二区三区| 一本色道久久综合狠狠躁篇的优点| 91视频这里只有精品| 欧产日产国产精品视频| 国产精品女主播在线观看| 国产欧美一区二区三区另类精品| 国产情侣小视频| 在线成人av| 日韩天堂在线视频| 欧美深性狂猛ⅹxxx深喉| 国产高清亚洲| 欧洲精品一区二区三区在线观看| 免费视频爱爱太爽了| 在线观看麻豆蜜桃| 91在线小视频| 91精品国产91久久久久青草| 免费一级a毛片| 亚洲国产高清视频| 久久亚洲精品一区| 精品成人无码一区二区三区| 卡通动漫精品一区二区三区| 欧美日韩第一区日日骚| 50路60路老熟妇啪啪| 中文字幕在线播放网址| 中文字幕成人av| 久久综合一区| 欧美熟妇交换久久久久久分类| 久久国产生活片100| 国产成人自拍视频在线观看| 中文字幕激情小说| 99国产精品99久久久久久粉嫩| 欧美成人精品一区二区三区| 国产成人自拍网站| 五月开心六月丁香综合色啪| 日韩在线欧美在线| 日韩欧美视频免费观看| av永久不卡| 伊人久久精品视频| 欧美亚洲色综久久精品国产| 国产成人精品三级高清久久91| 日韩成人在线网站| 国产麻豆天美果冻无码视频 | 成人在线免费观看网站| 亚洲精品视频二区| 欧美亚一区二区三区| 色吊丝一区二区| 亚洲欧美精品一区二区| 色婷婷在线影院| 国产一区二区精品福利地址| 尤物yw午夜国产精品视频明星| 先锋影音av在线| 国产一区二区观看| 影音先锋欧美精品| 少妇高潮一69aⅹ| 激情久久免费视频| 欧美一区二区三区系列电影| 欧美一级视频在线| 在线视频成人| 91精品国产综合久久久蜜臀图片| 一区二区三区人妻| 一本色道69色精品综合久久| 日韩一区二区精品在线观看| 国产黑丝在线视频| 日本免费一区二区视频| 日韩亚洲欧美高清| 手机在线播放av| 永久免费精品视频| 亚洲成年人在线| 日韩精品人妻中文字幕有码| 噜噜噜狠狠夜夜躁精品仙踪林| 欧美不卡视频一区| 无码人妻精品一区二区三区99不卡| 成人h动漫免费观看网站| 亚洲国产三级网| 亚洲一级在线播放| 国内精品久久久久久久97牛牛| 操91在线视频| 国产精品99re| 国产亚洲成人一区| 国产成人精彩在线视频九色| а中文在线天堂| 精品午夜久久福利影院| 91精品免费| 人妻一区二区三区免费| av成人免费在线观看| 欧美一区二区三区四区夜夜大片 | 国产一级片免费观看| 亚洲免费大片| 国产精品成av人在线视午夜片| 91tv国产成人福利| 成人一区二区三区视频 | xvideos.蜜桃一区二区| 日韩免费成人网| 国产美女永久免费无遮挡| 亚洲欧美网站在线观看| 97视频在线观看播放| 国产精品高清无码| 成人午夜伦理影院| 日本一区二区精品| 青青在线视频| 色噜噜久久综合| 91欧美一区二区三区| 日本欧美高清| 久久综合久久八八| 九九视频免费看| 另类调教123区 | 久久综合久久八八| a v视频在线观看| 久久精品久久久精品美女| 国产伦精品一区二区三区视频免费| 精品999视频| 亚洲精品一二三| 91网址在线播放| 9l亚洲国产成人精品一区二三| 亚洲午夜未删减在线观看| 国产精品九九九九九九| 精品一区二区三区香蕉蜜桃| 蜜桃传媒视频麻豆一区| 99自拍视频在线观看| 色香色香欲天天天影视综合网| 婷婷激情综合五月天| 中文有码一区| 性欧美暴力猛交69hd| 国产精品国产三级国产普通话对白| 91在线porny国产在线看| 亚洲AV无码成人精品一区| 最新日韩精品| 亚洲国产欧美自拍| 深夜福利影院在线观看| 久久精品999| 日韩高清dvd| 大胆人体一区二区| 日韩不卡在线观看| 好吊视频一区二区三区四区| 国产福利精品av综合导导航| 国产www视频| 国产日韩v精品一区二区| xxxx18hd亚洲hd捆绑| 国内不卡的一区二区三区中文字幕 | 久久精品噜噜噜成人av农村| 玛丽玛丽电影原版免费观看1977| 美女91在线| 337p亚洲精品色噜噜| 网站免费在线观看| 亚洲人体偷拍| 国产无套精品一区二区| 超碰在线资源| 精品免费99久久| 日本黄色小说视频| 国产黄色精品视频| 国产女人18毛片| 欧洲精品99毛片免费高清观看| 日韩一区二区久久久| 美女黄页在线观看| 国产欧美久久久精品影院| 久久婷婷国产精品| 欧美女优在线视频| 热99在线视频| 国产三级在线免费观看| 在线亚洲+欧美+日本专区| 亚洲精品乱码久久久久久久久久久久| 国产日韩免费| 欧美二区在线| 美女一区网站| 国产一区二区三区四区福利| 亚洲视频一区在线播放| 亚洲欧洲中文日韩久久av乱码| 三级黄色片免费观看| 欧美影视一区| 国产精品自拍首页| а√天堂资源官网在线资源| 国产丝袜一区视频在线观看| 免费看污视频的网站| 中文在线一区二区| 日本中文字幕精品—区二区| 91亚洲成人| 亚洲一区二区三区乱码aⅴ蜜桃女| 伊人手机在线| 欧美va亚洲va| 国产午夜免费福利| 国产日韩高清在线| 欧洲熟妇的性久久久久久| 国产精品综合色区在线观看| 日韩欧美在线电影| 国产精品欧美一区二区三区不卡| 久久久久中文字幕2018| 全部免费毛片在线播放网站| 欧美三级韩国三级日本一级| 亚洲av无码一区二区三区在线| 成人av在线观| 日韩av在线中文| 亚洲二区免费| 在线播放豆国产99亚洲| 豆花视频一区二区| 国产九九精品视频| av今日在线| 日韩中文字幕在线免费观看| 色婷婷av一区二区三| 欧美欧美欧美欧美| 亚洲视频免费播放| 中文字幕一区二区视频| 超碰男人的天堂| 紧缚捆绑精品一区二区| 日本少妇高潮喷水视频| 亚洲精品91| 日韩三级电影| 九九热hot精品视频在线播放 | 久久久www成人免费毛片| av在线这里只有精品| 日韩中文字幕a| 亚洲综合好骚| 特级西西人体www高清大胆| 你微笑时很美电视剧整集高清不卡| 亚洲自拍偷拍福利| 超碰这里只有精品| 欧美在线观看网站| 免费在线观看的电影网站| 日韩精品免费在线视频观看| 性一交一乱一伧老太| 欧美日韩一级视频| 国产黄色片免费看| 亚洲一区二区在线观看视频| 岛国片在线免费观看| 久久久精品欧美丰满| 国产a级黄色片| 丁香六月综合激情| 欧美一级小视频| 麻豆freexxxx性91精品| 无码人妻丰满熟妇区毛片18| 精品白丝av| 欧美 亚洲 视频| 99国产精品免费视频观看| 茄子视频成人在线观看 | 免费在线观看不卡| 777米奇影视第四色| 亚洲专区一区| 99视频在线免费播放| 亚洲一级影院| 91黄色在线看| 国产精品红桃| 欧美一二三不卡| 黑丝一区二区| 日韩精品久久一区二区| 一区二区电影在线观看| 在线观看欧美一区| 不卡一区2区| 亚洲精品国产精品国自产| 日韩综合网站| 一本一道久久a久久精品综合| 成人系列视频| 亚洲一区二区免费视频软件合集| 成人在线免费小视频| 一区二区不卡在线| 欧美色图一区| 国产精品av免费| 精品一区二区三区在线| 亚洲精品日韩在线观看| 久久影视一区| 日韩视频在线观看视频| 中文字幕亚洲精品乱码| 波多野结衣av一区二区全免费观看| 欧美成人精品| 无码中文字幕色专区| 国产精品久久国产愉拍| 欧美一级黄色片视频| 青青草97国产精品免费观看| 毛片毛片毛片毛| 国产69精品久久777的优势| 成年人性生活视频| 波多野结衣中文字幕一区二区三区| 国产精品伦子伦| 国产色综合一区| 极品色av影院| 亚洲一卡二卡三卡四卡五卡| 日本一级片免费看| 91国产视频在线观看| 在线观看中文字幕码| 日韩欧美高清一区| 四虎永久在线精品免费网址| 亚洲精品一区二区在线| 国产污视频在线| 中文字幕欧美日韩精品| 欧美性爽视频| 日本中文字幕成人| 福利一区三区| 久久久一本精品99久久精品66| 国产欧美一区| 黄色一级片国产| 日韩不卡一二三区| 又黄又爽又色的视频| 99re热视频这里只精品| 婷婷综合在线视频| 亚洲午夜精品久久久久久久久| 日本天堂网在线观看| 色八戒一区二区三区| 天天综合天天综合色| 欧美激情 亚洲| 久久色在线视频| 国产成人精品视频免费| 亚洲成人一区在线| 波多野结衣人妻| 精品国产网站在线观看| 成人免费一区二区三区视频网站| 日韩视频永久免费观看| 理论不卡电影大全神| 国产免费一区视频观看免费| baoyu135国产精品免费| 色涩成人影视在线播放| 国内精品福利| 999精品网站| 成人激情综合网站| av最新在线观看| 一本久久精品一区二区| 亚洲av无码乱码国产麻豆| 这里只有精品久久| 三级在线观看视频| 国产精品视频一区二区三区经| 日韩在线观看| 久久国产乱子伦免费精品| 久久99精品久久久久婷婷| 美女被艹视频网站| 国产精品久久久久久久蜜臀| 性无码专区无码| 亚洲成人av在线播放| 永久av在线| 国产一区二区丝袜| 国产一区二区观看| 国产午夜福利视频在线观看| 成人性视频网站| 久久久久99精品成人片试看| 在线观看国产一区二区| 三级无遮挡在线观看| 久久久中精品2020中文| 亚洲国产精品免费视频| 一区二区三区四区视频在线观看 | 国产精品成人久久电影| 国产麻豆精品在线观看| 欧美一级特黄高清视频| 欧美三级一区二区| 国产黄在线观看免费观看不卡| 欧美最猛性xxxxx亚洲精品| 欧美18xxxx| 干日本少妇首页| 91丨porny丨户外露出| 日韩少妇裸体做爰视频| 精品国产凹凸成av人网站| 免费在线中文字幕| 成人免费在线看片| 亚洲三级色网| 波多野结衣先锋影音| 欧美日韩亚洲一区二区三区| 三级视频在线播放| 人九九综合九九宗合| 波多野结衣在线观看一区二区| 一区二区成人网| 国产精品国产三级国产有无不卡| 一区二区视频网站| xxav国产精品美女主播| 四虎精品一区二区免费| 欧美国产综合在线| www.亚洲精品| 久久久久久不卡| 国产小视频国产精品| 日韩一区中文| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 久久国产精品色婷婷| 尤物在线免费视频| 精品日韩一区二区| 欧美私密网站| 正在播放一区| 丁香五精品蜜臀久久久久99网站| 豆国产97在线 | 亚洲| 亚洲精品成人久久久| 日本一区免费网站| 欧美黄色免费网址| 91亚洲国产成人精品一区二区三 | 欧美视频免费| 中文在线字幕观看| 狠狠色香婷婷久久亚洲精品| 国产小视频福利在线| 成人欧美一区二区三区在线湿哒哒| 女人天堂亚洲aⅴ在线观看| 欧美一区二区免费在线观看| 色八戒一区二区三区| 搞黄网站在线观看| 国产一级精品aaaaa看| 免费高清视频精品| 免费成人美女女在线观看| 亚洲精品成人久久电影| 日韩电影精品| 精品少妇人妻av免费久久洗澡|