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

欧美另类第一页| 欧美精品丝袜中出| 久久综合伊人77777麻豆| 天天干天天干天天| 欧美色爱综合| 欧美二区三区91| 农民人伦一区二区三区| 欧美美女色图| 久久国产婷婷国产香蕉| 色综合视频网站| 亚洲精品成人无码| 国内精品视频| 色视频欧美一区二区三区| 亚洲精品视频一区二区三区| 不卡av中文字幕| 亚洲一区一卡| 久久亚洲欧美日韩精品专区 | 欧美a视频在线| 亚洲一区二区欧美| 亚洲7777| 桃花色综合影院| 国产一区欧美一区| 人人澡人人澡人人看欧美| 农村妇女精品一区二区| 欧美极品中文字幕| 欧美精品一区二区三区四区 | 日本一道在线观看| 国产私拍精品| 99久久精品国产一区二区三区| 国产精品视频xxxx| 国产99久久久| 欧美三级不卡| 久久久精品中文字幕| av小说在线观看| 97一区二区国产好的精华液| 欧美日本视频在线| 亚洲一二三区av| av男人的天堂在线观看| 亚洲精品国产一区二区三区四区在线| 亚洲精蜜桃久在线| 蝌蚪视频在线播放| 99re亚洲国产精品| 国产亚洲一区在线播放| a天堂在线视频| 久久99久久99小草精品免视看| 日本乱人伦a精品| 久久露脸国语精品国产91| 999久久久国产精品| 国产一区二区三区中文| av网站免费在线播放| 国产suv精品一区| 日韩视频一区二区三区在线播放 | 99久久婷婷国产精品综合| 亚洲在线观看视频| 国产精品无码久久av| 美女脱光内衣内裤视频久久网站 | 99色这里只有精品| av成人影院在线| 亚洲国产成人av网| 91免费黄视频| 91高清视频在线观看| 亚洲一区中文在线| 久久亚洲国产成人精品无码区| bt在线麻豆视频| 一区二区三区在线免费播放| 法国空姐在线观看免费| 宅男在线观看免费高清网站| 亚洲激情综合网| www.一区二区.com| 国产网红在线观看| 亚洲电影一区二区三区| www.日本在线播放| 69久成人做爰电影| 91福利在线观看| 91色国产在线| 国产亚洲人成a在线v网站| 欧美色网站导航| 久久久精品高清| 日韩成人在线看| 精品国内二区三区| 日本丰满少妇裸体自慰| 亚洲欧洲免费| 夜夜嗨av色一区二区不卡| 亚洲天堂久久新| 日韩精品首页| 欧美成人免费播放| 亚洲一区欧美在线| 美腿丝袜亚洲色图| 99三级在线| 青青草视频免费在线观看| 日本一区二区三区在线不卡| 一级黄色免费在线观看| freexxx性亚洲精品| 日本高清视频一区二区| 想看黄色一级片| 日韩成人一级| 日韩亚洲成人av在线| 久久午夜无码鲁丝片| 亚洲伊人网站| 成人激情电影一区二区| 午夜视频在线免费播放| 国产精品萝li| 国产69精品久久久久久久| 欧美日韩激情电影| 欧美sm极限捆绑bd| 欧美性受xxxx黑人| 亚洲三级视频| 91免费版网站入口| 日本成人一区| 一区二区三区中文字幕精品精品 | 国产性猛交xxxx免费看久久| 中文字幕免费高清视频| 亚洲欧美日本伦理| 少妇精69xxtheporn| 久久久久亚洲AV成人| 新狼窝色av性久久久久久| 国产精品免费网站| 精品人妻伦一二三区久久| 91在线观看视频| 亚洲日本精品国产第一区| av影视在线| 欧美午夜电影网| 一二三区视频在线观看| 精品视频网站| 欧美国产视频日韩| 中文无码av一区二区三区| 国产成人免费视| 一区一区视频| 伊人色综合一区二区三区影院视频| 欧美日韩日日骚| 内射中出日韩无国产剧情| 国产精品久久久久久麻豆一区软件 | 久久99精品国产.久久久久久| 国产传媒一区| 五月天婷婷在线视频| 亚洲sss视频在线视频| 免费观看成人在线视频| 哺乳挤奶一区二区三区免费看| 一区二区三区国产视频| 日韩欧美三级在线观看| 国产乱码字幕精品高清av| 亚洲高清在线播放| 欧美aa视频| 欧美岛国在线观看| 丝袜美腿小色网| 蜜桃久久精品一区二区| 精品综合在线| 久久99亚洲网美利坚合众国| 日韩一区二区三免费高清| 精品视频第一页| 日本亚洲一区二区| 欧美成人一区二区在线| av3级在线| 精品国产乱码久久久久久闺蜜| 亚洲色图欧美色| 久久资源在线| 免费电影一区| 无遮挡爽大片在线观看视频| 亚洲国产精品va在线看黑人 | 久久精品国产99久久99久久久| 国产影视精品一区二区三区| 欧美一区二区影院| 天天在线女人的天堂视频| 香蕉加勒比综合久久| 一起操在线视频| 天天做天天爱天天爽综合网| 国产欧美在线看| 日本综合在线| 8x8x8国产精品| 日本裸体美女视频| 精品亚洲国产成人av制服丝袜| 一区二区三区不卡在线| 激情久久一区二区| 中日韩午夜理伦电影免费 | 国产草草浮力影院| 国产农村妇女精品一二区| 精品无人乱码一区二区三区的优势| 国产精品一品| 日韩精品免费综合视频在线播放 | 91精品国产三级| 欧美日本二区| 国产一区二区中文字幕免费看| 91老司机福利在线| 精品国产麻豆免费人成网站| 麻豆成人在线视频| www.色精品| 国产淫片av片久久久久久| 国产一区二区三区四区五区传媒| 国产激情久久久久| 婷婷免费在线视频| 日韩三级视频中文字幕| 日本熟妇毛耸耸xxxxxx| 99精品偷自拍| 国产成人手机视频| 欧美精品二区| 久久狠狠久久综合桃花| 欧美三级精品| 欧美巨大黑人极品精男| 熟妇人妻系列aⅴ无码专区友真希| 疯狂做受xxxx高潮欧美日本 | 国产精品无码白浆高潮| 亚洲成av人片在线| 网爆门在线观看| 成人性生交大片免费看中文网站| 久久综合色视频| jiujiure精品视频播放| 91在线网站视频| 一二三四视频在线中文| 亚洲片在线资源| www.亚洲欧美| 欧洲亚洲国产日韩| 久久97人妻无码一区二区三区| 91麻豆精东视频| 91视频这里只有精品| 亚洲美女视频| 日本免费高清不卡| 欧美片网站免费| 国产97色在线|日韩| 91亚洲天堂| 一个人www欧美| www.亚洲天堂.com| 欧美高清视频在线高清观看mv色露露十八 | 国产精品网站导航| 国产伦精品一区二区免费| 青娱乐精品在线视频| 2018中文字幕第一页| 精品在线观看入口| 国产66精品久久久久999小说| 蜜臀国产一区| 欧美韩国理论所午夜片917电影| 福利视频在线播放| 日韩av在线看| 亚洲美女福利视频| 欧美男生操女生| 无码人妻一区二区三区免费| 亚洲福利视频三区| www.av免费| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人强伦免费视频网站| 男女激情视频一区| 波多野结衣家庭教师视频| 日韩一级免费| 久久这里只有精品8| 99成人在线视频| 亚洲成人自拍视频| 国内精品偷拍| 999日本视频| 国产人妖一区| 国产精品久久91| 国产a亚洲精品| 国产精品99一区| 中文字幕不卡三区视频| 91精品国产91| av在线播放国产| 免费99精品国产自在在线| 天堂中文а√在线| 中文字幕国内精品| 98在线视频| 色老头一区二区三区在线观看| 1024国产在线| 中文字幕亚洲天堂| av网页在线| 中文字幕欧美精品日韩中文字幕| 免费在线看v| 亚洲欧美中文在线视频| 青春有你2免费观看完整版在线播放高清| 亚洲精品在线电影| 午夜av免费观看| 精品国产乱码久久久久久1区2区| 性一交一乱一乱一视频| 欧美成人激情免费网| 超碰在线人人干| 欧美videofree性高清杂交| 97精品人妻一区二区三区在线 | 国产精品网址| 国产乱码精品一区二区三区日韩精品| 亚洲综合网狠久久| 动漫一区二区在线| 精品在线网站观看| 欧美一区二区三区成人久久片| 一道在线中文一区二区三区| 欧美亚洲一级二级| 精品久久视频| 最近看过的日韩成人| 欧美天天在线| 99精品在线免费视频| 久久综合狠狠| 亚洲日本黄色片| 懂色一区二区三区免费观看| 亚洲精品成人无码熟妇在线| 国产日韩精品一区二区三区| 五月天婷婷丁香网| 一区二区三区四区不卡在线 | 欧美香蕉大胸在线视频观看| 国产精品777777| 欧美精品v国产精品v日韩精品| 亚洲精品无amm毛片| 亚洲精品永久免费| 欧美尤物美女在线| 久久久免费精品| 成人在线免费| yellow视频在线观看一区二区 | 欧美伦理91| 国产精品欧美一区二区| 国产精品男女| 色播五月综合| 伊人蜜桃色噜噜激情综合| 虎白女粉嫩尤物福利视频| 欧美aⅴ一区二区三区视频| 挪威xxxx性hd极品| 国产精品网站导航| 精品久久免费视频| 欧美日韩五月天| 四虎永久在线观看| 色播久久人人爽人人爽人人片视av| 丁香花视频在线观看| 国产精品久久久久久久久影视 | 国产精品成人观看视频免费| 青青一区二区三区| 中文字幕无码精品亚洲资源网久久| 日韩精品一二三| 国产不卡一二三| 国产精品久久久久久久裸模| 国产精品18p| 欧美精品九九99久久| 头脑特工队2免费完整版在线观看| 久久色在线播放| 日韩美女在线| 日韩av电影免费在线观看| 欧美日韩日本国产亚洲在线 | 男女性高潮免费网站| 色先锋资源久久综合| 午夜精品久久久久久久99| 伊人成人开心激情综合网| 日韩影视在线| 成人久久久久久久| 国产传媒欧美日韩成人精品大片| 日韩在线观看a| 精品一区二区三区在线播放| 大吊一区二区三区| 色视频欧美一区二区三区| 色一情一乱一乱一区91av| 欧美多人爱爱视频网站| 久久亚洲国产精品尤物| 日本一区二区三区四区在线观看| 在线看片一区| 精品久久久久久无码人妻| 亚洲蜜臀av乱码久久精品蜜桃| 国产xxxx在线观看| 久久精品视频中文字幕| 韩日一区二区| 视频一区国产精品| 日韩高清一级片| 天天躁日日躁aaaa视频| 欧美小视频在线观看| 日本成人一区二区三区| 色综久久综合桃花网| 日韩第二十一页| 亚洲综合av一区| 男女性色大片免费观看一区二区 | 2023国产精品| 久久国产视频播放| 日韩精品久久久久久久玫瑰园| 乱插在线www| 国产福利不卡| 欧美日一区二区在线观看| 日本精品一二三| 综合自拍亚洲综合图不卡区| 国产欧美久久久| 久久影院中文字幕| 亚洲精品a区| 男女激烈动态图| 成人激情午夜影院| 日韩成人免费在线观看| 日韩成人在线视频| 亚洲天堂资源| 伊人久久99| 国产成人在线看| 日韩 欧美 精品| 亚洲福利小视频| 欧美一区久久久| 亚洲一区二区三区欧美| 国产美女久久久久| 欧美色视频一区二区三区在线观看| 日韩一区二区三区观看| 18aaaa精品欧美大片h| 欧洲精品一区色| 韩国理伦片一区二区三区在线播放| 中文在线观看免费网站| 亚洲美女精品成人在线视频| av亚洲一区二区三区| 国产高清精品软男同| 国产高清在线观看免费不卡| 精品成人久久久| 最新国产成人av网站网址麻豆| 精品三级国产| 亚洲中文字幕无码中文字| 国产精品―色哟哟| 成人午夜免费福利| 国产精品激情av在线播放 |