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

Flink SQL 知其所以然之流 Join 很難嘛???(下)

運維 數據庫運維
本文主要介紹了 flink sql interval 是怎么避免出現 flink regular join 存在的 retract 問題的,并通過解析其實現說明了運行原理。

[[437064]]

1.序篇

本節是 flink sql 流 join 系列的下篇,上篇的鏈接如下:

flink sql 知其所以然之:流 join 很難嘛???(上)

廢話不多說,咱們先直接上本文的目錄和結論,小伙伴可以先看結論快速了解博主期望本文能給小伙伴們帶來什么幫助:

  • 背景及應用場景介紹:博主期望你能了解到,flink sql 提供的豐富的 join 方式(總結 6 種:regular join,維表 join,快照 join,interval join,array 拍平,table function)對我們滿足需求提供了強大的后盾, 這 6 種 join 中涉及到流與流的 join 最常用的是 regular join 以及 interval join,本節主要介紹 interval join
  • 來一個實戰案例:博主以上節說到的曝光日志流點擊日志流為案例展開,主要是想告訴小伙伴 flink sql left join 數據不會互相等待,存在 retract 問題,會導致寫入 kafka 的數據量變大, 然后轉變思路為使用 flink sql interval join 的方式可以使得數據互相等待一段時間進行 join,這種方式不會存在 retract 問題
  • flink sql interval join 的解決方案以及原理的介紹:主要介紹 interval join 的在上述實戰案例的運行結果及分析源碼機制,博主期望你能了解到,interval join 的執行機制是會在你設置的 interval 區間之內互相等待一段時間,一旦時間推進(事件時間由 watermark 推進)到區間之外(即當前這條數據再也不可能被另一條流的數據 join 到時),outer join 會輸出沒有 join 到的數據,inner join 會從 state 中刪除這條數據
  • 總結及展望

2.背景及應用場景介紹

書接上文,上文介紹了曝光流在關聯點擊流時,使用 flink sql regular join 存在的 retract 問題。

本文介紹怎么使用 flink sql interval join 解決這些問題。

3.來一個實戰案例

flink sql 知其所以然之流 join 很難嘛???(上)

看看上節的實際案例,來看看在具體輸入值的場景下,輸出值應該長啥樣。

場景:即常見的曝光日志流(show_log)通過 log_id 關聯點擊日志流(click_log),將數據的關聯結果進行下發。

來一波輸入數據:

曝光數據:

log_id timestamp show_params
1 2021-11-01 00:01:03 show_params
2 2021-11-01 00:03:00 show_params2
3 2021-11-01 00:05:00 show_params3

點擊數據:

log_id timestamp click_params
1 2021-11-01 00:01:53 click_params
2 2021-11-01 00:02:01 click_params2

預期輸出數據如下:

log_id timestamp show_params click_params
1 2021-11-01 00:01:00 show_params click_params
2 2021-11-01 00:01:00 show_params2 click_params2
3 2021-11-01 00:02:00 show_params3 null

上節的 flink sql regular join 解決方案如下:

  1. INSERT INTO sink_table 
  2. SELECT 
  3.     show_log.log_id as log_id, 
  4.     show_log.timestamp as timestamp
  5.     show_log.show_params as show_params, 
  6.     click_log.click_params as click_params 
  7. FROM show_log 
  8. LEFT JOIN click_log ON show_log.log_id = click_log.log_id; 

上節說道,flink sql left join 在流數據到達時,如果左表流(show_log)join 不到右表流(click_log) ,則不會等待右流直接輸出(show_log,null),在后續右表流數據代打時,會將(show_log,null)撤回,發送(show_log,click_log)。這就是為什么產生了 retract 流,從而導致重復寫入 kafka。

對此,我們也是提出了對應的解決思路,既然 left join 中左流不會等待右流,那么能不能讓左流強行等待右流一段時間,實在等不到在數據關聯不到的數據即可。

當當當!!!

本文的 flink sql interval join 登場,它就能等。

4.flink sql interval join

4.1.interval join 定義

大家先通過下面這句話和圖簡單了解一下 interval join 的作用(熟悉 DataStream 的小伙伴萌可能已經使用過了),后續會詳細介紹原理。

interval join 就是用一個流的數據去關聯另一個流的一段時間區間內的數據。關聯到就下發關聯到的數據,關聯不到且在超時后就根據是否是 outer join(left join,right join,full join)下發沒關聯到的數據。

interval join

4.2.案例解決方案

來看看上述案例的 flink sql interval join sql 怎么寫:

  1. INSERT INTO sink_table 
  2. SELECT 
  3.     show_log.log_id as log_id, 
  4.     show_log.timestamp as timestamp
  5.     show_log.show_params as show_params, 
  6.     click_log.click_params as click_params 
  7. FROM show_log LEFT JOIN click_log ON show_log.log_id = click_log.log_id 
  8. AND show_log.row_time  
  9.     BETWEEN click_log.row_time - INTERVAL '10' MINUTE  
  10.     AND click_log.row_time + INTERVAL '10' MINUTE

這里設置了 show_log.row_time BETWEEN click_log.row_time - INTERVAL '10' MINUTE AND click_log.row_time + INTERVAL '10' MINUTE代表 show_log 表中的數據會和 click_log 表中的 row_time 在前后 10 分鐘之內的數據進行關聯。

運行結果如下:

  1. +[1 | 2021-11-01 00:01:03 | show_params | click_params] 
  2.  
  3. +[2 | 2021-11-01 00:03:00 | show_params | click_params] 
  4.  
  5. +[3 | 2021-11-01 00:05:00 | show_params | null

如上就是我們期望的正確結果了。

flink web ui 算子圖如下:

flink web ui

那么此時你可能有一個問題,結果中的前兩條數據 join 到了輸出我是理解的,那當 show_log join 不到 click_log 時為啥也輸出了?原理是啥?

博主帶你們來定位到具體的實現源碼。先看一下 transformations。

transformations

可以看到事件時間下 interval join 的具體 operator 是 org.apache.flink.table.runtime.operators.join.KeyedCoProcessOperatorWithWatermarkDelay。

其核心邏輯就集中在 processElement1 和 processElement2 中,在 processElement1 和 processElement2 中使用 org.apache.flink.table.runtime.operators.join.interval.RowTimeIntervalJoin 來處理具體 join 邏輯。RowTimeIntervalJoin 重要方法如下圖所示。

TimeIntervalJoin

下面詳細給大家解釋一下。

4.3.TimeIntervalJoin 簡版說明

join 時,左流和右流會在 interval 時間之內相互等待,如果等到了則輸出數據[+(show_log,click_log)],如果等不到,并且另一條流的時間已經推進到當前這條數據在也不可能 join 到另一條流的數據時,則直接輸出[+(show_log,null)],[+(null,click_log)]。

舉個例子,show_log.row_time BETWEEN click_log.row_time - INTERVAL '10' MINUTE AND click_log.row_time + INTERVAL '10' MINUTE, 當 click_log 的時間推進到 2021-11-01 11:00:00 時,這時 show_log 來一條 2021-11-01 02:00:00 的數據, 那這條 show_log 必然不可能和 click_log 中的數據 join 到了,因為 click_log 中 2021-11-01 01:50:00 到 2021-11-01 02:10:00 之間的數據以及過期刪除了。則 show_log 直接輸出 [+(show_log,null)]

Notes:

如果你設置了 allowLateness,join 不到的數據的輸出和 state 的清理會多保留 allowLateness 時間

4.4.TimeIntervalJoin 詳細實現說明

以上面案例的 show_log(左表) interval join click_log(右表) 為例(不管是 inner interval join,left interval join,right interval join 還是 full interval join,都會按照下面的流程執行):

第一步,首先如果 join xxx on 中的條件是等式則代表 join 是在相同 key 下進行的(上述案例中 join 的 key 即 show_log.log_id,click_log.log_id),相同 key 的數據會被發送到一個并發中進行處理。如果 join xxx on 中的條件是不等式,則兩個流的 source 算子向 join 算子下發數據是按照 global 的 partition 策略進行下發的,并且 join 算子并發會被設置為 1,所有的數據會被發送到這一個并發中處理。

第二步,相同 key 下,一條 show_log 的數據先到達,首先會計算出下面要使用的最重要的三類時間戳:

  • 根據 show_log 的時間戳(l_time)計算出能關聯到的右流的時間區間下限(r_lower)、上限(r_upper)
  • 根據 show_log 目前的 watermark 計算出目前右流的數據能夠過期做過期處理的時間的最小值(r_expire)
  • 獲取左流的 l_watermark,右流的 r_watermark,這兩個時間戳在事件語義的任務中都是 watermark

第三步,遍歷所有同 key 下的 click_log 來做 join

  • 對于遍歷的每一條 click_log,走如下步驟
  • 經過判斷,如果 on 中的條件為 true,則和 click_log 關聯,輸出[+(show_log,click_log)]數據;如果 on 中的條件為 false,則啥也不干
  • 接著判斷當前這條 click_log 的數據時間(r_time)是否小于右流的數據過期時間的最小值(r_expire)(即判斷這條 click_log 是否永遠不會再被 show_log join 到了)。如果小于,并且當前 click_log 這一側是 outer join,則不用等直接輸出[+(null,click_log)]),從狀態刪除這條 click_log;如果 click_log 這一側不是 outer join,則直接從狀態里刪除這條 click_log。

第四步,判斷右流的時間戳(r_watermark)是否小于能關聯到的右流的時間區間上限(r_upper):

  • 如果是,則說明這條 show_log 還有可能被 click_log join 到,則 show_log 放到 state 中,并注冊后面用于狀態清除的 timer。
  • 如果否,則說明關聯不到了,則輸出[+(show_log,null)]

第五步,timer 觸發時:

  • timer 觸發時,根據當前 l_watermark,r_watermark 以及 state 中存儲的 show_log,click_log 的 l_time,r_time 判斷是否再也不會被對方 join 到,如果是,則根據是否為 outer join 對應輸出[+(show_log,null)],[+(null,click_log)],并從狀態中刪除對應的 show_log,click_log。

上面只是左流 show_log 數據到達時的執行流程(即 ProcessElement1),當右流 click_log 到達時也是完全類似的執行流程(即 ProcessElement2)。

4.5.使用注意事項

小伙伴萌在使用 interval join 需要注意的兩點事項:

interval join 的時間區間取決于日志的真實情況:設置大了容易造成任務的 state 太大,并且時效性也會變差。設置小了,join 不到,下發的數據在后續使用時,數據質量會存在問題。所以小伙伴萌在使用時建議先使用離線數據做一遍兩條流的時間戳 diff 比較,來確定真實情況下的時間戳 diff 的分布是怎樣的。舉例:你通過離線數據 join 并做時間戳 diff 后發現 99% 的數據都能在時間戳相差 5min 以內 join 到,那么你就有依據去設置 interval 時間差為 5min。

interval join 中的時間區間條件即支持事件時間,也支持處理時間。事件時間由 watermark 推進。

5.總結與展望

源碼公眾號后臺回復1.13.2 sql interval join獲取。

本文主要介紹了 flink sql interval 是怎么避免出現 flink regular join 存在的 retract 問題的,并通過解析其實現說明了運行原理,博主期望你讀完本文之后能了解到:

背景及應用場景介紹:博主期望你能了解到,flink sql 提供的豐富的 join 方式(總結 6 種:regular join,維表 join,快照 join,interval join,array 拍平,table function)對我們滿足需求提供了強大的后盾, 這 6 種 join 中涉及到流與流的 join 最常用的是 regular join 以及 interval join,本節主要介紹 interval join

來一個實戰案例:博主以上節說到的曝光日志流點擊日志流為案例展開,主要是想告訴小伙伴 flink sql left join 數據不會互相等待,存在 retract 問題,會導致寫入 kafka 的數據量變大, 然后轉變思路為使用 flink sql interval join 的方式可以使得數據互相等待一段時間進行 join,這種方式不會存在 retract 問題

flink sql interval join 的解決方案以及原理的介紹:主要介紹 interval join 的在上述實戰案例的運行結果及分析源碼機制,博主期望你能了解到,interval join 的執行機制是會在你設置的 interval 區間之內互相等待一段時間,一旦時間推進(事件時間由 watermark 推進)到區間之外(即當前這條數據再也不可能被另一條流的數據 join 到時),outer join 會輸出沒有 join 到的數據,inner join 會從 state 中刪除這條數據

 

總結及展望

 

責任編輯:武曉燕 來源: 大數據羊說
相關推薦

2021-11-27 09:03:26

flink join數倉

2022-05-22 10:02:32

CREATESQL 查詢SQL DDL

2022-06-10 09:01:04

OverFlinkSQL

2022-07-05 09:03:05

Flink SQLTopN

2022-06-06 09:27:23

FlinkSQLGroup

2022-06-18 09:26:00

Flink SQLJoin 操作

2022-05-18 09:02:28

Flink SQLSQL字符串

2022-05-15 09:57:59

Flink SQL時間語義

2022-06-29 09:01:38

FlinkSQL時間屬性

2021-12-09 06:59:24

FlinkSQL 開發

2022-05-27 09:02:58

SQLHive語義

2022-05-12 09:02:47

Flink SQL數據類型

2022-08-10 10:05:29

FlinkSQL

2021-09-12 07:01:07

Flink SQL ETL datastream

2021-12-17 07:54:16

Flink SQLTable DataStream

2021-11-30 23:30:45

sql 性能異步

2021-12-06 07:15:47

開發Flink SQL

2021-12-05 08:28:39

Flink SQLbatch lookuSQL

2022-05-09 09:03:04

SQL數據流數據

2021-11-24 08:17:21

Flink SQLCumulate WiSQL
點贊
收藏

51CTO技術棧公眾號

中文字幕亚洲欧美一区二区三区| 一区二区三区精品| 国产精品99导航| 五月婷婷婷婷婷| 91精品网站在线观看| 亚洲午夜在线观看视频在线| 欧美精品一区二区三区在线看午夜 | 国产成人久久777777| 秋霞午夜在线观看| 99久久精品免费| 国产日韩中文在线| 黄色大片网站在线观看| 久久精品高清| 亚洲精品第一国产综合精品| 天天操狠狠操夜夜操| 91美女主播在线视频| 国产精品午夜免费| 久久一区二区三区av| 国产叼嘿视频在线观看| 久久天天综合| 国内精品视频在线| 国产精品久久久精品四季影院| 亚洲精华一区二区三区| 日韩欧美不卡在线观看视频| 青青青在线视频免费观看| 国产在线精品二区| 国产一级在线免费观看| 成人三级视频| 亚洲精品在线看| 成人区人妻精品一区二| 亚洲爽爆av| 欧美三级中文字幕在线观看| 91免费视频网站在线观看| √天堂8在线网| 国产精品二三区| 欧美一区二区三区在线播放 | 成人在线国产视频| 毛片在线视频| 日本一区二区不卡视频| 欧美一区二区三区四区在线观看地址 | 亚洲AV成人无码精电影在线| 欧美精品一区二区久久| 亚洲码在线观看| 中出视频在线观看| 高清精品xnxxcom| 精品少妇一区二区三区免费观看| 国产美女视频免费看| 成人自拍视频网| 欧日韩精品视频| 无人在线观看的免费高清视频 | 91福利视频网站| 六月丁香婷婷在线| 中文av在线全新| 欧美日韩在线视频观看| 欧洲av无码放荡人妇网站| 英国三级经典在线观看| 色婷婷久久99综合精品jk白丝| 777久久久精品一区二区三区| 男人的天堂免费在线视频| 午夜欧美大尺度福利影院在线看 | 欧美人体做爰大胆视频| 15—17女人毛片| 亚洲我射av| 欧美一二三区在线观看| 性活交片大全免费看| japanese色系久久精品| 亚洲黄页网在线观看| 久久精品女同亚洲女同13| 日韩欧美ww| 亚洲欧洲在线播放| 九一在线免费观看| 久久精品欧美一区| 欧美激情亚洲一区| 特级毛片www| 开心九九激情九九欧美日韩精美视频电影| 国产精品视频网站| 99热在线只有精品| 97精品电影院| 亚洲欧洲国产日韩精品| 日本资源在线| 黑丝美女久久久| 中文字幕第38页| 综合欧美亚洲| 亚洲性猛交xxxxwww| 91麻豆精品成人一区二区| 国产综合网站| 欧美专区在线视频| 一区二区 亚洲| 成人avav在线| 四虎影视永久免费在线观看一区二区三区| 欧美三级黄网| 午夜av一区二区三区| 在线免费观看av的网站| 国产成人澳门| 在线中文字幕日韩| 国产精品suv一区二区69| 久久三级视频| 99国产在线| 成人福利在线| 香蕉久久一区二区不卡无毒影院| 亚洲成色www.777999| 在线观看视频一区二区三区| 影音先锋欧美精品| 精品人妻在线播放| 日日夜夜综合网| 国产精品观看| 国产日韩专区在线| 欧美偷拍视频| 亚洲精品成a人| 手机在线看福利| 精品成人自拍视频| 久久精品视频在线| wwwwww在线观看| 成人福利视频在线看| 在线视频不卡一区二区| 蜜桃成人精品| 日韩成人av在线| 欧美黄色免费看| 久久精品av麻豆的观看方式| 欧美日韩一区在线观看视频| 四虎亚洲成人| 制服丝袜亚洲色图| 亚洲色图欧美色| 另类亚洲自拍| 国内视频一区| gogo高清在线播放免费| 日韩视频不卡中文| 亚洲xxxx3d动漫| 麻豆成人久久精品二区三区小说| 玖玖玖精品中文字幕| 成人在线黄色电影| 欧美精品一区二区不卡| 美国黄色小视频| 国产在线看一区| 在线观看18视频网站| 久久91视频| 中文字幕免费国产精品| 五月婷婷激情五月| 国产色产综合色产在线视频| 色欲av无码一区二区人妻| 香蕉视频一区二区三区| 97精品免费视频| 日韩一级片免费在线观看| 一区二区三区四区高清精品免费观看 | 精品日本视频| 亚洲性日韩精品一区二区| 国产成人在线免费视频 | 日韩精品三区四区| 国产原创欧美精品| 黄色网址在线免费| 日韩一区二区免费电影| 欧美又粗又大又长| 国产成人小视频| 国产精品无码免费专区午夜| 成人搞黄视频| 91产国在线观看动作片喷水| 天堂√在线中文官网在线| 黑人巨大精品欧美一区二区一视频 | 国外成人福利视频| 久久精品国产69国产精品亚洲| 国产一区二区小视频| 亚洲欧美一区二区三区极速播放| 性生活一级大片| 亚洲国产婷婷| 日本一区二区三区视频在线观看| yiren22亚洲综合| 久久综合伊人77777蜜臀| www.中文字幕| 日韩欧美aⅴ综合网站发布| 先锋影音av在线| 国产剧情av麻豆香蕉精品| 日韩在线观看a| 日韩免费电影在线观看| 国产日本欧美视频| 日本色护士高潮视频在线观看| 亚洲福利在线看| 国产情侣呻吟对白高潮| 亚洲男人电影天堂| 国产黑丝在线观看| 日本麻豆一区二区三区视频| 香蕉视频在线网址| 国产精品对白久久久久粗| 日本免费久久高清视频| 国产在线观看a视频| 亚洲成人aaa| 免费在线不卡av| 亚洲一区二区三区美女| 蜜臀久久99精品久久久久久| 国产中文字幕精品| 日韩免费一级视频| 希岛爱理一区二区三区| 久久99精品久久久久久久久久 | av免费播放网站| 国产91精品在线观看| 成人18视频| 亚洲精品卡一卡二| 久久精品国产亚洲高清剧情介绍 | 国产福利精品导航| 成年人免费大片| 欧美另类综合| 婷婷四房综合激情五月| gogo久久日韩裸体艺术| 国产精品香蕉国产| 黄视频网站在线观看| 另类图片亚洲另类| 国产黄在线看| 亚洲国产一区二区三区四区| 国产精品国产三级国产普通话对白 | www.国产在线视频| 图片小说视频色综合| 欧美裸体网站| 国产精品x8x8一区二区| 成人在线精品视频| 黄瓜视频成人app免费| 久久久久久久久久久亚洲| 调教视频免费在线观看| 亚洲国产精品国自产拍av秋霞| 91麻豆成人精品国产| 色哟哟一区二区三区| 久久综合久久鬼| 自拍偷拍亚洲激情| jizz18女人高潮| 久久久精品综合| 亚洲成人av免费在线观看| 国产二区国产一区在线观看| 男女男精品视频站| 美日韩精品视频| www.com毛片| 99在线精品视频在线观看| 久久这里只有精品8| 久久精品亚洲人成影院| 亚洲一区二区三区午夜| 欧美日中文字幕| 日日骚一区二区网站| 久久99青青| 免费成人av网站| 羞羞答答一区二区| 国产日韩一区二区| 精品伊人久久久| 国产乱码精品一区二区三区不卡| 一区二区三区欧洲区| av资源站久久亚洲| 精品无码免费视频| 欧美亚洲一区| 日本一道本久久| 99热精品在线观看| 日韩av三级在线| 亚洲尤物影院| 日韩一级在线免费观看| 水野朝阳av一区二区三区| 欧美一级片中文字幕| 狂野欧美一区| 牛夜精品久久久久久久| 蜜臀av一区二区在线观看| 狠狠操狠狠干视频| 国产麻豆9l精品三级站| 男人添女人荫蒂国产| 成人精品免费视频| 久久午夜夜伦鲁鲁片| 国产午夜亚洲精品理论片色戒| av电影网站在线观看| 中文字幕在线观看一区二区| 人与动物性xxxx| 亚洲一二三区视频在线观看| 成人精品在线看| 91福利国产精品| 国产又粗又猛又爽| 欧美精品一区二区三区在线播放| 日本毛片在线观看| 亚洲视屏在线播放| gogo在线高清视频| 97在线看免费观看视频在线观看| 精品国产第一福利网站| 国产精品一区二区在线| 日韩欧美中文字幕在线视频| 黄色99视频| 成人同人动漫免费观看| 在线观看av的网址| 亚洲欧美卡通另类91av| 老司机午夜性大片| 91露出在线| 日韩av最新在线| 在线免费观看黄色av| 欧美俄罗斯乱妇| 香蕉久久免费电影| 亚洲一区二区三区视频播放| 久久动漫网址| 在线成人性视频| 亚洲人人精品| 97超碰人人爽| 99国产精品久| 天天鲁一鲁摸一摸爽一爽| 黄网动漫久久久| 国产精品热久久| 日韩精品高清在线| av黄在线观看| 国产精品老女人精品视频| 91成人福利| 亚洲日本无吗高清不卡| 亚洲精品婷婷| 1314成人网| 国产日产欧产精品推荐色| 精品一区在线视频| 欧美日韩精品一区二区三区四区| 欧美 日韩 国产 成人 在线| 麻豆一区二区三| 男人和女人啪啪网站| 国内精品免费**视频| 亚洲一区二区观看| 亚洲一区视频在线| 国产精品羞羞答答在线| 亚洲午夜色婷婷在线| 草草在线视频| 国产精品福利视频| 香港欧美日韩三级黄色一级电影网站| 国产又大又硬又粗| 波多野结衣在线aⅴ中文字幕不卡| 欧美性x x x| 欧美性高清videossexo| 黄色av免费在线观看| 欧美一级电影免费在线观看| 97se亚洲国产一区二区三区| 一区二区高清视频| 免费高清在线视频一区·| 97超碰在线免费观看| 欧美日韩美女在线| 日本美女一级视频| 欧美激情一区二区三区久久久| 电影91久久久| 色撸撸在线观看| 久久99精品国产麻豆婷婷洗澡| 阿v天堂2014| 91成人国产精品| 国产日本在线| 国产精品第100页| 精品国产一区二区三区| 午夜精品久久久内射近拍高清| 91一区二区在线| 日本特级黄色片| 亚洲欧美激情在线视频| 欧美日韩大片| 欧美一区二区成人| 男人天堂资源在线| 国产99久久精品一区二区永久免费 | 亚洲午夜精品国产| 久久精品国产色蜜蜜麻豆| 日本综合在线观看| 欧美日韩精品久久久| 欧美成人二区| 亚洲专区国产精品| 国精品一区二区| 亚洲av成人精品一区二区三区| 亚洲成a人片综合在线| 手机看片福利在线| 青草成人免费视频| 清纯唯美日韩| 久久久久久久久久毛片| 亚洲欧美日韩国产中文在线| 精品久久久无码中文字幕| 欧美极品少妇xxxxⅹ免费视频 | 亚洲午夜精品久久久久久久久久久久| 欧美色网一区| 亚洲欧美日韩精品综合在线观看 | 免费成人小视频| 一级黄色片日本| 欧美v国产在线一区二区三区| h片在线观看下载| 欧美福利精品| 久久91精品国产91久久小草| 青娱乐国产盛宴| 国产午夜精品久久久| 六九午夜精品视频| 久久福利一区二区| 久久综合九色综合97_久久久| 羞羞色院91蜜桃| 久久久人成影片一区二区三区| 亚洲第一二三区| 毛片毛片毛片毛| 午夜欧美大尺度福利影院在线看| 成人影视在线播放| 91蜜桃网站免费观看| 国产精品久久国产愉拍| 久草福利资源在线| 久久草av在线| 91大神免费观看| 精品久久久久久亚洲精品 | 久久亚洲精品网站| 嗯用力啊快一点好舒服小柔久久| 日av中文字幕| 亚洲精品视频在线看| 天堂中文在线视频| 成人亚洲激情网| 欧美在线综合| 日本 欧美 国产| 日韩精品久久久久久福利| 国产情侣一区二区三区| 尤物av无码色av无码| 亚洲欧美视频在线观看视频| 免费在线高清av| 成人精品水蜜桃|