日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

No.1-Apache IoTDB 随笔 - Time Series DBMS 综述

發布時間:2024/8/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 No.1-Apache IoTDB 随笔 - Time Series DBMS 综述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介: 這是一篇無法一口氣讀完的、文字過萬[正文字數14390]的長文,這是一個無法中途不上廁所就看完的、關于時序數據庫的視頻[時長111分鐘]分享的文字整理..

大家好,很開心能夠和大家一起交流時序數據庫的相關的內容

?

首先還是簡單自我介紹一下,我是 孫金城,花名 金竹。我是2011年加入阿里,在2016年之前一直做公司內部的研發工作,包括阿里郎,Blink等平臺。

?

從2016年到現在我一直重心在開源建設上面,包括ApacheFlink/ApacheBeam/ApacheIoTDB,在這個過程中也得到了開源的一些肯定,目前是BeamCommitter,ApacheFlink和ApacheIoTDB的PMC,也是Apache Member,目前全球華人大概有30+的ApacheMember,當然,隨著開源的越來越熱,國內每年參與開源建設的同學也在逐漸的在增加。

?

那么2020之后會有怎樣的規劃呢?本著但做好事,莫問前程的心態,會多多在訂閱號中記錄我在流計算和IoT方面的認知。最終努力做到走進阿里/踏入開源,成為最好的自己.

?

那么為什么一直做流計算會慢慢選擇了解IoT相關領域呢?因為在馬老師看來“5G時代,加速的不僅僅是通訊行業,而是更多的促進物聯網(IOT)領域的發展。IoT將是一個新的浪潮。那么我參與IOT領域的切入點是什么呢,就是從了解時序數據庫 進行著陸的...

?

如圖,這不是一篇經驗分享,而是一個學習過程分享

了解時序數據庫最先想到的是: 了解一下時序數據庫的現狀及發展趨勢,那么這個數據的權威性,大家應該有所共識,在db-engines網站的排名應該很客觀的。如圖,從2018年開始,TimeSeriesDBMS的關注度就持續迅猛的增長。其實不僅僅db-engines網站有這樣的數據,Gartner也給出了預見性的判斷。我們一起看一下...

在2019年"賦權的邊緣" 就成為了十大戰略性技術趨勢之一,邊緣由物聯網驅動,需要使處理計算更接近端而不是集中式的云服務器。當然早在2018年 "云向邊緣計算挺進" 的趨勢就已經非常明顯。邊緣設備的信息的收集/存儲和計算需求與日俱增,一直到目前2020年,更多的計算和存儲能力都逐漸下沉到設備端,云邊端一體將是今后幾年持續的焦點。設備數據具備時序性,而作為物聯網領域具備存儲和計算能力的產品就是時序數據庫。那么目前業界時序數據庫的陣營是怎樣的狀況呢?我們繼續看一下...

同樣出自DB-Engines的排名信息,目前有幾十種(大概34種)時序數據庫,大家熟知的InfluxDB自2016年以來穩穩的位居榜首,隨著2018年IoT領域的崛起,InfluxDB的熱度也持續飆升,穩穩地龍頭位置,那么InfluxDB為啥如此受到時序數據存儲技術的青睞呢?我們接下來就會和大家細致進行分析...

其實時序數據庫早在1999年就已經有RRDtool,全稱RoundRobin Database。新數據會自動覆蓋老數據,也就是考慮了時序數據的時效性,在2008年又出現了Graphite,Graphite是一個用于采集網站實時信息,并進行統計的開源項目,可用于采集多種網站服務運行狀態信息。隨后就是大家熟知的OpenTSDB,InfluxDB,還有feacebook的內存版時序數據庫,再有就是非常著名的用于監控的Prometueus,2017年,2018年的時候時序數據庫已經發展的非常迅速來,這個在剛才的DB-engines網站數據和Gartner給出的戰略技術趨勢信息是非常吻合的。那么在2020年,Apache開源社區又出現了時序數據庫的黑馬 ApacheIoTDB,將來還會有哪些時序數據庫產品呢?我們讓時間來揭曉。

那么,在這里,拋出一個問題,就是:“時序數據庫難道不能直接存儲到關系數據庫嗎?”為啥要造出很多時序數據庫,時序數據庫和關系數據庫又有怎樣的本質區別呢?

其實數據存到哪里合適,還是要看數據本身的特點,以及數據處理的需求。面對IoT領域,時序數據有很多的數據來源,比如汽車,火車,飛機等交通工具,以及我們越來越被大家認可的智能家居產品等。

?

當然最大的數據量來源還是工業領域的各種設備傳感器數據,這些設備的工況數據收集和處理將給存儲和計算帶來巨大的挑戰。

?

我們以一個具體的案例來說,這是GoldWind發電數據采集,GoldWind有超過2w個風機,一個風機有120-510個傳感器,采集頻率高達50Hz,就是每個傳感器1秒50個數據點采集峰值。這要算下來就是每秒5億個時序指標點的數據。

?

這個數據量讓數據采集/存儲/計算面臨很大的挑戰。同時還有我們業務中的一些非常常見的采集/查詢需求,20萬/妙的吞肚需求是非常常見的,但是這樣的需求單機關系數據庫也是很難搞定的,我們接下來會分析一下具體原因。

好的,那么還是簡單梳理一下時序數據的特點,首先時序數據有特定的一些概念。如圖:Metric,就是我們要采集的指標,類似一張表,還有Tag,就是metric的屬性特點,比如指標屬于哪個設備,哪個區域等等維度信息。再有Field就是真實要采集的指標名稱。那么非常重要的時序數據一定有數據產生的時間,就是Timestamp時間戳信息,指標數據的時效性也是非常重要的,所以要有時間信息。那么Point就是類似表的一行數據。我們以風力 指標 為例 簡單圖示一下這些概念。

Wind-force就是Metric,其中 city,region就是Tag,speed和direction就是Field。當然Timestamp不用多說就是指標數據產生的時間了。

?

那么這種關系設計的方式大家不難發現,tag的數據存儲會有很多的冗余。這是關系數據庫存儲時序數據的一個涉及到存儲成本的問題。當然問題不僅如此,我們繼續往下看。

現在,我們簡單總結一下時序數據場景的特點或者說是需求核心會涉及到寫入/讀取/存儲成本三個維度。寫入要支撐上千萬甚至上億的吞吐能力;讀取就需要根據不同的業務有不同的讀取需求,后面我們會慢慢分析到。當然面對成本問題,海量數據的存儲成本無疑是時序數據庫設計的重中之重。所以,面對這樣的時序數據場景的特點,時序數據存儲到關系數據庫就會有很多弊端,比如剛才說的數據冗余造成的成本問題,還有寫入的吞吐問題等,那么我們接下來就要討論這些問題存在的本質原因...

好,回過頭來我們在來看看目前的時序數據庫從架構的角度有哪幾種?

?

第一種,就是在關系數據庫基礎上進行改進的時序數據庫,比如基于PG開發的Timescale。

?

第二種,就是在KV數據庫的基礎之上進行改進的時序數據庫,比如,基于HBase開發的OpenTSDB。

?

第三種,就是為時序數據量身定制的時序數據庫,那么目前的領頭羊就是InfluxDB。當然,我前面說過,我也很看好2020新晉的Apache頂級項目ApacheIoTDB。

?

?

這三類時序數據庫又怎樣的特點呢,我們接下來逐一進行討論分析...

我們先來看看基于關系數據庫的時序數據庫,既然基于關系數據庫,那么我就要聊聊和關系數據庫密切相關的存儲結構。

?

首先我們看一個簡單的二叉樹,我們知道二叉樹是樹形結構的一個重要類型。許多實際問題抽象出來的數據結構往往是二叉樹形式,而且二叉樹的存儲結構及其算法都較為簡單,二叉樹特點是每個結點最多只能有兩棵子樹,且有左右之分。那么我們看看怎樣向二叉樹里面插入一個數據點呢?

?

如圖,我們插入節點10,插入的過程是二分法,即使從整個節點的數值的中間開始,如果要插入的值比這個數小就從左子樹繼續二分查找,如果要插入的數據比當前數大,就從右子樹繼續查找,那么按照這個算法,二叉樹的寫入和查詢的復雜度都是logN。

?

我們再舉一個小例子,可能目前我們講解的內容很簡單,大家都很熟悉,不過為了為后面的內容做鋪墊,大家還是稍微耐心聽我多啰嗦幾句。這個例子,就是假設我們有如圖8個數據,我們如果想要查找數據2,那么我們先看中間數據(第4個)點,13,比較一下13比2大,所以要查詢的2一定在13的左邊,我們再從左邊的數據進行二分查找,左邊的中間數據5,發現5還是比2大,那么就需要查找左子樹,目前只剩下了2,當然也就是我們要找的數據了。那么logN其實就是log2N對吧,集合8個數據,查找一條數據就是log8,2的3次方等于8,所以log8就是3次,這是二叉樹的查詢復雜度的一個簡單示例說明。OK,這個二叉樹介紹呢有點浪費大家時間,廢話有點多,大家見諒,那么,接下來我們就介紹關系數據庫中使用的存儲數據結構。

?

在實際的關系數據庫中有2種數據存儲結構,一個是BTree一個是B+Tree,那么,這兩種數據結構格局特色,都有使用的場景。那么這兩種數據結構的查詢復雜度是怎樣的呢?有什么本質區別。

?

BTree的寫入成本是LogBN,B就是樹的階數,如圖就是3階BTree,每個節點的黃色方框表示的指針個數就是樹的階數,藍色部分就是具體構建BTree節點的數值,如果是索引樹的話,藍色部分就是構建索引的key的值,比如訂單號之類的關系數據庫的索引字段。

?

B+Tree的寫入成本是LogBN,如果都是LogBN那么Btree和T+Tree有啥本質區別呢?這要看看BTree和B+Tree從數據的結構上有啥區別?

?

最本質的區別是BTree在每個樹節點是有數據存放的,B+Tree只有葉子節點才會存放數據,我們說的數據就是關系數據庫中一行數據(包括Key和普通字段),比如訂單號是key,訂單號以及訂單對應的產品名稱,數量,金額等就是數據。同時還有一個很大的區別就是B+Tree結構在樹葉節點是有指針指向相鄰的葉子節點的,是一個鏈表。這特點,大家想想有什么利好?對,這個特點是有助于區間查詢的。大家花幾秒鐘時間思考一下,相對于BTree是不是有這樣的優勢?:)

?

這里大家可能發現一個問題,就是這個算法復雜度應該是LogN,為啥是LogBN。本質上在存儲角度我們考慮的是DAM模型,也就是計算磁盤訪問次數的成本。

?

我們繼續思考另外一個有意思的問題?Btree的成本和B+Tree都一樣,B+Tree又有友好支持區間查詢的優勢,那么兩個共存的意義是什么呢?好,我們還需要繼續搞清楚這件事情...其實對于不太了解這些數據結構的同學是有點燒腦的,對于熟悉的同學可以放松一下,我們繼續探究B+Tree存在的意義,拋開算法復雜度之外,還有哪些其他存儲領域的實際因素,導致B+Tree更有優勢。

上面是BTree從算法角度的復雜度推導,下面是B+Tree的...

這里有一個地方要說明一下,這里推理的復雜度是logN,但是前面我們說的是logBN,這個差別是什么?其實本質前面是磁盤訪問復雜度,不包括數據塊內的key值查找。這個大家如過感興趣,可以思考一下,如果有問題歡迎留言:)

?

OK,放松3秒鐘,然后繼續分析 B+ Tree ?我們繼續和這個問題死磕...

要想清楚上面的問題,我們還需要一些算法之外的輔助內容,雖然是輔助但卻是和存儲系統密切相關的部分。那就是磁盤。在存儲領域選擇BTree還是B+Tree和磁盤IO有著直接的關系。那么什么是磁盤IO呢?

我們知道計算機的CPU就如同人的大腦,大腦根據外部輸入進行思考,并為我們下達行為命令,那么CUP同樣要依托于外部輸入進行計算,然后將計算的結果再向外輸出。那么我們存儲里面的磁盤IO可以簡單理解成從磁盤讀取數據和向磁盤寫數據的過程。

這個圖應該是我們上學課本或者數據庫理論方面書籍里的圖片,處理器,數據總線,主存,磁盤等等,我們再熟悉不過的名詞,當然內部也是非常復雜的,我們今天挑與我們要討論的問題相關的內容進行分析。

?

那就聊聊磁盤,首先磁盤內有很多的盤片,每個盤片又由若干扇區組成,扇區是磁盤讀寫的最小單元,每個扇區多大呢?一般是512個字節。好,那么這個和數據庫又有啥關系呢?

?

數據庫的數據就存儲在磁盤上,但是從數據庫系統角度如果每次讀取一個扇區的數據就太慢了,所以數據庫一般會有數據塊的抽象設計,數據都是一個數據塊讀取一次磁盤,一般數據塊大小是4~64KB,那么重點來了,通常讀取一個數據塊的磁盤IO需要消耗大概10ms左右的時間,這是非常耗時的操作了,所以我們在數據庫設計的時候一定要盡量減少磁盤的訪問次數。那么MySQL的InnoDB默認數據塊的大小是16KB,當然這是可以配置的。不同數據庫默認值不一樣,比如HBase存儲的數據塊大小應該默認64M。好的,說到這里,不知道大家是不是知道我接下來要說什么了?有這方面經驗的估計秒懂,但是第一次思考這個問題的,還是需要些解釋的,我們往下繼續進行...

OK,我們還是舉一個例子來討論,假設以16K為塊大小,也就是每16K數據需要訪問一次磁盤,我們的目標是減少磁盤I/0,那么數據相同的情況下,B-Tree和B+Tree哪個磁盤I/O更少呢?假設我們有一個查詢:select* from device where deviceId=38deviceID是一個bigint的8字節類型,作為索引key。我們分別分析一下,Btree和B+Tree哪個訪問磁盤更少?

?

?

主鍵deviceId為bigint類型,長度為8字節,而指針大小在InnoDB源碼中設置為6字節,這樣一共14字節,也即是如圖一個藍色框數據和一個橙色框指針需要14個字節存儲。那么,我們一個數據塊中能存放多少這樣的單元,就代表一次可以在內存加載多少數據key(deviceID)和對應的地址指針,即16384(16K)/14bytes=1170。也即是,每1170個設備id讀取一次磁盤,那么也就是內存構建一個1170階的B+Tree。

?

那么大家想,如果是BTree結構,一行數據除了設備Id還有他設備信息,那么Btree在沒有節點不但存儲key和指針,還要存儲數據,所以同樣的數據塊大小,是不是一次加載到內存的Key數量比B+tree要少很多,那么在查詢時候必然比B+Tree訪問磁盤IO要多,大家思考2秒鐘,是不是這個道理?:)

?

那么如果是BTree,相同的塊大小,樹的階數就比較小,相對于B+Tree來說,相同條件B+Tree的階數更大,也就是復雜度上的logBN,的B比較較大,B越大,相同的查詢開銷越小。

那么,既然B+tree很優秀,我們看看一個B+Tree能支持怎樣的數據規模呢?好我們想想B+Tree只有葉子節點要數據,比如我們一行數據是1K,一個數塊是16K,那么也即是一個數據塊可以存放16行數據。那么一個3層的B+Tree,葉子節點有多少行記錄呢?三層的樹的話,第二層有多少數據指針指向第三層葉子節點就有多少數據塊數據的數據,每個葉子是一個數據塊,每塊有16行數據就能計算數據規模了。那么底層有多少指針呢?還是按照剛才MySQLinnoDB的例子算,會構建一個1170階的B+Tree,大家還記得“階”的概念吧,就是一個節點指針的數量,那么1170階的B+tree,第二層首先有1170個節點,每個節點又有1170個指針(剛才我們計算過),那么我們可以計算第三層的記錄行數了,那就是:1170*1170*16=2000w+。也即是3層的1170階B+tree可以完美的支持2000w的數據量,那么這2000w數據量查詢一條數據的成本是多少呢?通常磁盤IO的代價是最大的,剛才我們說的了一次磁盤大概10ms,那么3層,我們最多要3次磁盤IO就可以查詢到了。也就是毫秒級的查詢延時。

我們再看一個例子,分析為啥3次就夠了,假設這棵樹,我們要查找key為30的數據,那么過程如下。

?

  • 根據根結點指針找到文件目錄的根磁盤塊1,將其中的信息導入內存。[1次磁盤IO] 此時內存中有三個key(5,28,65)和三個存儲其他磁盤塊的地址的數據。我們發現28<30<65,因此我們找到指針p2。
  • 根據p2指針,我們定位到磁盤塊3,并將其中的信息導入內存。 [2次磁盤IO] 此時內存中有3個key(28,35,56)和三個存儲其他磁盤塊的地址的數據。我們發現28<30<35,因此我們找到指針p1。
  • 根據p1指針,我們定位到磁盤塊8,并將其中的信息導入內存。 [3次磁盤IO] 此時內存中有3個key(28,30,33)和對應的數據,完成查找。

?

OK,查詢的邏輯和成本消耗先介紹到這里。下面更重要的內容來了,也就是內容會涉及到了為什么關系數據庫不適合作為IoT場景的存儲,大家要多花精力理解,我給大家演示一下BTree的寫入的過程。。。

好,接下來,假設我們有數據按照如圖的順序到來,如何一步,一步的構建一顆BTree索引樹呢?

好,首先來的數據是3,35,90我們構建一個樹的形態如圖,35是root,左右各有一個孩子。

?

?

然后又來了17和26,二分的方式,17和26都小于35,所以都在35的左子樹,但是這里有個問題?

?

?

就是我們是一個3階Btree,指針有3個,節點只能有2個,所以3,17,26已經超了,我們要進行節點的分裂,后面存儲層面就涉及到磁盤塊的分裂。

?

好,我們進行節點分裂之后,樹的樣子變成,root節點有2個key3個指針。我們繼續看后面的變化。。。

我們看看后面來了哪些數據。。。樹的變化如圖,這里提醒一點,中序遍歷的不同的樹形狀可以得到相同的結果。我們這個例子核心是想說明數據的構建過程有節點的分裂,也意味著存儲有磁盤塊的分裂,會產生大量的隨機磁盤IO。我們繼續看變化。。。

接下來再后面的數據。。好,36,87,29,65,75到來后,樹的形狀如圖。。。(這棵樹是故意弄的很平衡哈:)

最后,我們看看有哪些數據到來,最終樹的形成。基于B-Tree/B+Tree的存儲,數據寫入造成很多的隨機IO。我簡單說一下,大家思考,如果一個節點已經寫入磁盤了,后面樹形發生變化之后,節點分裂,原先存儲到一個磁盤塊的數據,就會分開存儲到2個新的磁盤塊,那么原先的磁盤塊就要刪除。這樣反復的操作,那就造成了Btree/B+tree很多的隨機IO了。

OK,聊到隨機IO對存儲系統的影響,我們也要順便說一下相對于隨機I/O就是順序I/O。

?

  • 順序IO - 是本次 I/O 給出的初始扇區地址和上一次 I/O 的結束扇區地址是完全連續或者相隔不多的。在順序I/O訪問中,磁盤所需的磁道搜索時間較少,讀/寫磁頭可以以最小的移動訪問下一個塊。
  • 隨機IO - 是指讀寫操作時間連續,但訪問扇區地址不連續,隨機分布在磁盤LUN的地址空間中。

?

隨機I/O可能是因為磁盤碎片導致磁盤空間不連續,或者當前block空間小于文件大小導致的。連續 I/O 比隨機 I/O 效率高的原因是:在做連續 I/O 的時候,磁頭幾乎不用換道,或者換道的時間很短;而對于隨機 I/O,如果I/O 很頻繁的話,會導致磁頭不停地換道,造成效率的極大降低。如圖,我們看到不同磁盤 順序寫和隨機寫的性能差異,差不多都是數量級的差距。即便SSD的硬盤,希捷公司也有明確的說明,大家可以參考鏈接查看測試數據。

?

所以隨機IO和順序IO對存儲系統的寫入性能有很大的影響。那么這些差異和時序數據場景有什么關系呢?我們繼續聊。。

首先我們還是要切回時序數據場景的特點,IoT場景是寫多/讀少的場景,寫入性能至關重要。所以基于關系數庫,也就是Btree的存儲結構的時序數據塊在存儲時序數據時候都存在IO效率低下,寫入速度很慢的現象。那么需要如何解決呢?

解決BTree的寫入問題一般有兩種方式,一種是是COLA(Cache-Oblivious Look ahead Array)- tokuDB。另一類就是我們今天要重點分析的,LSM tree(Log-structured merge Tree)結構。這個數據結構的插入復雜度是O(1),這個比B+Tree的logN要優秀很多了。

?

目前基于LSM Tree數據結構的存儲有很多,如著名的KV存儲HBase還有LEVELDB,RocksDB等等。

?

那么為了解決時序數據寫入問題,時序數據庫陣營出現了一些基于KV存儲的時序數據庫,比如大家熟知的,基于HBase的OpenTSDB。

?

LSM Tree全稱是 Log-structured merge ?Tree,Merge就是合并,Log structured就是像寫日志一樣進行順序寫入,append only的方式。

?

?

LSM樹的核心思想就是放棄部分讀能力,換取寫入能力的最大化。核心思路其實非常簡單,就是假定內存足夠大,因此不需要每次有數據更新就必須將數據寫入到磁盤中,而可以先將最新的數據駐留在內存中,等到積累到一定程度后,再使用歸并排序的方式將內存中的數據合并追加到磁盤隊尾。我們來看一下這個基于LSM Tree的寫入過程:

首先我們要解決如何做到順序IO,就是一個數據寫入到來之后,先進行WAL的落盤。那么如何解決亂序?那就是,寫WAL是為了恢復,真正的有序寫入要將數據寫入內存,也就是Mem-Table,然后對Mem-Table進行排序,數據寫入到內存之后,就表示寫入成功了。那么寫到內存之后會怎樣操作呢?就是要解決落盤問題。當內存數據到達一定規模,就需要寫入磁盤,LSM Tree的做法是將要刷磁盤的Mem-Table變成immutable,刷磁盤同時不影響寫入請求,在創建一個新的Mem-table。這樣的持久化在數據持續變化和查詢的時候會有什么問題嗎?當然有,比如,key更新/刪除了怎么辦?要查詢的key在多個文件怎么辦?所以,LSM Tree結構還需要有一個Compactions的階段,以及對數據創建索引的過程。我們以HBase的HFile為例,存儲結構如圖,文件中除了數據還需要有索引和Boolmfilter的機制進行加速查詢。

上面我們了解了LSM Tree的寫入邏輯,那么查詢邏輯是怎么樣的呢?查詢邏輯最核心的是要查詢索引,首先在內存Mem-table里面查詢,然后在immutable Mem-table里面進行查找,然后是磁盤Flie里面進行查找。當然這里有Bloom filter輔助查詢。Bloom filter本質就是一個bitmap,每個key數據用k個獨立的hash就行計算,填充bitmap,數據查詢時候Bloomfilter說沒有一定沒有,Bloomfilter說有,不一定有,還要繼續索引查找。

LSMTree雖然以犧牲查詢為代價來解決Btree寫入問題,但是會利用一些輔助手段,比如索引,Bloomfilter基數估計等手段加速查詢,同時各種數據庫還會有不同的Cache機制加速查詢。這樣聽起來基于LSMTree結構的KV存儲應該有很不錯的讀寫表現。那么基于KV存儲的時序數據庫應該怎樣設計呢?

我們還是以大家熟知的基于HBase的OpenTSDB為例來進行分析,看看KV存儲在設計時序數據存儲時候的設計技巧和存在的問題。

以HBase為例,我們聊聊KV存儲對LSMTree的應用,如圖大家應該很熟悉,HBaseClient向HBase的RegionServer發起讀寫請求,當然HLog就是LSMTree中的WAL部分,MemStore就相當于LSM里面的Mem-table部分,HFile就是持久化文件。

?

簡化一下就是HBase的HRegionServer包括HLog和HRegion,一個HRegion包括很多的HStore又分為MemStore和HFile兩個核心部分。

?

其中按照Rowkey進行region劃分,每個region對應一個ColumnFamily,一個MemStore。

?

每個ColumnFamily里面又有若干Qualifiler。當然任何一個KV數據又會包含一個時間戳Timestamp。

?

那么按照這個架構,一條完整的數據是怎樣的呢?

如圖這是一條完整的KV數據,開頭KeyLength和ValueLength:兩個固定的長度,分別代表Key和Value的長度。

在Key部分:RowLength是固定長度的數值,表示RowKey的長度,Row 就是RowKey的值。

Column Family Length是固定長度的數值,表示ColumnFamily的長度

接著就是ColumnFamily,再接著是Qualifier,然后是兩個固定長度的數值,表示TimeStamp和KeyType(Put/Delete)

Value部分沒有什么復雜的結構,就是純粹的二進制數據,這個也是很大的成本問題,后面我們會介紹。

?

那么這里有兩個常見問題,一是按Rowkey進行Region的劃分,熱點問題怎么處理?二是按ColumnFamily進行Store存儲,如何設計ColumnFamily包含的Qualifier?這個磁盤塊,磁盤IO有什么關系?

?

我們知道HBase的Rowkey都是字典序的,一般Rowkey的典型組成會是:業務KEY+時間倒序(Long.MAX_VALUE -timestamp)/加鹽/Hash組成,那么時間倒序有利于最新的數據在最前面,加鹽或者Hash可以緩解熱點問題。關于ColumnFamily的Qualifier的設計,簡單講一個原則就是經常一起查詢的數據要作為同一個ColumFamily的Qualifier。

?

除了這兩個問題,我們還有2個問題需要考慮,那就是數據查詢時候如何定位一條數據屬于哪個Region?HFile里面的KV數據如何快速讀取?

回答Region尋址和HFile快速讀取的問題,也要分析HBase對Region的管理方式,Region信息屬于HBase的內部抽象,對Region的管理HBase也建立了一顆B+樹,我們前面聊過,如果一個數據塊事16K,那么一個3階的B+Tree能容納2000w的數據量,一次查詢只需要3次IO,那么HBase數據塊默認大小事64M(可以配置更大),那么這些Region一般會加載在內存中,所以在B+Tree的數據機構上HBase對region的尋址非常快速。

?

同樣在HFile里面定位rowkey的位置也是基于二分查找的,如圖查詢Rowkey為fb的過程,圖中紅色箭頭部分,第一層f在a和m之間,所以查詢a的子樹,第二層f在d和h之間,所以查詢d所指向的子樹,第三層我就找到了f這個值,然后在第四層在查找fb數據最終返回數據。

?

這里提醒一下HBase存儲是LSMTree數據結構,但是為了加速查詢內部對Rowkey的索引建立和Region的管理都是采用了B+Tree的數據結構。

好了,解了HBase的基本內容之后,我們思考一下,我們如何基于HBase設計一個時序數據庫呢,首先要思考的問題就是,如何在HBase中對時序數據的核心概念進行抽象映射。也就是時序數據核心概念是Metric相關內容,Tag相關內容,和Timestamp時間戳。HBase現有的概念是ColumnFamily,ColumnQualifier當然也具備Timestamp信息。

?

那么我們無法改變HBase的KV數據結構,只能在表達時間序列數據的同時最充分的利用HBase現有的數據結構抽象,最核心的就是Rowkey的設計和ColumnFamily和ColumnQualifier的利用技巧。我們逐一看一下。

那么基于HBase的時序數據庫OpenTSDB是如何設計的呢?

我們先看最核心的OpenTSDB的RowKey Schema的設計,其組成是salt] <metric_uid><timestamp><tagk1><tagv1>[...<tagkN><tagvN>]

?

那么,按照HBase的思維這里有一個很奇怪的問題,就是【salt】設計竟然放在了rowkey的最前面,這個Salt解決了什么問題,同時有帶來了什么問題呢?

?

當然Salt部分和前面我說的HBaseRowkey里面也可以加Salt的作用是一樣的,解決熱點問題。但是這里問題是,在查詢的時候用戶不知道salt的值如果進行查詢呢?這肯定是帶來了數據查詢的性能問題。其實OpenTSDB里面Salt是分桶的抽象,默認20個桶,用戶可以配置,那么查詢時候同一個業務rowkey就要查詢20次然后在進行merge,這個會極大的影響get查詢。

好,那么通常Rowkey設計不攜帶salt部分,同時OpenTSDB在Rowkey設計上也下了不少功夫,首先大家看到Rowkey的開始是一個metric的uid。

?

如圖,OpenTSDB里面的一個rowkey示例,包括 metric部分,時間戳部分,tagk和tagv的組成。

?

我們以前面我們風力數據采集的信息為例,Rowkey就應該是speed+ts+city+hangzhou+region+xihu。

?

那么這里面我們還沒有解釋uid的作用,后面我們慢慢進行說明。現在要考慮的問題是,Metric&Time&Tag這個在rowkey中的順序可以變化嗎?或者說如何設計最合理呢?

HBase是按照rowkey的字典序順序排列的,為了減少查詢IO,最好將相同的Metric寫到相同的磁盤塊,所以OpenTSDB需要將Metric作為Rowkey的最前面。

Timestamp沒有業務語義,不適合放到最前面(如何放到前面可能出現,多個Metric會混雜在一個磁盤塊,不利于查詢,寫入也會造成熱點問題)

Tags放在最前面,會造成大量的Scan操作,比如,用戶指定多個Tags中的某個查詢,而且不是前綴Tag的話,就會在HBase里面將會變成大范圍的掃描過濾查詢,當然Tags放到Timestamp前面也存在Scan的問題。

?

好,思考了這些現實問題,OpenTSDB對rowkey的設計就是根據用戶的metric+ts+tag信息的方式組成。那么目前看這個rowkey的設計還是很合理的,那么是否也在海量的時序數據場景有一些明顯弊端呢?

很明顯,這個key組成里面根據業務的不同會變得復雜,首先就是HBase的key里面有timestamp,是一定要有的,然后業務的rowkey里面也是有時間戳信息的。

?

為了套用先有的HBase結構,存儲中有很多無用的信息,比如comumnFamily部分,KeyType部分等。同時Rowkey里面的metric是一個業務字符串,這些數據在實際存儲過程中很多冗余,造成存儲成本的浪費。

?

還有HBase是弱類型問題,不能對Value部分根據業務的不同字段類型進行專門的壓縮。同時,Rowkey部分包含很多tag信息,沒有對Rowkey和tag進行倒排索引,同樣使得查詢受限。大量scan操作性能很差。所以基于KV的時序數據庫存在客觀的設計弊端。

面對HBase設計時序數據存儲的弊端,OpenTSDB做了哪些比較核心的優化呢?

?

首先是Rowkey里面的Timestamp時間粒度不是毫秒,而是小時,這樣極大的減小了scan的部分,一小時的數據可以一個get進行獲取。另外我們一直提到的metric_uid,其實也是對存儲的優化,將業務字符串映射成uid,可以極大簡化存儲。還有在Compactions部分,會將很多Qualifier數據合并成一個Qualifier里面,提高壓縮效率。

我們細致的看一下OpenTSDB的data Scheam和uid mapping的Schema。

?

最核心要了解的就是RowKey部分,我們看到很多的編碼,我們看到編碼后的rowkey和上面編碼前的字符串有極大的改進。

?

關于UID,OpenTSDB里面采用3個字節存儲,約1600萬個值,足夠滿足大部分業務場景,同時我們也可以根據業務規模改變UID的生產策略。這樣極大的節省存儲和key排序成本。

?

同時我們看到,TSDB-UID的映射表,是雙向的,既可以同UID找到key,也可以通過key找到UID。大大提高搜索效率。

OK,坦白講,不論OpenTSDB怎么優化,首先都需要先填補HBase設計在時序數據庫場景適配的坑,再進行優勢發揮,那么這樣的客觀事實,勢必會催生為IoT時序數據而生的原生時序數據庫。

?

一個是大家熟知的時序數據庫領域的領頭羊Influxdb,另一個是2020年Apache 新晉的頂級項目ApacheIoTDB。我們分別探討一下。

InfluxDB在時序數據庫排名第一,這個成績不是浪得虛名,而是實至名歸,有句話叫,天才出于勤奮,其實InfluxDB從誕生伊始,一直到現在都在不停的努力,不停的為解決現實問題而優化改進。我們接下來都是基于InfluxDB1.8版本進行描述的。

?

我們了解一下Influxdb 引擎升級的歷程,最初為避免B+Tree帶來的寫入問題,InfluxDB采用了LSMTree的存儲設計,底層引擎采用LevelDB,但是后面發現LevelDB存儲不能熱備份問題,于是底層引擎又采用RocksDB解決,但是RocksDB當時又存在時序數據場景冷數據的高效刪除問題,我們知道海量的數據通過api的方式逐條刪除是相當耗時的(會死人的),所以InfuxDB又進行改進引入Shard,每個shard存儲一片時間連續的數據,冷數據都是時間較老的數據,一個shard對應一個底層LevelDB數據庫,要刪除的時候只需要關庫,刪文件即可。但是這個設計又帶來了新的問題,就是系統的文件句柄問題,后面又有BoltdDB來解決,但是BoltDB里面利用了mmap和B+Tree的數據結構,B+Tree的隨機寫問題又糙成了IOPS限制問題,所謂痛苦造就成就,種種投產問題推升了目前InfulxDB全新的存儲和索引架構,TSM架構。

?

接下來我們看看目前InfluxDB的TSM架構細節,嘗試 盡量 知其然,知其所以然。Lets go...

首先,不可避免的我們要了解InfuxDB針對時序數據場景的核心概念的抽象,我們看InfluxDB新增了一些抽象,一個是database,一個是retentionpolicy,尤其retentionpolich是專門針對時序數據的冷數據設計的,原生的時序數據庫的優勢就是在設計之初就會考慮時序場景的種種典型問題。那么這些概念的層次結構是怎樣的呢?

?

首先Database是一個最上層的抽象,或者說是管理單元,然后數據也是要按時間進行Sharding的,每個shard都歸屬于一個ShardGroup,然后Shard里面就是具體時序數據了,當然包括時間戳,Series和Field信息,其中Series就包含了metric和tag信息。上面的RP就是retentionpolicy。

?

同時Point相當于一行數據,如代碼片段所示,包括被排序的key,key的組成是measurement和tags的組合,后面我們還會大量的涉及大key的介紹。好,簡單了解了這個層次邏輯,我們再簡單看看這些概念的代碼抽象。

首先是Store,Store是為Database管理shards和index的抽象。

?

其中InfluxDB的索引機制有兩種,一是基于內存的版本,一是基于文件的版本,后面我們逐步詳細介紹。

?

我繼續向下進行鉆取,那就是文件存儲的分區管理Shard的代碼抽象,Shard里面會包含時序數據和Tag到SeriesKey的倒排索引。大家會發現,有了tag的倒排索引,基于HBase的OpenTSDB里面根據一部分tag查詢的scan操作就可以避免了。

?

那么Shard里面還有一個Engine,Engine負責進行合并多shard的查詢結果等工作。Engine代表了一個存儲引擎,這里面包含了TSM架構最核心的組成部分,WAL/CACHE/TSMFile/Compaction/Compression組件。我們后面一一介紹。在往下就是FileStore部分了,FileStore里面包括很多的TSMFile。那么一個TSMFile是怎樣的結構呢?如圖包括4個部分。

其中Blocks和index部分尤為重要,我們先看看數據是如何寫入的...

首先,一個寫請求到來之后的寫入流程如下:

  • 第1步,進行AppendOnly的WAL寫入。
  • 第2步,然后就要更新索引,這個是加速查詢的本質,包含了tag和serieskey的倒排索引內容。
  • 第3步,就是數據更新到緩存,相當于LSMTree里面的Mem-table角色。
  • 第4步就是返回客戶端成功應答。

?

?

當然數據不能一直保留在內存,我們需要某種機制進行落盤處理。同時落盤的時候最好不要影響寫入請求。

?

  • 第5步,落盤的過程在InfluxDB里面叫做Snapshotting。進行快照的時機有2個,一個是內存使用達到預定的閾值大小,一個是給定時間間隔沒有數據寫入。
    • cache-snapshot-memory-size= ”25m”
    • cache-snapshot-write-cold-duration= “10m”

?

落盤之后我們就變成了Level的文件,InfluxDB設計4層的TSMFlile,每個TSMFile內部又有精巧的結構設計。

?

這里再特別注意一下內存中Cache結構,是一個SortedMap結構。

?

同時說明一下,在目前InfluxDB(1.8)版本,我沒有看到做快照時候將Cache變成只讀,快照影響寫請求,然后寫完清空Cache。

?

  • 第6步,我想正是因為這個Cache沒有只讀動作,在進行Compaction時候也考慮了低層級采用低CPU消耗的算法,緩解對寫入的影響。而高層級的文件合并就要考慮壓縮成本。

?

在回到索引部分,我們剛才提到InfluxDB有兩種類型的索引可以選擇,一個是基于內存的,一個是基于文件的。在索引的構建中也絞盡腦汁,利用了可用的一切優化手段,B+Tree,BloomFilter,HashIndex等等來加速查詢。

那么,我們來哦細究一下最核心的部分,內存Cache里面的數據結構是如何設計的,有怎樣的優勢呢?

?

首先設計的初衷一定是在SeriesKey有序的前提下,高性能寫入。

?

如圖,Cache內部提供了一個ring結構,來對數據進行分桶/分區管理理論上分區的數量最多水256個,為啥呢?因為InfluxDB采用 SeriesKey的前8個bits進行Hash,8個bit最多256個值。而每個Partiton的數據存儲是一個sortedmap,包括Series,Field和時間戳信息。

?

OK,這里YY一下,按照代碼里面的注釋這個取余操作是可以優化的。大家感興趣可以看看源代碼,怎樣優化最好。:) 歡迎線下討論...

?

我們根據代碼的的分析,可以得到Cache的數據結構是這樣的,內存數據存儲結構是partiton+map的層級管理,那么這樣的數據結構有什么好處呢?

?

  • 環結構可以Split數據結構,降低讀寫時候鎖的競爭
  • 取前8個bit進行hash,確保連續數據存儲在一個磁盤塊(時間連續)
  • Map是有序的,確保在Snapshoting時候可以快速有序落盤

接下來我們再來看看TSMFile細節內容。

好,是時候聊聊TSMFile的數據結構和對讀/寫性能和存儲成本的設計考慮了。

首先,TSMFile的四核部分中,Header 是5個字節存放Magic和版本,Footer是8個字節,記錄TSMFile中索引數據在TSMFile的偏移量。Blocks里面存儲很多數據塊,索引部分的Key是SeriesKey+Field。

?

其中IndexEntry對應一個Block進行索引的構建。包括數據塊包含數據的最小最大時間,以及數據塊在TSMFile中的位置。

?

Block部分除了CRC的數據校驗部分,還有數據類型,時間戳信息和數據值。

?

InfluxDB目前支持Integer/Float/Boolean/String等數據類型,每種數據類型都有專門的壓縮算法。

?

?

對于不可或缺的Timestamps信息,InfluxDB采用Facebook的Delta-delta算法,極大壓縮有序時間戳的存儲。

?

同時在Index結構設計上也考慮了時間要素和區間查詢。索引部分利用minTime為每個block的indexEntry構建基于B+Tree索引樹,以便加速查詢。

?

?

這里,我們提出一個問題,在Footer中記錄整體Index在TSMFile的偏移量,如果我想獲得所有Key,需要怎樣操作?我們看這個數據結構,會發現很明顯是需要根據offset定位到Index的區域,然后讀取所有的index數據。這樣其實這是一個很耗時,耗空間的操作,需要將整體index進行讀取,那么是否可以優化一下呢?

?

當然,InfluxDB對索引進行了優化,為每一個Key的索引信息都添加了offset信息,維護了一張offset表格。

?

在代碼的抽象上,在IndirectIndex的數據結構中有offsets的數據維護,這樣想要查詢所有Kyes的時候,我們讀取offsets信息根據偏移直接獲取對應key的信息。

那么還有什么跟多的設計考慮嗎?

?

當然,除了剛才我們提到的Level文件合并算法考慮,還有索引優化考慮,以及定期的FullCompaction。除此之外,在索引設計上面增加BloomFilter輔助判斷key在索引樹里面的存在性,還利用HashIndex加速key的查找。總體看來InfluxDB在查詢上面花了很多的細節優化。

在繼續拷問,還有什么其他優化嗎?

?

回答還是肯定的,在Measurement索引區域進行tag和SeriesKey的倒排索引結構。這在很大程度增加了查詢的靈活性和查詢性能。

?

同時我們發現在tagkey到SeriesKey的映射中,我們還有seriesID和SeriesKey的映射維護,這又是出于怎樣的考慮呢?對,這里是對存儲成本也進行了考慮。

這是索引文件TSI的結構設計,包括4個部分,

?

  • 首先是Trailer層面,這是索引的入口,記錄Measurement/Tag/Series三個Block在TSI的偏移量(offset)和大小
  • 然后是Measurement block,記錄所有的指標信息,也就是measurement(表)的Meta信息。
  • 然后是 tag信息部分,這個部分核心維護了面介紹的倒排數據結構<tagkey, <tagvalue, list<seriesID>>>
  • 最后series Block索引區域,記錄了database中所有的SeriesKey信息

?

當有了SeriesKey和時間戳之后,我們就可以進一步在Cache/File中進行查詢,找到對應的分桶和對應value的時間序列值。

?

找到對飲的TSMFile對應的數據塊之后,加載數據塊到內存,根據TSFMFile中的B+Tree樹索引,二分法找到具體的查詢值。

?

具體的查詢邏輯如圖標注。

對應TSI的每個部分,內部都有精細的設計和優化。這里簡單提兩點:

?

  • 一個是每個部分都有一個Trailer部分保存該部分的組成的偏移量。
  • 另一個是,每個部分都利用hashindex加速對應的key查詢。

OK,總之InfluxDB利用TSM和TSI架構,完美解決了高吞吐,熱備份,冷刪除,高性能的查詢,和基于tag的倒排索引索引所支撐了靈活的業務查詢。

這里特別提醒InfluxDB自動根據Tag進行倒排索引的建立,在實際業務中要充分利用。

當然,InfluxDB的龍頭地位除了存儲查詢設計的優勢,還有很多實用的功能,比如ContinuousQueries。這個的實現本質就是定時調度,我們可以根據語法很清楚的了解設計的語義。其中 EVERY是計算頻度,FOR 是計算區間,GroupBy的時間區間,就是每次計算的數據窗口。

我們簡單看一個示例,EVERY1小時,For90分鐘,groupby30分鐘。的業務含有是,每1小時調度一下計算,每次計算的數據處理區間是90分鐘,業務聚合計算的窗口數據30分鐘的數據。

?

我們假設8點中觸發了計算,那么計算數據區間是6:30~8:00(90分鐘),計算窗口是30分鐘,也就是90分鐘的數據計算三次,有三個計算結果。

?

當然1小時觸發一次,到9點還會再次出發計算邏輯。

?

還有豐富的生態,也是InfluxDB親民的資本。既后數據的采集又有基于訂閱的實時計算,還有方便的界面查看。OK,這里可以為InfluxDB點個贊了,很優秀。:)

?

OK,再來看看另外一個Apache開源社區優秀的時序數據庫,ApacheIoTDB。

?

首先是夠新,ApacheIoTDB是2020年9月從Apache 孵化器畢業,成本Apache頂級項目的。

?

第二是,ApacheIoTDB足夠強大,左邊的寫入和查詢的性能測試已經超越了目前的領頭羊InfluxDB。

?

那么,為什么IoTDB會有這樣的優秀表現呢?

首先,ApacheIoTDB也是在LSMTree的基礎進行了架構優化,提出了tLSM的存儲架構,在tLSM的架構中,優化了LSM中的Mem-table部分,提出了為亂序數據提供獨立的處理邏輯,這在寫入上有很大的優勢。同時IoTDB更加注重從SQL的角度進行查詢優化,讓用戶的查詢邏輯智能的獲取最優的查詢性能。OK,我們再看看目前IoTDB整體組件棧是一個怎樣的情況呢?一起來看一下...

圖中,棕色部分是現在發布的版本已經具備的,橙色部分是后續發布版本中陸續規劃的,當然還有一些有待進一步討論和社區交流的部分。那么就IoTDB的現有功能來說,已經得到了一些工業企業的認可,我們一起看一下幾個投產的案例。

這是IoTDB的一部分工業企業用戶,包括上海的地鐵項目,這個場景1臺IoTDB實例就支持了每天4000多億的海量時序數據采集和存儲。關于IoTDB的分享還有太多的內容可以交流。時間原因我們將內容留在下次。

原文鏈接

本文為阿里云原創內容,未經允許不得轉載。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的No.1-Apache IoTDB 随笔 - Time Series DBMS 综述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

黄色软件在线看 | 国产永久免费观看 | 日本资源中文字幕在线 | 欧美激情视频三区 | 综合影视 | 丁香综合激情 | 综合天天色 | 国产成人久久av免费高清密臂 | 欧美日韩啪啪 | 久久婷婷国产色一区二区三区 | 中国一级特黄毛片大片久久 | 免费观看的黄色 | 成人黄色电影在线播放 | 免费91在线观看 | 久久99精品热在线观看 | www夜夜操| 成人av一区二区三区 | 在线a人片免费观看视频 | 欧美日一级片 | 午夜精品一区二区三区四区 | 亚洲视频一级 | 中文字幕亚洲欧美 | 欧美在线1 | 激情久久五月天 | 午夜精品久久久久久久久久久久久久 | 国产精品18久久久久久vr | 精品国产乱码久久久久久1区二区 | 黄色av一区二区 | 国产精品视频免费在线观看 | 日韩v在线 | 国产麻豆精品在线观看 | 永久黄网站色视频免费观看w | 亚洲成人中文在线 | www.亚洲精品 | 天天色天天综合网 | 99这里都是精品 | 婷色在线| 91久久久久久久一区二区 | 欧美午夜精品久久久久久孕妇 | 日韩欧美国产激情在线播放 | 国产精品11 | 丁香花中文字幕 | 国产精品久久久久久麻豆一区 | 91桃色免费视频 | 一区二区三区免费看 | 日韩精品在线视频 | 国产美女视频免费 | 成人三级网址 | 久草网免费 | 国产最顶级的黄色片在线免费观看 | 国产福利一区二区在线 | 亚洲高清网站 | 在线免费色 | 日韩电影中文,亚洲精品乱码 | 97在线成人 | 人人看97 | 亚洲精品乱码久久久久久蜜桃动漫 | 在线性视频日韩欧美 | 国产视频97 | 国产精品一区二区在线播放 | 日韩二区在线播放 | 国产99视频在线观看 | 亚洲午夜av | 91网免费看| 探花视频在线观看 | 欧美福利视频 | 成人免费视频观看 | av电影在线观看 | 国产99久久99热这里精品5 | 伊人干综合 | 99精品在线看 | 亚洲精品国产日韩 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产在线免费av | 亚洲综合婷婷 | 欧美在线久久 | 欧美动漫一区二区三区 | 成人免费xxx在线观看 | 成年人网站免费观看 | 亚洲无吗av | 国产做a爱一级久久 | 免费a现在观看 | 成人在线一区二区 | 在线综合 亚洲 欧美在线视频 | 国偷自产视频一区二区久 | 免费日韩 精品中文字幕视频在线 | 天天射天天干天天插 | 黄色毛片视频免费 | 国产精品毛片久久久久久 | 天天操夜夜爱 | 黄网站免费大全入口 | 免费一级毛毛片 | 亚洲国产精品成人女人久久 | 天天操操| 97综合视频| 天天色.com | 精品99在线| 韩日电影在线 | 黄免费网站 | 亚洲天堂社区 | 日韩美一区二区三区 | 97精品伊人| 在线观看av黄色 | 2023年中文无字幕文字 | 在线观看中文av | 在线观看免费 | 美女在线观看网站 | 天天操天天操天天 | 中文字幕在线观看三区 | 在线观看日韩一区 | 久免费| 国产成人一区二区三区免费看 | 久草在线中文视频 | 超碰在线观看av.com | 91在线视频免费91 | 四虎国产精品永久在线国在线 | 精品国偷自产在线 | 亚洲精品女 | 国产成人精品一区二区三区福利 | www五月天婷婷 | 成人高清在线观看 | 免费在线国产视频 | 亚洲 综合 精品 | 黄色毛片视频免费 | 精品免费观看 | 精品1区2区| 激情视频免费观看 | 久久激情电影 | 99精品黄色片免费大全 | 玖玖视频网 | 伊人开心激情 | 91伊人久久大香线蕉蜜芽人口 | 视频 国产区 | 中文字幕中文中文字幕 | 精品国产一区二区三区四区vr | 亚洲成av人片 | 久久这里有精品 | 五月婷婷综合在线观看 | 成人综合日日夜夜 | 成人福利在线播放 | 精品999久久久 | 97色婷婷成人综合在线观看 | 在线观看免费观看在线91 | 日日碰狠狠添天天爽超碰97久久 | 国产又粗又硬又长又爽的视频 | 91大神电影 | 亚洲小视频在线观看 | 久久久国产精品视频 | 久久久久欠精品国产毛片国产毛生 | 国产精品不卡视频 | 久久在线精品 | 最近2019年日本中文免费字幕 | 五月天婷婷狠狠 | 国产群p视频 | 一区二区不卡 | 激情综合中文娱乐网 | 国产免费大片 | 中文字幕在线中文 | av电影免费观看 | 综合色在线观看 | 国内视频一区二区 | 亚洲黄色在线 | 日本不卡123| 国产精品毛片久久久久久久久久99999999 | 精品国产精品一区二区夜夜嗨 | 免费看的黄色的网站 | 四虎影视精品永久在线观看 | 成人动漫一区二区三区 | www日韩精品 | 亚洲在线网址 | 婷婷狠狠操 | 精品一区 精品二区 | 国产麻豆成人传媒免费观看 | 超黄视频网站 | 欧洲在线免费视频 | 久久免费视频一区 | 国产欧美精品一区二区三区 | 久久人人97超碰精品888 | 免费久久网 | 日韩性久久 | 日韩精品一区二区三区丰满 | 成年人电影免费在线观看 | 中字幕视频在线永久在线观看免费 | 99视频在线免费播放 | 操综合| 国产精品久久久久久久久久久久久久 | 欧美日韩久久不卡 | 在线播放 亚洲 | 911精品视频 | 97超碰在线免费 | 国产精品片 | a黄色片 | 中国老女人日b | 亚洲精品自在在线观看 | 99精品国产高清在线观看 | 天天做天天爱天天综合网 | 人人爱天天操 | 日韩精品字幕 | 人人天天夜夜 | 天天干天天拍 | 久久精品亚洲一区二区三区观看模式 | 五月婷婷丁香色 | 丁香在线观看完整电影视频 | 久久精品日产第一区二区三区乱码 | 久久国产免 | 91福利影院在线观看 | 久久成熟| 久久精品女人毛片国产 | 夜夜操夜夜干 | 精品国产一区二区三区噜噜噜 | 麻豆久久精品 | 天天色天天色天天色 | 日日添夜夜添 | 成人中文字幕+乱码+中文字幕 | 午夜久久福利影院 | aaa毛片视频| 91桃色视频 | 亚洲闷骚少妇在线观看网站 | 欧美成人xxx | 五月婷婷.com | 亚洲精品在线视频播放 | 在线精品播放 | 日韩精品免费一区 | 中文字幕二区 | 国产麻豆果冻传媒在线观看 | 91在线文字幕 | 91免费国产在线观看 | 日韩av手机在线看 | 欧美三级免费 | 亚洲欧洲中文日韩久久av乱码 | sesese图片 | 看污网站 | 在线 国产 亚洲 欧美 | 欧美一区二区三区在线播放 | 中文字幕一区二区三区在线观看 | 免费a级毛片在线看 | 在线播放视频一区 | 婷婷久月| 日韩精品一区二区三区在线视频 | 免费在线精品视频 | 男女视频久久久 | 99视频免费看 | 成人免费在线看片 | 成人av资源网站 | 欧美视频国产视频 | 日韩视频免费观看高清完整版在线 | 欧美日韩精品国产 | 日日麻批40分钟视频免费观看 | 激情xxxx| 99视频精品全国免费 | 色五月色开心色婷婷色丁香 | 久久的色| 国产一级在线观看 | 久久久精品成人 | 久久黄色影视 | 日韩在线免费小视频 | 在线免费观看麻豆 | 91社区国产高清 | 月丁香婷婷 | 久久国产精品视频免费看 | 国产成人亚洲精品自产在线 | 日韩手机在线 | 亚洲在线 | 五月天伊人网 | 美女精品在线 | 久久久久电影 | 天天干天天拍 | 天堂v中文 | 亚洲精品小视频在线观看 | 四虎成人精品永久免费av | 午夜精品一区二区三区在线观看 | 最新av在线播放 | 超碰免费av | 在线观看免费视频你懂的 | 91久草视频 | 国产玖玖视频 | 中文字幕乱码一区二区 | 最近最新中文字幕 | 日韩视频免费在线 | 九九三级毛片 | 天天综合婷婷 | 亚洲国产字幕 | 亚州精品天堂中文字幕 | 国产一性一爱一乱一交 | 99久久精品免费 | 成年人视频在线免费播放 | 日韩字幕在线观看 | 久久99国产精品久久99 | 福利久久| 97狠狠干 | 国产一区二区三区在线 | 黄色免费看片网站 | 精品久久久久久久久久国产 | 18久久久| 国产精品乱码久久久久久1区2区 | 日韩午夜网站 | 国内偷拍精品视频 | 精品91视频 | 婷婷色中文网 | 日日干网址 | 国产精品久久久一区二区三区网站 | www.久久99| 日韩特黄一级欧美毛片特黄 | 韩国av在线| 国产精品99久久99久久久二8 | 天天干,天天操,天天射 | 欧美一级在线观看视频 | 一区二区精 | av手机版| av中文字幕第一页 | 久久久久网站 | 日本久久电影网 | 狠狠躁日日躁 | 啪啪免费试看 | 97偷拍在线视频 | 亚洲综合色播 | 亚洲精品h | 中文字幕免费播放 | 国产精品免费观看在线 | 91麻豆精品国产自产 | 国产精品一区二区免费在线观看 | 国产精品五月天 | 91高清免费 | 天天干天天看 | 久久国产一区 | av先锋中文字幕 | 色偷偷人人澡久久超碰69 | 99国产在线观看 | av线上看| 亚洲精品在线一区二区三区 | 99国产一区二区三精品乱码 | 在线电影中文字幕 | 日韩免费精品 | 亚洲精品在线免费 | www蜜桃视频| 在线观看一级片 | 一区二区av | 久久www免费视频 | 国产淫片| 五月天激情开心 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 欧美综合在线视频 | 少妇搡bbbb搡bbb搡69 | 9在线观看免费 | 99精品视频在线观看免费 | 9999精品免费视频 | 91免费观看 | 欧美日韩国产网站 | 麻豆免费视频网站 | 天天天天天天天操 | 亚洲黄色一级大片 | 久久精品国产一区二区电影 | 欧美性春潮 | 成人小视频在线观看免费 | 国产一级视频在线免费观看 | 中国一级片在线观看 | 中文字幕色在线视频 | 欧美午夜寂寞影院 | 久久亚洲国产精品 | 国产一级电影免费观看 | 欧美色伊人 | 丁香婷婷深情五月亚洲 | 黄色网在线播放 | 国产成人免费网站 | 国产一区二区精品久久 | 久草视频在线免费播放 | av在线播放中文字幕 | 久久99精品视频 | 成年人看片 | 久久999精品 | 日韩欧美高清免费 | 人人插人人做 | 欧美日韩一区二区在线观看 | 亚州av成人 | а中文在线天堂 | 草久电影| 亚洲色图 校园春色 | 日韩中字在线观看 | 91福利视频网站 | 日日夜夜狠狠操 | 国产99久久久国产精品 | av视屏在线 | 亚洲精品国产精品久久99热 | 国产亚洲免费的视频看 | 夜夜干天天操 | 在线免费观看黄色 | 欧美夫妻生活视频 | 久久国产视屏 | 久久人人爽人人片av | 国产香蕉97碰碰久久人人 | 免费视频一级片 | 超碰午夜| 国产日产亚洲精华av | 午夜在线免费视频 | 天天摸天天舔 | 最近免费中文字幕大全高清10 | 日韩成人一级大片 | 精品视频不卡 | 日韩欧美电影网 | 日韩电影在线观看一区二区 | 黄色亚洲大片免费在线观看 | 黄色a一级视频 | 在线免费av播放 | 五月情婷婷 | 中文久久精品 | 在线视频一区观看 | 国产精品久久一卡二卡 | 精品日韩在线一区 | 亚洲精品中文字幕视频 | 免费福利在线 | 国产精品v欧美精品 | 精品二区视频 | 久久在线视频精品 | 色婷婷成人 | 国产精品18久久久久白浆 | 91成品人影院 | 国产亚洲精品中文字幕 | 亚洲精品在线观看免费 | 99 精品 在线 | 中文综合在线 | 亚洲欧美视频一区二区三区 | 在线国产一区二区三区 | 国产精品久久久久久久久搜平片 | 中文日韩在线视频 | 亚洲高清色综合 | 色噜噜噜噜 | 在线免费观看的av网站 | 免费精品人在线二线三线 | 日本久久久精品视频 | 国产专区精品视频 | 国产不卡免费 | 久草在线视频精品 | 色婷婷综合五月 | 狠狠色2019综合网 | 国产理论免费 | 欧美另类高潮 | 永久免费在线 | 国产成人一区二区三区影院在线 | 国产黄大片 | 亚洲免费小视频 | 日韩精品久久中文字幕 | 中字幕视频在线永久在线观看免费 | 日韩中字在线 | 97综合在线| 国内精品久久久久久 | 91久草视频 | 亚洲电影久久 | 麻豆91精品 | 成人小视频在线观看免费 | 久久久久成 | 欧美资源在线观看 | 亚洲黄色在线观看 | 女人18毛片a级毛片一区二区 | 国产69久久精品成人看 | 天天鲁天天干天天射 | 天天操天天射天天舔 | 最近的中文字幕大全免费版 | 免费一级黄色 | 色婷婷狠狠18 | 在线视频婷婷 | 国产精品久久久久永久免费观看 | 高潮久久久 | 精品国产乱码久久久久久1区2匹 | 日本久久中文 | 免费网站黄色 | 91网站免费观看 | 国产乱对白刺激视频不卡 | 久久精品系列 | 精品国产一区二区三区久久久蜜月 | www.黄色片网站 | 国产精品成人国产乱 | 久草成人在线 | 久久er99热精品一区二区三区 | 国产99久久精品一区二区永久免费 | 欧美日韩高清在线观看 | 日韩一区正在播放 | 911香蕉 | 久久成熟 | av中文电影 | 国产精品久久99综合免费观看尤物 | 国产夫妻自拍av | 欧美另类人妖 | 欧美性大战 | 在线观看韩国av | 国产精品久久人 | 超碰人人射 | 久久精品高清视频 | 日本爱爱免费 | 亚洲 欧美日韩 国产 中文 | 欧美精品免费一区二区 | 亚洲 欧美 精品 | 亚洲精品色视频 | 国产精品免费久久久 | 成人97视频 | 在线观看免费高清视频大全追剧 | 三上悠亚在线免费 | 久久人人爽人人爽人人 | 五月开心六月伊人色婷婷 | 六月色 | 精品国产一区在线观看 | 免费网站在线观看人 | 亚洲国产成人精品电影在线观看 | 黄网站免费大全入口 | 在线观看久久久久久 | 亚洲精品综合一二三区在线观看 | 国产精品久久久久久久久婷婷 | 日日干网 | 久久a视频| 2019中文最近的2019中文在线 | 久久99久久久久久 | 涩涩爱夜夜爱 | 亚洲精品国偷拍自产在线观看 | 国产视频99 | 亚洲美女免费精品视频在线观看 | 精品产品国产在线不卡 | 欧美男同视频网站 | 亚洲国产精品视频在线观看 | 中文字幕在线看人 | 国产精品a成v人在线播放 | h网站免费在线观看 | 国产美女主播精品一区二区三区 | 欧美日韩不卡一区二区三区 | 国产高清区 | 亚洲精品在线视频 | 狠狠色丁香婷婷综合视频 | 国产黄色免费 | 精品99在线视频 | 久黄色| 国产高清综合 | 国产精品色 | 日色在线视频 | 中文字幕在线有码 | 欧美极度另类性三渗透 | 日韩欧美一区二区在线观看 | 日本中文字幕免费观看 | 免费看网站在线 | 久久精品国产一区二区电影 | 日韩av视屏| 91看成人| 美女网站色免费 | 久久麻豆视频 | 在线成人性视频 | 国产精品一区二区三区免费视频 | 69国产成人综合久久精品欧美 | 久国产在线播放 | 午夜电影av | 久久午夜网 | 日韩精品短视频 | 国产精品一区二区久久精品爱微奶 | 天天干天天搞天天射 | 片网站 | 欧美一级黄色视屏 | 久久国产剧场电影 | 天天爱天天操天天爽 | 国产在线p | 日韩精品一区二区三区丰满 | 免费在线观看一区 | 国产黄在线看 | 三级黄色在线观看 | 天天天综合 | 成人av动漫在线 | 91手机视频在线 | 狠狠色丁香婷婷综合欧美 | 亚洲高清国产视频 | 欧美日韩国产综合网 | 国产精品中文字幕在线 | 又爽又黄又无遮挡网站动态图 | av理论电影 | 99这里只有| 在线视频婷婷 | 黄色一级在线观看 | 成人激情开心网 | 国产在线播放一区二区三区 | 日韩精品一区二区三区免费观看视频 | 激情av资源 | 国产中文欧美日韩在线 | 成人国产精品 | 日韩理论在线视频 | 超级碰碰碰视频 | 高清在线一区 | 久久在线播放 | 中文字幕免费高清在线 | 97在线视频免费播放 | 日韩美视频| 中文字幕一区二区三区久久蜜桃 | 国产精品69av | 精品国产一区二区三区av性色 | 欧美日韩国产在线精品 | 国产护士av | 中文字幕传媒 | 激情五月色播五月 | 久久激情五月激情 | 一级片视频在线 | 玖玖在线精品 | 欧美一级裸体视频 | 精品国产一区二区三区免费 | 在线观看视频福利 | 亚洲精品网址在线观看 | 国产高清不卡在线 | 欧美性做爰猛烈叫床潮 | 波多野结衣在线播放视频 | 国产精品欧美一区二区 | 精品国产日本 | 国产美女无遮挡永久免费 | 日日夜操 | 久久激情小视频 | 欧美成人影音 | 国产成人亚洲精品自产在线 | 欧美亚洲专区 | 中文字幕在线看视频 | 91精品国产高清自在线观看 | 亚洲免费在线看 | 日本视频高清 | 久久久蜜桃一区二区 | 高清免费av在线 | 午夜影院一级片 | 五月天天在线 | 91视频 - v11av| 欧美一级在线观看视频 | 日韩视频免费 | 天天操天天射天天 | 国产色视频一区二区三区qq号 | 免费观看福利视频 | 欧美日韩国产高清视频 | 亚洲精品国偷拍自产在线观看 | 国产成人一级电影 | 国产精品一区二区三区在线看 | 免费久久久久久久 | 麻豆国产视频下载 | 99久久www | 国产99久久99热这里精品5 | 久久久噜噜噜久久久 | 精品欧美乱码久久久久久 | 久久九九久久精品 | 国产在线欧美 | 久久夜色精品国产欧美一区麻豆 | 日韩免费一区二区三区 | 五月婷婷丁香 | 国产精品毛片久久久久久 | 久久久高清视频 | 91视频在线| 91精品国产91热久久久做人人 | 97偷拍视频 | 超碰免费成人 | 一区二区三区在线看 | 88av色 | 91精品国产乱码 | 成人免费视频免费观看 | 亚洲视屏一区 | 天天av综合网 | 在线观看亚洲成人 | 国内精品中文字幕 | 久久国产精品二国产精品中国洋人 | 国产成人免费精品 | 国产一区二区网址 | 人人爽人人舔 | 国产精品女主播一区二区三区 | 日本精品二区 | 天天色天天操综合 | 中文字幕在线观看第三页 | 色爽网站 | 久99精品 | 一级大片在线观看 | 成人动漫精品一区二区 | 91九色在线视频 | 久久久久国 | 日韩色综合网 | 91精品国产电影 | www.久久成人 | 麻豆久久一区二区 | 日韩经典一区二区三区 | 欧美综合久久久 | 欧美另类xxxx| 国产最新视频在线 | 日韩在线视频免费播放 | 久久国产一区二区三区 | 欧美精品九九99久久 | 欧美巨大荫蒂茸毛毛人妖 | 欧美人操人 | 一级久久精品 | 97色涩| 激情综合狠狠 | 91高清完整版在线观看 | 免费成人结看片 | 黄色免费网站 | 看片黄网站 | 国产三级精品在线 | 国产午夜在线观看视频 | 九九色网 | 国产在线精品播放 | 超碰在线成人 | 日韩大片免费在线观看 | 综合色站| 国产精品18久久久 | 91大神精品视频在线观看 | 手机av资源| 国产在线精品国自产拍影院 | 色婷婷国产精品 | 九九久久免费视频 | 亚a在线 | 天天摸天天舔 | 亚洲综合在线五月 | 欧美专区日韩专区 | 精品一区二区免费视频 | 国产精品 国内视频 | 99视频免费在线观看 | 美女网站色在线观看 | 国产视频精品视频 | 久久免费国产电影 | 99视频免费看 | 狠狠干.com| 国产精品12| 色多多视频在线观看 | 免费观看国产成人 | 特黄特色特刺激视频免费播放 | 免费在线观看av片 | 91av在线播放| 丁香六月中文字幕 | 久久精品电影院 | 久草在线中文888 | 韩国av一区| 少妇18xxxx性xxxx片 | 亚洲在线精品视频 | 热久久99这里有精品 | 国产精品成人久久久久久久 | 黄色国产精品 | 国产午夜精品在线 | 狠狠色丁婷婷日日 | 成人a大片 | 免费福利视频导航 | 99热国产在线中文 | 人人看人人爱 | 国产精品99久久久久久大便 | 国产精品久久久久久久久大全 | 中文字幕有码在线播放 | 天天射成人 | 黄色一级大片在线免费看产 | 日本九九视频 | 91插插影库 | 92精品国产成人观看免费 | 亚洲成 人精品 | 亚洲成人国产精品 | 国产流白浆高潮在线观看 | 中国一级特黄毛片大片久久 | 日韩精品中文字幕一区二区 | 狠狠躁天天躁综合网 | 91视频91色| 99 色| 亚洲高清视频在线观看免费 | 久久精品精品电影网 | 欧美日韩在线观看视频 | 亚洲精品视频 | 国产精品久久久久久av | 最新高清无码专区 | 欧美性大战 | 欧美日韩高清一区二区 | 在线观看色网站 | av片无限看 | 亚洲精选视频免费看 | 在线观看日本高清mv视频 | 中文字幕在线观看播放 | 国产精品视频资源 | 视频福利在线观看 | 亚洲在线视频网站 | 亚洲欧美日韩精品一区二区 | 日韩综合一区二区三区 | 九九热在线视频免费观看 | 精品视频999 | 国产五十路毛片 | av蜜桃在线| 97干com| 中文字幕 国产专区 | 中文字幕在线观看第二页 | 人人爱人人做人人爽 | 国产精品国内免费一区二区三区 | 欧美精品一区二区三区一线天视频 | 四虎成人精品永久免费av | 久久精品欧美日韩精品 | 成人少妇影院yyyy | 在线播放视频一区 | 免费日韩一区 | 狠狠色丁香婷婷综合最新地址 | 久久成人免费视频 | 欧美成a人片在线观看久 | 国产精品18久久久久白浆 | 夜夜躁狠狠躁日日躁视频黑人 | 成人精品视频 | 日日摸日日添日日躁av | 成人免费视频网站在线观看 | 夜夜夜精品 | 欧美激情综合网 | 日本 在线 视频 中文 有码 | 91探花系列在线播放 | 久久免费视频1 | 欧美成人区 | 麻豆一区二区三区视频 | 国产九九九视频 | 丝袜美女视频网站 | 国产精品无av码在线观看 | 97av免费视频 | 91视频免费观看 | 国产日韩欧美视频 | 成人av.com | 久久激情小视频 | 欧美日韩精品国产 | 97av色 | 精品一区二区亚洲 | 国产经典av | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产亚洲视频在线观看 | 欧美日韩一区二区久久 | 69国产成人综合久久精品欧美 | 天天草视频 | 欧美日韩激情视频8区 | 亚洲国产精彩中文乱码av | 99久久久久免费精品国产 | 国产黄在线免费观看 | 日韩a级黄色片 | 91pony九色丨交换 | 伊人天堂网 | 国产综合激情 | 九九综合在线 | 黄色a视频免费 | 久久久免费精品视频 | 久久黄色免费视频 | 97在线资源| 美女视频黄在线观看 | 日韩欧美一区二区三区视频 | 亚洲精品久久久久中文字幕m男 | 免费在线观看视频a | 成年人黄色免费网站 | 成人av网页 | 精品国模一区二区 | av成人在线电影 | 亚洲色图美腿丝袜 | 国产一区电影在线观看 | 西西大胆啪啪 | 天天射射天天 | 91色吧 | 日韩免费在线观看网站 | 国产精品久久久久久久久免费 | 久久久久日本精品一区二区三区 | 91在线91拍拍在线91 | av在观看| 久久丝袜视频 | 天天曰天天爽 | 精品在线观看一区二区 | 亚洲成人第一区 | 久久观看免费视频 | 天天操天天操天天操天天操天天操 | 99久久婷婷国产综合精品 | 97精品国产97久久久久久春色 | 亚洲黄色在线观看 | 天天操天天操天天操天天 | 91久久人澡人人添人人爽欧美 | www.五月天色 | 黄色a在线观看 | 国产99久久久欧美黑人 | 91新人在线观看 | 日韩www在线 | 麻豆91精品视频 | www.夜夜操 | 日韩在线视频免费看 | 免费日韩一区 | 国产精品18毛片一区二区 | av黄色免费在线观看 | 国产福利一区二区在线 | 欧美aaa一级| 国产一二区视频 | 国产成人精品久久久久 | 国产精品资源在线 | 亚洲精品一区二区三区四区高清 | 激情五月婷婷综合 | 99国产情侣在线播放 | 久久精品伊人 | 日韩在线视频网 | 久久婷婷一区二区三区 | 色综合天天 | 麻豆国产精品一区二区三区 | 欧洲一区二区在线观看 | 国产男女爽爽爽免费视频 | 国产精品黄色av | 国产高清在线免费视频 | 久久久久夜色 | 又黄又爽又刺激 | 色偷偷中文字幕 | 婷婷在线免费视频 | 国产精品黄色av | 色播五月激情综合网 | 亚洲黄电影 | 色婷婷色 | 在线观看日韩 | 午夜999 | 亚洲无吗av | 日韩精品一区二区三区免费观看视频 | 国产视频精品在线 | 福利视频第一页 | 国产成人61精品免费看片 | 中文国产在线观看 | 日韩欧美一区二区三区视频 | 国产美女视频 | 夜夜爽www | 亚洲国产理论片 | 欧美日韩国产在线精品 | 中文字幕 国产视频 | 成年人网站免费在线观看 | 91色蜜桃 | 欧美日韩中文国产一区发布 | 亚洲成av人片 | 久久性生活片 | 天天操天天色天天射 | 亚洲视频综合 | 国内毛片毛片 | 久久99国产精品久久 | 天堂av在线 | 日韩二级毛片 | 亚洲欧美日本一区二区三区 | 中文字幕制服丝袜av久久 | 91在线影视| 丁香网五月天 | 7777精品伊人久久久大香线蕉 | 色国产精品 | 日日夜夜精品免费视频 | 中文字幕在线观看第二页 | 日韩欧美在线免费观看 | 久久亚洲欧美日韩精品专区 | www.啪啪.com| 亚洲成 人精品 | 欧美国产日韩中文 | 日韩网站一区二区 | 国产特级毛片aaaaaa高清 | 精品主播网红福利资源观看 | 丝袜av网站 | 高清不卡毛片 | 激情五月婷婷丁香 | 久久久免费少妇 | 色在线视频网 | 精品视频久久 | 亚洲伦理一区二区 | 精品一区91 | 国产91电影在线观看 | 丁香六月激情 | 成人黄色电影在线观看 | 久久久免费精品国产一区二区 | 激情av五月婷婷 | 久久伊人精品一区二区三区 | 国产美女黄网站免费 | www久久久| 一级片在线 | 99久久日韩精品免费热麻豆美女 | 久久精品视频在线免费观看 | 日本中文字幕网 | 久久艹久久 | 在线精品视频免费播放 | 超碰在线94 | 免费福利在线观看 | 狠狠色狠狠色综合日日92 | 国产成人av网址 | 欧美性大战 | 日本黄色免费观看 | 国产成人精品一区二区三区网站观看 | 成人97人人超碰人人99 | 美女精品在线 | 在线观看你懂的网站 | 成人av播放 | 国产亚洲精品久久久久久电影 | 特黄特色特刺激视频免费播放 | 天天操天天干天天爽 | 国产无吗一区二区三区在线欢 | 国产精品18久久久久白浆 | 天天操天天射天天添 | 99国产免费网址 | 99综合影院在线 | 一区二区免费不卡在线 | 香蕉久久久久久av成人 | 91精品爽啪蜜夜国产在线播放 | 国产亚洲精品综合一区91 | 国产成人精品一区二区三区 | 欧美一区二区伦理片 | 欧美精品做受xxx性少妇 | 在线有码中文字幕 | 国产一区二区久久精品 | 欧美日韩精品网站 | 在线黄网站 | 成人h电影在线观看 | 国产香蕉视频在线观看 | 欧美精品一区二区免费 | 色橹橹欧美在线观看视频高清 | 热久久国产精品 | 日韩激情网 | 成人免费视频免费观看 | www狠狠 | www.夜夜 | 美女网站在线 | 日韩精品电影在线播放 | 成人免费看片98欧美 | 五月天婷亚洲天综合网鲁鲁鲁 | 午夜视频在线观看一区 |