日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

我們一起深入理解Flink State

來源: 責(zé)編: 時間:2024-03-28 09:26:21 238觀看
導(dǎo)讀寫在前面State是指流計(jì)算過程中計(jì)算節(jié)點(diǎn)的中間計(jì)算結(jié)果或元數(shù)據(jù)屬性,比如 在aggregation過程中要在state中記錄中間聚合結(jié)果,比如 Apache Kafka 作為數(shù)據(jù)源時候,我們也要記錄已經(jīng)讀取記錄的offset,這些State數(shù)據(jù)在計(jì)算過

寫在前面

State是指流計(jì)算過程中計(jì)算節(jié)點(diǎn)的中間計(jì)算結(jié)果或元數(shù)據(jù)屬性,比如 在aggregation過程中要在state中記錄中間聚合結(jié)果,比如 Apache Kafka 作為數(shù)據(jù)源時候,我們也要記錄已經(jīng)讀取記錄的offset,這些State數(shù)據(jù)在計(jì)算過程中會進(jìn)行持久化(插入或更新)。本文將詳細(xì)介紹一下Flink State,通過本文,你可以了解到:94H28資訊網(wǎng)——每日最新資訊28at.com

  • State分類
  • 什么是狀態(tài)后端(state backend)
  • State對擴(kuò)縮容的處理

感謝關(guān)注,希望本文對你有所幫助。94H28資訊網(wǎng)——每日最新資訊28at.com

State分類

Flink 中的狀態(tài)分為兩種主要類型:Keyed State 和 Operator State。94H28資訊網(wǎng)——每日最新資訊28at.com

Keyed State

  • 概念:Keyed State 是和鍵(key)相關(guān)聯(lián)的狀態(tài)。在 Flink 的 Keyed Streams 上進(jìn)行有狀態(tài)操作時(例如在使用 keyBy 方法后),每個 key 都會有自己的狀態(tài)實(shí)例,這個狀態(tài)是獨(dú)立的,即每個 key 的狀態(tài)對于其他 keys 不可見。
  • 用法:Keyed State 常用于需要按 key 進(jìn)行分區(qū)處理的情況,如聚合計(jì)算(sum、min、max)、窗口操作和其他需要按 key 維護(hù)和更新狀態(tài)的計(jì)算。在 SQL 語句中,Keyed State 對應(yīng)的就是通過 GroupBy 或 PartitionBy 所定義的字段分組。
  • 數(shù)據(jù)結(jié)構(gòu):Keyed State 底層通常是基于哈希表的實(shí)現(xiàn),確保每個 key 都能快速地找到對應(yīng)的狀態(tài)。這種狀態(tài)通常存儲在 Keyed State 后端中,可以是內(nèi)存中,也可以是 RocksDB 這種本地存儲。

Operator State

  • 概念:Operator State 與特定的操作符實(shí)例(Task)相關(guān)聯(lián),而不是和特定的 key 關(guān)聯(lián)。每個操作符實(shí)例維護(hù)自己的狀態(tài),所有的 Operator State 實(shí)例對于同一操作符是可見的。
  • 用法:Operator State 通常用于記錄源(Source)和接收器(Sink)的相關(guān)狀態(tài),或者用于需要操作符級別聚合的場合。例如,一個 Source Connector 可能會使用 Operator State 來記錄已經(jīng)讀取的數(shù)據(jù)源的 offset。
  • 實(shí)現(xiàn):Flink 提供了幾種不同的 Operator State 類型,包括列表狀態(tài)(ListState)、聯(lián)合列表狀態(tài)(UnionListState)、廣播狀態(tài)(BroadcastState)等。這些狀態(tài)通常存儲在 Operator State 后端中,可以是內(nèi)存中,也可以是持久化存儲。

值得注意的是:94H28資訊網(wǎng)——每日最新資訊28at.com

在 Flink 的 Table API 或 SQL API 中,對于內(nèi)部的 GroupBy/PartitionBy 操作,F(xiàn)link 會自動管理 Keyed State。而對于 Source Connector 記錄 offset 這樣的操作,通常是在底層的 DataStream API 中實(shí)現(xiàn)的,可能直接使用 Operator State 來管理。例如,F(xiàn)link Kafka Consumer 會使用 Operator State 來存儲 Kafka 主題的分區(qū) offset,以便在發(fā)生故障時能夠從上次成功的檢查點(diǎn)恢復(fù)。94H28資訊網(wǎng)——每日最新資訊28at.com

什么是狀態(tài)后端(state backend)

State的具體存儲、訪問和維護(hù)是由**狀態(tài)后端(state backend)**決定的。狀態(tài)后端主要負(fù)責(zé)兩件事情:94H28資訊網(wǎng)——每日最新資訊28at.com

  • 本地狀態(tài)管理
  • 將狀態(tài)以checkpoint的形式寫入遠(yuǎn)程存儲

Flink提供了三種狀態(tài)后端:94H28資訊網(wǎng)——每日最新資訊28at.com

MemoryStateBackend(內(nèi)存狀態(tài)后端)

  • 存儲:狀態(tài)存儲在 TaskManager 的 JVM 堆內(nèi)存上。生成checkpoint時,*MemoryStateBackend會將狀態(tài)發(fā)送至JobManager并保存到它的堆內(nèi)存中。
  • 使用場景:適用于小規(guī)模狀態(tài)或本地測試,因?yàn)樗鼘⑺袪顟B(tài)作為序列化數(shù)據(jù)保存在 JVM 堆上。如果 TaskManager 發(fā)生故障,狀態(tài)會丟失。
  • 性能:由于狀態(tài)是直接存儲在內(nèi)存中的,所以訪問速度很快。
  • 限制:狀態(tài)大小受限于 TaskManager 可用內(nèi)存。大規(guī)模狀態(tài)可能導(dǎo)致內(nèi)存溢出錯誤。

FsStateBackend(文件系統(tǒng)狀態(tài)后端)

  • 存儲:狀態(tài)存儲在 TaskManager 的 JVM 堆內(nèi)存中(作為緩存),但在檢查點(diǎn)(checkpoint)時,會持久化到配置的文件系統(tǒng)(如 HDFS)中。
  • 使用場景:適用于需要持久化狀態(tài)以避免數(shù)據(jù)丟失的場景。在發(fā)生故障時,F(xiàn)link 作業(yè)可以從文件系統(tǒng)中的檢查點(diǎn)恢復(fù)狀態(tài)。
  • 性能:由于狀態(tài)在內(nèi)存中進(jìn)行操作,并在檢查點(diǎn)時異步寫入文件系統(tǒng),因此可以提供較快的狀態(tài)訪問速度,但可能受文件系統(tǒng)性能的限制。
  • 限制:內(nèi)存中的狀態(tài)大小仍然受限于 TaskManager 可用內(nèi)存,但由于檢查點(diǎn)數(shù)據(jù)被寫入到更穩(wěn)定的文件系統(tǒng),因此可以支持更大的狀態(tài)。

RocksDBStateBackend(RocksDB 狀態(tài)后端)

RocksDB是一個嵌入式鍵值存儲(key-value store),它可以將數(shù)據(jù)保存到本地磁盤上,為了從RocksDB中讀寫數(shù)據(jù),系統(tǒng)需要對數(shù)據(jù)進(jìn)行序列化和反序列化。94H28資訊網(wǎng)——每日最新資訊28at.com

  • 存儲:狀態(tài)存儲在本地磁盤上的 RocksDB 數(shù)據(jù)庫中,檢查點(diǎn)數(shù)據(jù)會持久化到配置的文件系統(tǒng)中。
  • 使用場景:適用于大規(guī)模狀態(tài)管理的場景。由于 RocksDB 是一個優(yōu)化的鍵值存儲,因此可以有效地管理大量狀態(tài)數(shù)據(jù)。
  • 性能:狀態(tài)訪問速度可能比內(nèi)存狀態(tài)后端慢(磁盤讀寫以及序列化和反序列化對象的開銷),但 RocksDB 提供了針對大量狀態(tài)數(shù)據(jù)的優(yōu)化。
  • 限制:對本地磁盤空間有需求,但由于狀態(tài)是在本地磁盤上操作,因此可以支持非常大的狀態(tài)。

在選擇狀態(tài)后端時,需要考慮應(yīng)用的狀態(tài)大小、恢復(fù)速度、持久性和部署環(huán)境。對于生產(chǎn)環(huán)境,通常推薦使用 RocksDBStateBackend,因?yàn)樗軌蛱峁┝己玫臄U(kuò)展性和容錯性。94H28資訊網(wǎng)——每日最新資訊28at.com

State對擴(kuò)縮容的處理

Operator State 的擴(kuò)容處理

在 Apache Flink 中,對于有狀態(tài)的流處理作業(yè),當(dāng)作業(yè)進(jìn)行擴(kuò)容(scaling out)或縮容(scaling in)時,即增加或減少并行子任務(wù)的數(shù)量時,F(xiàn)link 需要重新分配 OperatorState。這個過程稱為狀態(tài)重分配(state redistribution)。94H28資訊網(wǎng)——每日最新資訊28at.com

對于 Operator State 的擴(kuò)容處理,F(xiàn)link 提供了不同的重分配模式來處理狀態(tài):94H28資訊網(wǎng)——每日最新資訊28at.com

ListState

對于 ListState 類型的 Operator State,如果流任務(wù)的并行度從 N 增加到 M,F(xiàn)link 會將每個并行實(shí)例的狀態(tài)分成 M 份,然后將這些分片分配給新的并行實(shí)例。如果并行度減少,則相反,狀態(tài)將會聚合起來。94H28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片94H28資訊網(wǎng)——每日最新資訊28at.com

擴(kuò)容時:94H28資訊網(wǎng)——每日最新資訊28at.com

  • 假設(shè)原來有 2 個并行實(shí)例,每個實(shí)例有自己的 ListState。
  • 擴(kuò)容到 3 個并行實(shí)例。
  • Flink 會將每個原來的 ListState 平均分成 3 份。
  • 新的 3 個并行實(shí)例每個都會接收一份來自每個原始 ListState 的數(shù)據(jù)。

縮容時:94H28資訊網(wǎng)——每日最新資訊28at.com

  • 假設(shè)原來有 3個并行實(shí)例。
  • 縮容到 1 個并行實(shí)例。
  • 現(xiàn)有的狀態(tài)將會被聚合,確保新的 1 個實(shí)例完整地包含原始狀態(tài)的全部數(shù)據(jù)。

BroadcastState

BroadcastState 的數(shù)據(jù)在擴(kuò)容或縮容時會被復(fù)制到所有的并行實(shí)例中。由于 BroadcastState 是以廣播的方式存儲數(shù)據(jù),所有并行實(shí)例的狀態(tài)都是相同的。94H28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片94H28資訊網(wǎng)——每日最新資訊28at.com

UnionListState

對于 UnionListState 類型的 Operator State,在擴(kuò)容或縮容時,狀態(tài)的每個元素將保持不變,原始狀態(tài)的所有元素將被統(tǒng)一地分發(fā)到新的并行實(shí)例中。這意味著每個元素僅分配給一個并行實(shí)例,但所有并行實(shí)例的狀態(tài)的并集會包括所有原始狀態(tài)的元素。隨后由任務(wù)自己決定哪些條目該保留,哪些該丟棄。94H28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片94H28資訊網(wǎng)——每日最新資訊28at.com

思考:Source的擴(kuò)容(并發(fā)數(shù))是否可以超過Source物理存儲的partition數(shù)量呢?94H28資訊網(wǎng)——每日最新資訊28at.com

在使用像 Apache Kafka 這樣的消息隊(duì)列作為數(shù)據(jù)源(Source)時,消息隊(duì)列中的數(shù)據(jù)被劃分為多個分區(qū)(partitions)。這種設(shè)計(jì)主要是為了支持?jǐn)?shù)據(jù)的并行處理以及提高吞吐量。在使用 Flink 或類似的流處理框架時,一個常見的做法是將每個分區(qū)分配給一個并行的 Source 實(shí)例(也稱為 Source Task 或 Source Operator)進(jìn)行處理。94H28資訊網(wǎng)——每日最新資訊28at.com

如果嘗試將 Source 的并行度(并發(fā)數(shù))設(shè)置得比物理存儲(比如 Kafka 主題)的分區(qū)數(shù)量還要高,那么將會有一些并行實(shí)例分配不到任何分區(qū),因?yàn)榉謪^(qū)的數(shù)量是固定的,且每個分區(qū)只能被一個并行實(shí)例消費(fèi)(至少在 Flink 的默認(rèn)設(shè)置下是這樣)。這會導(dǎo)致資源浪費(fèi),因?yàn)槌龇謪^(qū)數(shù)量的那部分并行實(shí)例不會做任何實(shí)際的數(shù)據(jù)處理工作,但仍然占用系統(tǒng)資源。94H28資訊網(wǎng)——每日最新資訊28at.com

因此,在設(shè)置 Source 的并行度時,通常的最佳實(shí)踐是:94H28資訊網(wǎng)——每日最新資訊28at.com

  • 確保 Source 的并行度不超過其對應(yīng)物理存儲(如 Kafka 主題)的分區(qū)數(shù)量。

如果需要增加并行度以提高處理能力,相應(yīng)地也需要增加物理存儲的分區(qū)數(shù)量。對于 Kafka 來說,可以通過修改主題的分區(qū)配置來實(shí)現(xiàn)。
對于 Apache Flink,如果使用的是 Flink Kafka Connector,并且嘗試將并行度設(shè)置得比 Kafka 主題的分區(qū)數(shù)量還要高,F(xiàn)link 會在作業(yè)啟動時進(jìn)行檢查。如果發(fā)現(xiàn)這種配置不匹配的情況,F(xiàn)link 會拋出異常并終止作業(yè)啟動,以避免資源浪費(fèi)和潛在的配置錯誤。這種設(shè)計(jì)選擇確保了資源的有效利用和處理能力的合理分配,同時也避免了由于配置錯誤而導(dǎo)致的潛在問題。94H28資訊網(wǎng)——每日最新資訊28at.com

KeyedState對擴(kuò)容的處理

  • 什么是Key-Groups

KeyedState的算子在擴(kuò)容時會根據(jù)新的任務(wù)數(shù)量對key進(jìn)行重分區(qū),為了降低狀態(tài)在不同任務(wù)之間遷移的成本,F(xiàn)link不會單獨(dú)對key進(jìn)行在分配,而是會把所有的鍵值分別存到不同的key-group中,每個key-group都包含了部分鍵值對。一個key-group是State分配的原子單位。94H28資訊網(wǎng)——每日最新資訊28at.com

  • 什么決定Key-Groups的個數(shù)

key-group的數(shù)量在job啟動前必須是確定的且運(yùn)行中不能改變。由于key-group是state分配的原子單位,而每個operator并行實(shí)例至少包含一個key-group,因此operator的最大并行度不能超過設(shè)定的key-group的個數(shù),那么在Flink的內(nèi)部實(shí)現(xiàn)上key-group的數(shù)量就是最大并行度的值。94H28資訊網(wǎng)——每日最新資訊28at.com

  • 如何決定key屬于哪個Key-Group

為了決定一個key屬于哪個Key-Group,通常會采用一種叫做一致性哈希(Consistent Hashing)的算法。一致性哈希算法的基本思想是將所有的Key和所有的Key-Group都映射到同一個哈希環(huán)上。對每個Key進(jìn)行哈希運(yùn)算得到一個哈希值,然后在哈希環(huán)上找到一個順時針方向最近的Key-Group,這個Key就屬于這個Key-Group。即:Key到指定的key-group的邏輯是利用key的hashCode和maxParallelism取余操作的來分配的。94H28資訊網(wǎng)——每日最新資訊28at.com

如下圖當(dāng)parallelism=2,maxParallelism=10的情況下流上key與key-group的對應(yīng)關(guān)系如下圖所示:94H28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片94H28資訊網(wǎng)——每日最新資訊28at.com

如上圖key(a)的hashCode是97,與最大并發(fā)10取余后是7,被分配到了KG-7中,流上每個event都會分配到KG-0至KG-9其中一個Key-Group中。94H28資訊網(wǎng)——每日最新資訊28at.com

上面的Stateful Operation節(jié)點(diǎn)的最大并行度maxParallelism的值是10,也就是我們一共有10個Key-Group,當(dāng)我們并發(fā)是2的時候和并發(fā)是3的時候分配的情況如下圖:94H28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片94H28資訊網(wǎng)——每日最新資訊28at.com

先計(jì)算每個Operator實(shí)例至少分配的Key-Group個數(shù),將不能整除的部分N個,平均分給前N個實(shí)例。最終每個Operator實(shí)例管理的Key-Groups會在GroupRange中表示,本質(zhì)是一個區(qū)間值。比如上圖是2->3擴(kuò)容,那每個task的key-group的數(shù)量是:10/3≈3,也即是每個task先分3個key-group,然后把剩余的1個key-group分配給第一task。94H28資訊網(wǎng)——每日最新資訊28at.com

值得注意的是:94H28資訊網(wǎng)——每日最新資訊28at.com

Key-Group機(jī)制的特點(diǎn)就是每個具體的key(event)不關(guān)心落到具體的哪個task來處理,只關(guān)心會落到哪個Key-Group中:94H28資訊網(wǎng)——每日最新資訊28at.com

  • 首先 一個job運(yùn)行之后,如果要復(fù)用state,不允許在修改maxParallelism。
  • key 值的hash code決定落到哪個KG中,key本身不關(guān)系被哪個task處理,也就是說相同的KG在擴(kuò)容前后可能被不同的task處理。

總結(jié)

State是Flink流計(jì)算的關(guān)鍵部分。Flink 中的狀態(tài)分為兩種主要類型:Keyed State 和 Operator State。Flink提供了三種狀態(tài)后端:MemoryStateBackend、FsStateBackend、RocksDBStateBackend。對于Keyed State 和 Operator State應(yīng)對擴(kuò)縮容時有不同的分配方式。94H28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79982-0.html我們一起深入理解Flink State

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊一聊Python中Getattr和Getattribute的調(diào)用

下一篇: 大廠喜歡問的TreeShaking到底是啥?好在哪呢?五分鐘弄懂!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
99re国产精品| 有码中文亚洲精品| 国产精品va在线播放我和闺蜜| 欧美日本不卡| 国产精品欧美日韩一区二区| 国产日韩精品一区二区| 在线观看一区二区精品视频| 99re66热这里只有精品4 | 亚洲免费影视| 久久精品亚洲国产奇米99| 麻豆国产va免费精品高清在线| 欧美另类专区| 国产视频一区免费看| 亚洲黄网站在线观看| 亚洲新中文字幕| 久色成人在线| 国产精品久久久久久户外露出| 一区二区三区在线免费播放| 一区二区日韩伦理片| 久久九九热免费视频| 欧美日韩视频专区在线播放| 国产日韩精品一区观看| 亚洲精品国产品国语在线app| 亚洲欧美经典视频| 欧美激情一二区| 国产情人综合久久777777| 亚洲毛片在线观看.| 欧美在线视频免费| 欧美日韩午夜视频在线观看| 激情久久久久久久| 亚洲一区二区成人| 麻豆精品一区二区综合av| 国产精品久久久久久久久婷婷| 亚洲高清不卡在线| 久久成人18免费网站| 欧美日韩系列| 亚洲国产精品一区二区第四页av| 欧美一区中文字幕| 欧美天堂亚洲电影院在线观看| 亚洲成人中文| 久久精品99国产精品日本| 欧美午夜一区二区三区免费大片| 亚洲国产成人一区| 欧美影院精品一区| 国产精品久久久久9999高清| 亚洲日本一区二区三区| 久久天天狠狠| 国产午夜精品美女毛片视频| 亚洲午夜精品国产| 欧美日本中文字幕| 伊人激情综合| 久久国产主播| 国产麻豆综合| 亚洲一区三区视频在线观看| 欧美xx69| 亚洲成色777777女色窝| 久久久亚洲精品一区二区三区| 国产欧美日韩在线播放| 亚洲亚洲精品三区日韩精品在线视频| 欧美激情视频一区二区三区在线播放 | 99国产精品视频免费观看一公开| 乱码第一页成人| 尤妮丝一区二区裸体视频| 久久精品五月| 国产一本一道久久香蕉| 午夜精品一区二区三区在线| 国产精品xxx在线观看www| 99re热这里只有精品视频| 欧美激情影音先锋| 亚洲精品国产拍免费91在线| 男人的天堂成人在线| 亚洲第一黄色网| 麻豆国产精品va在线观看不卡| 精品69视频一区二区三区| 久久久国产午夜精品| 国产综合色产在线精品| 久久精品成人欧美大片古装| 国产无一区二区| 久久av一区| 国内自拍亚洲| 久久中文字幕一区| 亚洲国产精品传媒在线观看| 免费日韩av电影| 亚洲欧洲精品一区| 欧美激情一区在线观看| 亚洲精品免费一区二区三区| 欧美人与性动交a欧美精品| 99成人在线| 国产精品国产三级国产专播精品人 | 国产欧美va欧美va香蕉在| 亚洲欧美欧美一区二区三区| 国产精品午夜视频| 欧美一区二区在线| 激情偷拍久久| 欧美jizz19hd性欧美| 亚洲韩国精品一区| 欧美啪啪一区| 亚洲中字在线| 国产一级一区二区| 久久亚洲国产成人| 91久久国产精品91久久性色| 欧美日韩国产首页| 午夜在线视频观看日韩17c| 国产一区二区无遮挡| 免费视频亚洲| 99亚洲视频| 国产精品视频网址| 欧美一区二区三区免费观看视频| 黄色成人av网站| 欧美国产日韩视频| 亚洲天堂av在线免费观看| 国产女主播一区二区三区| 久久人91精品久久久久久不卡| 亚洲国产精品一区二区三区| 欧美视频在线观看免费网址| 欧美伊久线香蕉线新在线| 1024亚洲| 欧美午夜视频一区二区| 欧美一区二区三区四区在线 | 久久激情网站| 最新日韩精品| 国产精品午夜视频| 另类天堂视频在线观看| 一本一道久久综合狠狠老精东影业| 国产精品素人视频| 麻豆av一区二区三区| 99精品国产热久久91蜜凸| 国产精品永久| 美国十次成人| 亚洲一区欧美| **欧美日韩vr在线| 国产精品国产三级国产| 久久亚洲综合| 亚洲影视九九影院在线观看| 在线成人激情黄色| 国产精品成人在线| 另类国产ts人妖高潮视频| 亚洲一级黄色片| 亚洲国产cao| 国产精品五月天| 欧美极品色图| 久久久精品国产免费观看同学 | 亚洲欧美一区二区三区在线| 亚洲高清视频一区二区| 国产精品亚洲综合久久| 欧美成人精品h版在线观看| 午夜精品福利在线| 亚洲伦理自拍| 国产永久精品大片wwwapp| 欧美肉体xxxx裸体137大胆| 久久亚洲欧美国产精品乐播| 亚洲一品av免费观看| 亚洲经典三级| 国内精品久久久久国产盗摄免费观看完整版 | 久久美女性网| 亚洲欧美春色| 99国产精品久久久久久久| 激情成人综合网| 国产精品性做久久久久久| 欧美精品不卡| 久久综合网络一区二区| 小黄鸭精品aⅴ导航网站入口| 亚洲伦理网站| 在线观看91精品国产入口| 国产精品区免费视频| 欧美人与禽猛交乱配| 免费欧美日韩国产三级电影| 欧美伊人久久大香线蕉综合69| 国产精品99久久不卡二区| 亚洲三级电影在线观看 | 欧美一区二区精品久久911| 一区二区日韩欧美| 最新日韩中文字幕| 伊人成人在线视频| 国产一区二区三区高清| 国产精品免费观看视频| 欧美日韩免费视频| 欧美剧在线观看| 欧美第一黄网免费网站| 久久在线免费视频| 久久久不卡网国产精品一区| 午夜精品一区二区三区在线| 亚洲一区免费在线观看| 一区二区三区视频在线| 日韩一级精品| 99国产精品一区| avtt综合网| 99视频精品全部免费在线| 亚洲精品一区二区三区樱花| 最新69国产成人精品视频免费| 亚洲高清在线观看一区| 伊人激情综合| 在线成人激情视频| 亚洲福利在线观看| 亚洲激情综合| 亚洲精品欧美一区二区三区| 91久久在线播放| 亚洲精品日韩激情在线电影| 亚洲人精品午夜| 亚洲另类春色国产| 日韩一级黄色大片| 99精品国产在热久久下载| 99日韩精品| 亚洲一区二区三区国产|