精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产69精品久久app免费版| 五月天丁香激情| 高清成人在线| 久久久久久久网| 日产精品久久久一区二区福利 | 日本在线不卡一区| 中国china体内裑精亚洲片| 国产精品一区二区小说| av免费网站在线| 成人aaaa免费全部观看| 欧美在线观看视频| 亚洲色图 激情小说| 99视频有精品高清视频| 一区二区欧美国产| 久久伦理网站| 一本色道久久综合无码人妻| 中文字幕一区二区三区在线视频| 91精品国产乱| av天堂永久资源网| 久久综合网导航| 99久久夜色精品国产网站| 日韩av免费在线观看| 日韩精品一区二区亚洲av性色| 亚洲国产高清在线观看| 色综合久久久网| 丰满女人性猛交| 天堂а√在线8种子蜜桃视频| 玖玖国产精品视频| 欧美区在线播放| 精品成人av一区二区三区| 日韩精品一区二区三区免费视频| 精品久久久久久久久久ntr影视| 亚洲精品在线视频观看| 日韩在线观看视频一区二区三区| 精品在线播放午夜| 97久久伊人激情网| 色婷婷在线视频观看| 成人免费直播在线| 6080午夜不卡| 日日碰狠狠丁香久燥| 在线观看电影av| 国产精品大尺度| 久久精品国产精品青草色艺| 国产精品羞羞答答在线| 狂野欧美一区| 97精品国产97久久久久久| www.黄色com| 久久93精品国产91久久综合| 精品美女一区二区三区| 三区视频在线观看| 日韩天堂在线| 欧美日韩精品中文字幕| 精品一二三四五区| 免费在线看黄色| 国产亚洲视频系列| 精品视频在线观看| 亚洲精品久久久久久无码色欲四季| 日韩电影在线免费| 91精品国产九九九久久久亚洲| 中文字幕人妻一区二| 欧美丰满日韩| 亚洲香蕉成视频在线观看| 欲求不满的岳中文字幕| 午夜久久av| 欧美一区二区三区系列电影| 亚洲人视频在线| jizzyou欧美16| 欧美日韩在线播放三区| 三年中国国语在线播放免费| a毛片在线看免费观看| 国产精品成人一区二区艾草| 亚洲欧洲一区二区| 超碰免费在线| 亚洲国产精品精华液ab| 日韩一本精品| 自拍视频在线网| 中文字幕不卡的av| 欧美午夜欧美| 精品欧美不卡一区二区在线观看 | 一区二区三区在线观看免费| 日韩中文字幕不卡视频| 国产视频123区| 欧美aaaa视频| 操日韩av在线电影| 性欧美videos| 一区在线观看| 欧美夫妻性生活xx| 国产无遮挡免费视频| 亚洲精品乱码| 日韩免费精品视频| 中文字幕在线观看第二页| 美女免费视频一区二区| 川上优av一区二区线观看| 一区不卡在线观看| 国产91对白在线观看九色| 国产精品久久久久久久小唯西川| 欧美一级特黄aaaaaa| 99精品国产视频| 欧洲国产精品| 日本福利专区在线观看| 亚洲免费视频中文字幕| xxxx18hd亚洲hd捆绑| 欧美14一18处毛片| 日本久久一区二区三区| 手机免费看av网站| 嫩草国产精品入口| 尤物精品国产第一福利三区| 肉色超薄丝袜脚交69xx图片| 亚洲午夜激情在线| 国产91精品久久久久久久| 日日夜夜综合网| 免费人成黄页网站在线一区二区| 92裸体在线视频网站| 人妻夜夜爽天天爽| 欧美高清在线精品一区| 免费的av在线| 小黄鸭精品aⅴ导航网站入口| 6080亚洲精品一区二区| 国产人妻人伦精品1国产丝袜| 日韩av久操| 久久久久久999| 老熟妇一区二区三区啪啪| 国产精品99久久不卡二区| 欧美少妇一区| 日本h片在线观看| 在线观看91视频| 欧美丰满熟妇bbb久久久| sdde在线播放一区二区| 国内久久久精品| 在线播放一级片| 成人av网站在线观看| 亚洲a∨一区二区三区| 182在线视频观看| 91.麻豆视频| 国产精品无码久久久久一区二区| 欧美午夜一区| 成人国产亚洲精品a区天堂华泰| 欧美在线精品一区二区三区| 国产日韩精品一区二区三区| 免费拍拍拍网站| 激情中国色综合| 精品视频偷偷看在线观看| 久久免费看少妇高潮v片特黄| 日韩国产成人精品| 久久99精品久久久久久青青日本| 国产盗摄在线观看| 精品视频在线视频| 90岁老太婆乱淫| 在线不卡视频| 成人欧美一区二区三区在线观看 | 中文字幕亚洲无线码在线一区| 一区二区三区视频免费看| 国产激情91久久精品导航| 亚洲高清视频一区二区| 男人最爱成人网| 日韩av在线直播| 国产精品6666| 成人黄色av网站在线| www.欧美黄色| 视频一区中文字幕精品| 欧美成人激情在线| 国产成人三级在线播放| 樱桃视频在线观看一区| 韩国一区二区在线播放| 天天综合国产| 成人欧美一区二区三区在线| 亚洲免费视频一区二区三区| 欧美性做爰猛烈叫床潮| 人人爽人人爽人人片| 久久亚洲色图| 天天综合色天天综合色hd| jk漫画禁漫成人入口| 亚洲精品国产品国语在线| 国产福利拍拍拍| 91日韩精品一区| 久久精品午夜福利| 精品日产免费二区日产免费二区| 孩xxxx性bbbb欧美| 三区在线观看| 色狠狠桃花综合| 日韩影视一区二区三区| 久久国产精品99久久久久久老狼| 26uuu成人| 试看120秒一区二区三区| 久久五月天色综合| 精品欧美一区二区精品少妇| 一区二区三区在线观看视频| 熟妇高潮一区二区| 久久国产精品毛片| 视频一区亚洲| 亚洲精品观看| 欧美专区日韩视频| caoporn国产精品免费视频| 欧美日韩国产免费一区二区| 色欲一区二区三区精品a片| 国产精品亚洲一区二区三区妖精| 日日噜噜夜夜狠狠久久丁香五月| 91欧美极品| 97视频免费观看| av在线免费观看网| 日韩欧美国产一区二区在线播放| 日本三级免费看| 国产日韩欧美高清| 欧美体内she精高潮| 欧美91精品| 欧美极品jizzhd欧美| 九九热这里有精品| 久久久久久成人| av国产在线观看| 精品99999| 男操女视频网站| 亚洲午夜羞羞片| 国产传媒国产传媒| 国产成人免费视| 欧美午夜性生活| 狠狠爱成人网| 亚洲高清在线播放| 精品国产鲁一鲁****| 1769国产精品| 91cn在线观看| 最近2019中文字幕第三页视频| 蜜臀av在线观看| 91麻豆精品国产自产在线观看一区 | 欧美成人a视频| 亚洲视屏在线观看| 亚州成人在线电影| www.97视频| 国产三级精品三级| 亚洲精品第二页| 精品午夜久久福利影院| 国产免费成人在线| 午夜日韩av| 亚洲国产精品综合| 六月丁香久久丫| 91原创国产| 亚洲欧美在线综合| 国产精品第二页| 亚洲精品中文字幕| 欧美伦理91i| 免费在线看黄色| 亚洲一区二区精品| 三区在线视频| 日韩av影院在线观看| 成人福利小视频| 欧美日韩精品系列| 天天爽夜夜爽人人爽| 欧美日韩亚洲国产一区| 国产老头老太做爰视频| 国产精品无码永久免费888| 在线免费观看污视频| 成人自拍视频在线观看| 宇都宫紫苑在线播放| 激情综合网av| 亚洲综合色在线观看| 天堂蜜桃一区二区三区| 国产高清精品在线观看| 1024精品一区二区三区| 91网站在线观看免费| 91精品成人| 一区二区三区久久网| 狠狠综合久久av一区二区蜜桃 | 国产精品久久久久久久成人午夜| 91福利在线导航| 最近中文字幕在线视频| 91豆麻精品91久久久久久| 亚洲乱码国产乱码精品| 日本国产一区二区| 亚洲黄网在线观看| 91成人在线精品| 久久亚洲天堂网| 色婷婷久久综合| 少妇久久久久久久| 欧美色精品天天在线观看视频| 怡红院av久久久久久久| 欧美日韩免费观看中文| 久久久久99精品成人片三人毛片| 欧美日韩中文字幕| 丁香社区五月天| 欧美日韩在线观看一区二区| 波多野结衣电车痴汉| 在线亚洲欧美专区二区| 在线观看你懂的网站| 欧美日韩和欧美的一区二区| 中文字幕码精品视频网站| 欧美日韩免费视频| www.黄色av| 日韩av影院在线观看| 少妇无码一区二区三区| 亚洲欧洲在线观看| 亚洲免费视频一区二区三区| 久久夜色精品国产亚洲aⅴ| 国精产品一区一区三区mba下载| 欧美高清自拍一区| 中文字幕在线中文字幕在线中三区| 97在线观看免费高清| av在线播放一区| y111111国产精品久久婷婷| 香蕉精品久久| 波多野结衣三级在线| 国产精品www.| 激情视频综合网| a美女胸又www黄视频久久| 亚洲国产精品一区二区久久hs| 亚洲福中文字幕伊人影院| 中文字幕乱码人妻无码久久| 日韩国产高清视频在线| 性xxxxfjsxxxxx欧美| 国产精品视频久久久久| 久久精品福利| 色哺乳xxxxhd奶水米仓惠香| 久久九九国产| 精品中文字幕在线播放| 亚洲男女一区二区三区| 中文字幕 国产精品| 日韩第一页在线| 免费在线看污片| 川上优av一区二区线观看| 欧美日韩在线播放视频| 日本一道本久久| 成人一区二区三区中文字幕| 91视频最新网址| 欧美性大战久久久久久久| 男人久久精品| 欧美一级免费看| 精品国产一区二区三区不卡蜜臂| 中文字幕一区二区三区四区五区人| 久久三级视频| 黑人巨大精品欧美| 精品欧美激情精品一区| 亚洲精品97久久中文字幕| 久久精品久久久久久国产 免费| 日韩不卡免费高清视频| 牛人盗摄一区二区三区视频| 亚洲国产导航| 韩国黄色一级片| 亚洲一二三四区| 亚洲AV无码精品国产| 久久97久久97精品免视看| 99综合久久| 91社在线播放| 国产精品一二三| 国产亚洲第一页| 精品国精品国产| 欧美人与牲禽动交com| 99影视tv| 亚洲视频一二| 中文字幕在线视频播放| 亚洲成av人片在线观看无码| 秋霞欧美在线观看| 国色天香2019中文字幕在线观看| 澳门精品久久国产| 日韩一级性生活片| 91蜜桃在线观看| 在线视频精品免费| 一夜七次郎国产精品亚洲| 国产精品美女午夜爽爽| 三年中文高清在线观看第6集| 韩国成人精品a∨在线观看| 国模无码国产精品视频| 精品国产sm最大网站| 欧美男人天堂| 日韩黄色影视| 国产在线视频一区二区三区| 青青操视频在线播放| 亚洲成av人乱码色午夜| 午夜伦理福利在线| 午夜精品一区二区在线观看的| 久久精品国产精品青草| 久久r这里只有精品| 精品国产乱码久久久久久闺蜜 | 黄色网址在线视频| 日韩欧美亚洲成人| 在线观看免费高清完整| 91香蕉视频在线下载| 亚洲一区二区网站| 女人裸体性做爰全过| 欧美一区二区三区喷汁尤物| av中文在线资源库| 色噜噜狠狠一区二区三区| 国产精品亚洲一区二区三区妖精| 伊人国产在线观看| 中文字幕久久久| 99精品国产高清一区二区麻豆| 欧美v在线观看| 亚洲天堂精品视频| 深夜福利免费在线观看| 成人激情视频网| 亚洲一区区二区| 中文字幕在线观看2018| 日韩av网站在线| 欧美片网站免费| 国产1区2区在线| 亚洲蜜臀av乱码久久精品蜜桃| 无码精品在线观看| 91精品一区二区| 久久久水蜜桃av免费网站| 欧美黑人性猛交xxx| 亚洲欧美中文字幕| 亚洲日本va午夜在线电影| 天天爽天天爽夜夜爽|