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

了解 TiDB 技術(shù)內(nèi)幕——數(shù)據(jù)是如何存儲的

存儲 存儲軟件
數(shù)據(jù)庫、操作系統(tǒng)和編譯器并稱為三大系統(tǒng),可以說是整個計算機(jī)軟件的基石。其中數(shù)據(jù)庫更靠近應(yīng)用層,是很多業(yè)務(wù)的支撐。這一領(lǐng)域經(jīng)過了幾十年的發(fā)展,不斷的有新的進(jìn)展。

引言

數(shù)據(jù)庫、操作系統(tǒng)和編譯器并稱為三大系統(tǒng),可以說是整個計算機(jī)軟件的基石。其中數(shù)據(jù)庫更靠近應(yīng)用層,是很多業(yè)務(wù)的支撐。這一領(lǐng)域經(jīng)過了幾十年的發(fā)展,不斷的有新的進(jìn)展。

很多人用過數(shù)據(jù)庫,但是很少有人實現(xiàn)過一個數(shù)據(jù)庫,特別是實現(xiàn)一個分布式數(shù)據(jù)庫。了解數(shù)據(jù)庫的實現(xiàn)原理和細(xì)節(jié),一方面可以提高個人技術(shù),對構(gòu)建其他系統(tǒng)有幫助,另一方面也有利于用好數(shù)據(jù)庫。

研究一門技術(shù)最好的方法是研究其中一個開源項目,數(shù)據(jù)庫也不例外。單機(jī)數(shù)據(jù)庫領(lǐng)域有很多很好的開源項目,其中 MySQL 和 PostgreSQL 是其中知名度最高的兩個,不少同學(xué)都看過這兩個項目的代碼。但是分布式數(shù)據(jù)庫方面,好的開源項目并不多。 TiDB 目前獲得了廣泛的關(guān)注,特別是一些技術(shù)愛好者,希望能夠參與這個項目。由于分布式數(shù)據(jù)庫自身的復(fù)雜性,很多人并不能很好的理解整個項目,所以我希望能寫一些文章,自頂向上,由淺入深,講述 TiDB 的一些技術(shù)原理,包括用戶可見的技術(shù)以及大量隱藏在 SQL 界面后用戶不可見的技術(shù)點。

保存數(shù)據(jù)

[[277076]]

 

數(shù)據(jù)庫最根本的功能是能把數(shù)據(jù)存下來,所以我們從這里開始。

保存數(shù)據(jù)的方法很多,最簡單的方法是直接在內(nèi)存中建一個數(shù)據(jù)結(jié)構(gòu),保存用戶發(fā)來的數(shù)據(jù)。比如用一個數(shù)組,每當(dāng)收到一條數(shù)據(jù)就向數(shù)組中追加一條記錄。這個方案十分簡單,能滿足最基本,并且性能肯定會很好,但是除此之外卻是漏洞百出,其中最大的問題是數(shù)據(jù)完全在內(nèi)存中,一旦停機(jī)或者是服務(wù)重啟,數(shù)據(jù)就會永久丟失。

為了解決數(shù)據(jù)丟失問題,我們可以把數(shù)據(jù)放在非易失存儲介質(zhì)(比如硬盤)中。改進(jìn)的方案是在磁盤上創(chuàng)建一個文件,收到一條數(shù)據(jù),就在文件中 Append 一行。OK,我們現(xiàn)在有了一個能持久化存儲數(shù)據(jù)的方案。但是還不夠好,假設(shè)這塊磁盤出現(xiàn)了壞道呢?我們可以做 RAID (Redundant Array of Independent Disks),提供單機(jī)冗余存儲。如果整臺機(jī)器都掛了呢?比如出現(xiàn)了火災(zāi),RAID 也保不住這些數(shù)據(jù)。我們還可以將存儲改用網(wǎng)絡(luò)存儲,或者是通過硬件或者軟件進(jìn)行存儲復(fù)制。到這里似乎我們已經(jīng)解決了數(shù)據(jù)安全問題,可以松一口氣了。But,做復(fù)制過程中是否能保證副本之間的一致性?也就是在保證數(shù)據(jù)不丟的前提下,還要保證數(shù)據(jù)不錯。保證數(shù)據(jù)不丟不錯只是一項最基本的要求,還有更多令人頭疼的問題等待解決:

  • 能否支持跨數(shù)據(jù)中心的容災(zāi)?
  • 寫入速度是否夠快?
  • 數(shù)據(jù)保存下來后,是否方便讀取?
  • 保存的數(shù)據(jù)如何修改?如何支持并發(fā)的修改?
  • 如何原子地修改多條記錄?

這些問題每一項都非常難,但是要做一個優(yōu)秀的數(shù)據(jù)存儲系統(tǒng),必須要解決上述的每一個難題。 為了解決數(shù)據(jù)存儲問題,我們開發(fā)了 TiKV 這個項目。接下來我向大家介紹一下 TiKV 的一些設(shè)計思想和基本概念。

Key-Value

作為保存數(shù)據(jù)的系統(tǒng),首先要決定的是數(shù)據(jù)的存儲模型,也就是數(shù)據(jù)以什么樣的形式保存下來。TiKV 的選擇是 Key-Value 模型,并且提供有序遍歷方法。簡單來講,可以將 TiKV 看做一個巨大的 Map,其中 Key 和 Value 都是原始的 Byte 數(shù)組,在這個 Map 中,Key 按照 Byte 數(shù)組總的原始二進(jìn)制比特位比較順序排列。 大家這里需要對 TiKV 記住兩點:

這是一個巨大的 Map,也就是存儲的是 Key-Value pair

這個 Map 中的 Key-Value pair 按照 Key 的二進(jìn)制順序有序,也就是我們可以 Seek 到某一個 Key 的位置,然后不斷的調(diào)用 Next 方法以遞增的順序獲取比這個 Key 大的 Key-Value

講了這么多,有人可能會問了,這里講的存儲模型和 SQL 中表是什么關(guān)系?在這里有一件重要的事情要說四遍:

這里的存儲模型和 SQL 中的 Table 無關(guān)! 這里的存儲模型和 SQL 中的 Table 無關(guān)! 這里的存儲模型和 SQL 中的 Table 無關(guān)! 這里的存儲模型和 SQL 中的 Table 無關(guān)!

現(xiàn)在讓我們忘記 SQL 中的任何概念,專注于討論如何實現(xiàn) TiKV 這樣一個高性能高可靠性的巨大的(分布式的) Map。

RocksDB

任何持久化的存儲引擎,數(shù)據(jù)終歸要保存在磁盤上,TiKV 也不例外。但是 TiKV 沒有選擇直接向磁盤上寫數(shù)據(jù),而是把數(shù)據(jù)保存在 RocksDB 中,具體的數(shù)據(jù)落地由 RocksDB 負(fù)責(zé)。這個選擇的原因是開發(fā)一個單機(jī)存儲引擎工作量很大,特別是要做一個高性能的單機(jī)引擎,需要做各種細(xì)致的優(yōu)化,而 RocksDB 是一個非常優(yōu)秀的開源的單機(jī)存儲引擎,可以滿足我們對單機(jī)引擎的各種要求,而且還有 Facebook 的團(tuán)隊在做持續(xù)的優(yōu)化,這樣我們只投入很少的精力,就能享受到一個十分強(qiáng)大且在不斷進(jìn)步的單機(jī)引擎。當(dāng)然,我們也為 RocksDB 貢獻(xiàn)了一些代碼,希望這個項目能越做越好。這里可以簡單的認(rèn)為 RocksDB 是一個單機(jī)的 Key-Value Map。

Raft

好了,萬里長征第一步已經(jīng)邁出去了,我們已經(jīng)為數(shù)據(jù)找到一個高效可靠的本地存儲方案。俗話說,萬事開頭難,然后中間難,最后結(jié)尾難。接下來我們面臨一件更難的事情:如何保證單機(jī)失效的情況下,數(shù)據(jù)不丟失,不出錯?簡單來說,我們需要想辦法把數(shù)據(jù)復(fù)制到多臺機(jī)器上,這樣一臺機(jī)器掛了,我們還有其他的機(jī)器上的副本;復(fù)雜來說,我們還需要這個復(fù)制方案是可靠、高效并且能處理副本失效的情況。聽上去比較難,但是好在我們有 Raft 協(xié)議。Raft 是一個一致性算法,它和 Paxos 等價,但是更加易于理解。Raft 的論文,感興趣的可以看一下。本文只會對 Raft 做一個簡要的介紹,細(xì)節(jié)問題可以參考論文。另外提一點,Raft 論文只是一個基本方案,嚴(yán)格按照論文實現(xiàn),性能會很差,我們對 Raft 協(xié)議的實現(xiàn)做了大量的優(yōu)化,具體的優(yōu)化細(xì)節(jié)可參考我司首席架構(gòu)師 tangliu 同學(xué)的《TiKV 源碼解析系列 - Raft 的優(yōu)化》這篇文章。

Raft 是一個一致性協(xié)議,提供幾個重要的功能:

  1. Leader 選舉
  2. 成員變更
  3. 日志復(fù)制

TiKV 利用 Raft 來做數(shù)據(jù)復(fù)制,每個數(shù)據(jù)變更都會落地為一條 Raft 日志,通過 Raft 的日志復(fù)制功能,將數(shù)據(jù)安全可靠地同步到 Group 的多數(shù)節(jié)點中。

 

了解 TiDB 技術(shù)內(nèi)幕——數(shù)據(jù)是如何存儲的

 

到這里我們總結(jié)一下,通過單機(jī)的 RocksDB,我們可以將數(shù)據(jù)快速地存儲在磁盤上;通過 Raft,我們可以將數(shù)據(jù)復(fù)制到多臺機(jī)器上,以防單機(jī)失效。數(shù)據(jù)的寫入是通過 Raft 這一層的接口寫入,而不是直接寫 RocksDB。通過實現(xiàn) Raft,我們擁有了一個分布式的 KV,現(xiàn)在再也不用擔(dān)心某臺機(jī)器掛掉了。

Region

講到這里,我們可以提到一個 非常重要的概念:Region。這個概念是理解后續(xù)一系列機(jī)制的基礎(chǔ),請仔細(xì)閱讀這一節(jié)。

前面提到,我們將 TiKV 看做一個巨大的有序的 KV Map,那么為了實現(xiàn)存儲的水平擴(kuò)展,我們需要將數(shù)據(jù)分散在多臺機(jī)器上。這里提到的數(shù)據(jù)分散在多臺機(jī)器上和 Raft 的數(shù)據(jù)復(fù)制不是一個概念,在這一節(jié)我們先忘記 Raft,假設(shè)所有的數(shù)據(jù)都只有一個副本,這樣更容易理解。

對于一個 KV 系統(tǒng),將數(shù)據(jù)分散在多臺機(jī)器上有兩種比較典型的方案:一種是按照 Key 做 Hash,根據(jù) Hash 值選擇對應(yīng)的存儲節(jié)點;另一種是分 Range,某一段連續(xù)的 Key 都保存在一個存儲節(jié)點上。TiKV 選擇了第二種方式,將整個 Key-Value 空間分成很多段,每一段是一系列連續(xù)的 Key,我們將每一段叫做一個 Region,并且我們會盡量保持每個 Region 中保存的數(shù)據(jù)不超過一定的大小(這個大小可以配置,目前默認(rèn)是 64mb)。每一個 Region 都可以用 StartKey 到 EndKey 這樣一個左閉右開區(qū)間來描述。

 

了解 TiDB 技術(shù)內(nèi)幕——數(shù)據(jù)是如何存儲的

 

注意,這里的 Region 還是和 SQL 中的表沒什么關(guān)系! 請各位繼續(xù)忘記 SQL,只談 KV。 將數(shù)據(jù)劃分成 Region 后,我們將會做 兩件重要的事情:

  • 以 Region 為單位,將數(shù)據(jù)分散在集群中所有的節(jié)點上,并且盡量保證每個節(jié)點上服務(wù)的 Region 數(shù)量差不多
  • 以 Region 為單位做 Raft 的復(fù)制和成員管理

這兩點非常重要,我們一點一點來說。

先看第一點,數(shù)據(jù)按照 Key 切分成很多 Region,每個 Region 的數(shù)據(jù)只會保存在一個節(jié)點上面。我們的系統(tǒng)會有一個組件來負(fù)責(zé)將 Region 盡可能均勻的散布在集群中所有的節(jié)點上,這樣一方面實現(xiàn)了存儲容量的水平擴(kuò)展(增加新的結(jié)點后,會自動將其他節(jié)點上的 Region 調(diào)度過來),另一方面也實現(xiàn)了負(fù)載均衡(不會出現(xiàn)某個節(jié)點有很多數(shù)據(jù),其他節(jié)點上沒什么數(shù)據(jù)的情況)。同時為了保證上層客戶端能夠訪問所需要的數(shù)據(jù),我們的系統(tǒng)中也會有一個組件記錄 Region 在節(jié)點上面的分布情況,也就是通過任意一個 Key 就能查詢到這個 Key 在哪個 Region 中,以及這個 Region 目前在哪個節(jié)點上。至于是哪個組件負(fù)責(zé)這兩項工作,會在后續(xù)介紹。

對于第二點,TiKV 是以 Region 為單位做數(shù)據(jù)的復(fù)制,也就是一個 Region 的數(shù)據(jù)會保存多個副本,我們將每一個副本叫做一個 Replica。Replica 之間是通過 Raft 來保持?jǐn)?shù)據(jù)的一致(終于提到了 Raft),一個 Region 的多個 Replica 會保存在不同的節(jié)點上,構(gòu)成一個 Raft Group。其中一個 Replica 會作為這個 Group 的 Leader,其他的 Replica 作為 Follower。所有的讀和寫都是通過 Leader 進(jìn)行,再由 Leader 復(fù)制給 Follower。 大家理解了 Region 之后,應(yīng)該可以理解下面這張圖:

 

了解 TiDB 技術(shù)內(nèi)幕——數(shù)據(jù)是如何存儲的

 

我們以 Region 為單位做數(shù)據(jù)的分散和復(fù)制,就有了一個分布式的具備一定容災(zāi)能力的 KeyValue 系統(tǒng),不用再擔(dān)心數(shù)據(jù)存不下,或者是磁盤故障丟失數(shù)據(jù)的問題。這已經(jīng)很 Cool,但是還不夠完美,我們需要更多的功能。

MVCC

很多數(shù)據(jù)庫都會實現(xiàn)多版本控制(MVCC),TiKV 也不例外。設(shè)想這樣的場景,兩個 Client 同時去修改一個 Key 的 Value,如果沒有 MVCC,就需要對數(shù)據(jù)上鎖,在分布式場景下,可能會帶來性能以及死鎖問題。 TiKV 的 MVCC 實現(xiàn)是通過在 Key 后面添加 Version 來實現(xiàn),簡單來說,沒有 MVCC 之前,可以把 TiKV 看做這樣的:

  1. Key1 -> Value 
  2.     Key2 -> Value 
  3.     …… 
  4.     KeyN -> Value 

有了 MVCC 之后,TiKV 的 Key 排列是這樣的:

  1. Key1-Version3 -> Value 
  2.     Key1-Version2 -> Value 
  3.     Key1-Version1 -> Value 
  4.     …… 
  5.     Key2-Version4 -> Value 
  6.     Key2-Version3 -> Value 
  7.     Key2-Version2 -> Value 
  8.     Key2-Version1 -> Value 
  9.     …… 
  10.     KeyN-Version2 -> Value 
  11.     KeyN-Version1 -> Value 
  12.     …… 

注意,對于同一個 Key 的多個版本,我們把版本號較大的放在前面,版本號小的放在后面(回憶一下 Key-Value 一節(jié)我們介紹過的 Key 是有序的排列),這樣當(dāng)用戶通過一個 Key + Version 來獲取 Value 的時候,可以將 Key 和 Version 構(gòu)造出 MVCC 的 Key,也就是 Key-Version。然后可以直接 Seek(Key-Version),定位到第一個大于等于這個 Key-Version 的位置。

事務(wù)

TiKV 的事務(wù)采用的是 Percolator 模型,并且做了大量的優(yōu)化。事務(wù)的細(xì)節(jié)這里不詳述,大家可以參考論文以及我們的其他文章。這里只提一點,TiKV 的事務(wù)采用樂觀鎖,事務(wù)的執(zhí)行過程中,不會檢測寫寫沖突,只有在提交過程中,才會做沖突檢測,沖突的雙方中比較早完成提交的會寫入成功,另一方會嘗試重新執(zhí)行整個事務(wù)。當(dāng)業(yè)務(wù)的寫入沖突不嚴(yán)重的情況下,這種模型性能會很好,比如隨機(jī)更新表中某一行的數(shù)據(jù),并且表很大。但是如果業(yè)務(wù)的寫入沖突嚴(yán)重,性能就會很差,舉一個極端的例子,就是計數(shù)器,多個客戶端同時修改少量行,導(dǎo)致沖突嚴(yán)重的,造成大量的無效重試。

其他

到這里,我們已經(jīng)了解了 TiKV 的基本概念和一些細(xì)節(jié),理解了這個分布式帶事務(wù)的 KV 引擎的分層結(jié)構(gòu)以及如何實現(xiàn)多副本容錯。下一節(jié)會介紹如何在 KV 的存儲模型之上,構(gòu)建 SQL 層。

 

責(zé)任編輯:武曉燕 來源: pingcap
相關(guān)推薦

2017-06-04 23:58:08

TiDB數(shù)據(jù)庫存儲

2017-06-04 23:57:10

TiDBSQL存儲數(shù)據(jù)

2017-06-09 08:00:38

TiDB調(diào)度數(shù)據(jù)庫

2023-03-09 15:53:05

TiDB數(shù)據(jù)庫MySQL

2011-12-28 13:30:39

云計算云存儲

2022-04-25 10:04:58

MySQL性能數(shù)據(jù)

2020-03-17 23:08:32

數(shù)據(jù)Elasticsear存儲

2022-10-18 15:21:25

大數(shù)據(jù)管理技術(shù)數(shù)據(jù)倉庫

2024-02-20 13:16:00

大數(shù)據(jù)數(shù)據(jù)倉庫數(shù)據(jù)湖

2017-11-01 14:29:38

2017-11-27 08:17:38

存儲數(shù)據(jù)位置

2025-07-04 07:59:55

2024-12-16 17:02:58

MySQLInnoDB數(shù)據(jù)庫

2011-08-04 17:47:03

iPhone 雙緩沖 視圖

2022-11-11 19:09:13

架構(gòu)

2023-05-09 07:53:18

2014-02-09 14:46:33

微軟微軟CEO納德拉

2012-05-14 13:49:56

2017-11-10 08:35:06

存儲FCoE網(wǎng)絡(luò)

2021-01-22 11:21:46

數(shù)字中心數(shù)字貨幣人工智能
點贊
收藏

51CTO技術(shù)棧公眾號

欧美日韩三级在线观看| 国产盗摄视频在线观看| www.亚洲自拍| 天堂中文在线8| 一区二区三区福利| 亚洲综合一区二区| 97碰碰视频| 欧美一区二区福利| 成年人看片网站| 亚洲成人xxx| 精品毛片乱码1区2区3区| 91动漫在线看| av电影在线网| 不卡av在线免费观看| 国产精品精品视频| 久久久久久久中文字幕| 精品国产一区探花在线观看| 日韩免费看网站| 国产一区视频免费观看| 羞羞的网站在线观看| 久久综合久久鬼色中文字| 91久久久久久久久久久久久| 可以免费看的av毛片| 香蕉综合视频| 亚洲三级av在线| 性感美女一区二区三区| 欧美午夜三级| 色综合天天综合色综合av| 激情六月天婷婷| 9色在线视频网站| 91日韩一区二区三区| 51精品国产人成在线观看| 中文字幕一区二区三区四区欧美| 韩日视频一区| 久久天天躁日日躁| 久久福利免费视频| 国产精品欧美日韩一区| 日韩电视剧免费观看网站| 国模大尺度视频| 香蕉成人在线| 欧美视频第二页| aaaaaa亚洲| 末成年女av片一区二区下载| 亚洲一区二区三区爽爽爽爽爽| 亚洲美女搞黄| 高清av在线| 国产欧美日韩综合| 免费看成人av| 先锋av资源站| av在线播放一区二区三区| 国产精品久久波多野结衣| 国产绳艺sm调教室论坛| 精品在线一区二区三区| 国产日韩精品视频| 嫩草影院一区二区三区| 国产一区二区精品| 91成人在线播放| 日韩网红少妇无码视频香港| 激情欧美亚洲| 91爱视频在线| 91精品国产乱码在线观看| 亚洲日本视频| 2019中文字幕全在线观看| wwwxxx亚洲| 久久国产日本精品| 国产精品白嫩初高中害羞小美女 | 国产黄色片av| 国产成人午夜精品影院观看视频| 亚洲最大福利视频| 高清乱码毛片入口| 不卡一区在线观看| 久久艳妇乳肉豪妇荡乳av| 免费a级毛片在线观看| 久久久不卡影院| 性欧美大战久久久久久久免费观看| 女人另类性混交zo| 日p在线观看| 中文字幕一区二区三区在线观看| 一区二区三区我不卡| 国产原创精品视频| 亚洲一区二区三区美女| 亚洲熟妇无码一区二区三区导航| 国产福利电影在线播放| 日本道色综合久久| 中文字幕一区久久| 大桥未久女教师av一区二区| 亚洲精品视频久久| 毛片久久久久久| 中文字幕日韩欧美精品高清在线| 午夜精品免费视频| 日韩不卡高清视频| 国产精品亚洲成人| 麻豆91蜜桃| 欧美成人高清在线| 亚洲国产一区二区视频| 欧美亚洲日本在线观看| 亚洲成a人片777777久久| 精品欧美久久久| 黑人巨大精品欧美| 国产精品成人一区二区不卡| 国模精品一区二区三区色天香| 天天操夜夜操视频| 国内精品不卡在线| 免费一区二区三区在在线视频| 欧美成人三区| 欧美午夜丰满在线18影院| 一级黄色片国产| 日韩三区视频| 欧美裸身视频免费观看| 自拍偷拍校园春色| 盗摄精品av一区二区三区| 视频一区二区三| 97超碰免费在线| 欧美日韩国产a| 中文字幕一区二区人妻在线不卡| 国产精品久久久久久久久妇女| 91av福利视频| 精品人妻少妇AV无码专区| 久久精品亚洲一区二区三区浴池| 国产精品视频二| 国产精品黄色片| 国产精品成人一区二区艾草| www亚洲精品| 日韩欧美国产成人精品免费| 久久久精品午夜少妇| 成人18视频| 瑟瑟视频在线| 色综合色综合色综合色综合色综合| 手机看片国产精品| 日韩欧美自拍| 国产成人精品电影久久久| 亚洲美女福利视频| 亚洲天堂精品在线观看| 午夜视频你懂的| 一区二区美女| 中文字幕在线视频日韩| 亚洲大尺度在线观看| www..com久久爱| 性高湖久久久久久久久aaaaa| 巨大黑人极品videos精品| 亚洲人成五月天| 日产欧产va高清| 国产成人综合在线| 国产精品88久久久久久妇女| 精品久久毛片| 永久免费看mv网站入口亚洲| 91丝袜一区二区三区| 99久久久精品| 国产伦精品一区二区三区四区视频_| 日韩欧美一级| 久久99久久久久久久噜噜| 99久久国产热无码精品免费| 亚洲三级免费电影| 亚洲成人福利视频| 欧美三级免费| 国产精品一区二区三区精品 | 国产欧美日韩三区| 日韩一级片播放| 日本不卡电影| 成人黄色av播放免费| 久久国产精品一区| 欧美一级片在线观看| 国产盗摄一区二区三区在线| 国产精品一区一区| 丁香婷婷综合激情| 国产精品欧美大片| 97欧美精品一区二区三区| 手机看片福利在线| 色婷婷精品久久二区二区蜜臂av| 国产美女免费网站| 美女免费视频一区| 糖心vlog在线免费观看| 亚洲精品a区| 亚州成人av在线| 免费国产在线观看| 欧美三级欧美一级| 农村黄色一级片| 成人午夜免费视频| 日本在线观看a| 成人羞羞网站入口| 91精品国产99久久久久久红楼| 天使と恶魔の榨精在线播放| 亚洲国产精彩中文乱码av| 在线精品免费视| 中文字幕av一区二区三区| 伊人色在线视频| 在线观看亚洲| 色噜噜狠狠一区二区三区| 精品国产一区二区三区2021| 国模吧一区二区三区| 午夜av免费观看| 欧美午夜精品久久久久久孕妇| 精品自拍偷拍视频| 99视频一区二区三区| 视色视频在线观看| 亚洲三级色网| 一本一道久久久a久久久精品91| 天堂va欧美ⅴa亚洲va一国产| 欧洲成人免费aa| 伦xxxx在线| 亚洲精品国产精品国自产在线| 这里只有精品免费视频| 一区二区三区毛片| 精品无码一区二区三区 | 国产精品黄页免费高清在线观看| caopen在线视频| 亚洲欧美一区二区三区久久 | 老司机深夜福利在线观看| 中文字幕在线观看亚洲| 午夜影院免费体验区| 91精品欧美久久久久久动漫| 欧美亚洲精品天堂| 亚洲精品国产一区二区三区四区在线| 右手影院亚洲欧美| 国产精品资源网| 手机看片福利日韩| 宅男噜噜噜66国产日韩在线观看| 一区精品在线| 免费成人网www| 国产精品久久久久久久免费大片 | 久久中文字幕人妻| 国内久久婷婷综合| 亚洲xxxx2d动漫1| 亚洲美女少妇无套啪啪呻吟| 久久视频免费在线| 日韩电影免费网址| 欧美日韩亚洲在线| 欧美影院天天5g天天爽| 99久热re在线精品996热视频 | 147欧美人体大胆444| 成人h在线观看| 日韩美女视频免费看| 91破解版在线观看| 欧美激情18p| 黄色在线观看网站| 色妞在线综合亚洲欧美| 国产在线资源| 亚洲毛片在线观看| 午夜av免费在线观看| 精品少妇一区二区三区在线播放| 国产老女人乱淫免费| 欧美精品亚洲一区二区在线播放| 成人a v视频| 色婷婷综合久久久久中文一区二区| 日韩三级视频在线| 五月综合激情婷婷六月色窝| 欧美日韩在线视频免费播放| 亚洲女人的天堂| 182在线观看视频| 中文字幕在线一区二区三区| 日本一二三不卡视频| 国产精品色噜噜| av在线播放中文字幕| 国产精品免费久久久久| 日本在线观看网址| 国产精品高清亚洲| 登山的目的在线| 亚洲激情在线播放| 久久久综合久久久| 午夜精品久久久久久久久| 中日韩精品视频在线观看| 欧美日韩国产精品一区二区三区四区 | 国产一二三在线视频| 亚洲私人影院| 亚洲熟妇av日韩熟妇在线| 在线亚洲欧美| 成人在线观看a| 日韩1区2区3区| 中文字幕国内自拍| 韩国欧美国产一区| 一级黄色电影片| jlzzjlzz亚洲日本少妇| 亚洲第一香蕉网| 国产精品入口麻豆九色| 三级在线观看免费大全| 亚洲在线免费播放| 国产无人区码熟妇毛片多| 91久久国产最好的精华液| 在线免费a视频| 欧美一区二区三区视频免费播放| 黄色a在线观看| 亚洲系列中文字幕| 超碰免费在线播放| 国语自产偷拍精品视频偷 | 成人免费网站在线观看| 亚洲视频国产精品| 久久婷婷开心| 91视频久久| 欧美视频在线观看视频| 久久久久久穴| 日本黄色一级网站| 91亚洲精品久久久蜜桃网站| gv天堂gv无码男同在线观看| 亚洲精品高清视频在线观看| 国产区一区二区三| 欧美精品 国产精品| 少妇高潮一区二区三区69| 一区二区av在线| 高h视频在线播放| 国产精品日韩在线播放| 在线综合色站| 新呦u视频一区二区| 好吊日精品视频| www.亚洲高清| 成人av电影在线观看| 亚洲黄色网址大全| 精品国产精品自拍| 国产伦一区二区| 亚洲色图av在线| 国产在线拍揄自揄拍视频| 国产免费一区二区三区在线观看| 久久综合另类图片小说| 正在播放91九色| 香蕉视频成人在线观看| 欧美日韩一区二区区| 欧美国产综合色视频| 日韩免费黄色片| 91麻豆精品91久久久久久清纯 | 国产精品欧美一区二区三区不卡 | 免费观看黄网站| 欧美国产一区视频在线观看| 精品久久免费视频| 91精品国产免费久久综合| 好男人免费精品视频| 国自产精品手机在线观看视频| 国产成人免费av一区二区午夜| 欧美一区二区福利| 国产精品毛片一区二区三区| 精品人妻二区中文字幕| 一区视频在线播放| 中文字幕在线观看视频一区| 亚洲女人被黑人巨大进入| 国产免费拔擦拔擦8x高清在线人 | 欧美大奶子在线| 日韩精品一级毛片在线播放| 日韩av图片| 久久狠狠婷婷| 三级黄色片网站| 亚洲超碰精品一区二区| 亚洲国产欧美另类| 欧美成人黑人xx视频免费观看| 香蕉久久一区| 中文字幕剧情在线观看一区| 美国十次了思思久久精品导航| 精品人妻中文无码av在线 | 久久久精品人体av艺术| 国产又色又爽又黄的| 日韩福利视频在线观看| 狠狠操一区二区三区| 国产区日韩欧美| 一区二区三区精品视频在线观看| 一边摸一边做爽的视频17国产| 亚洲一二三区视频在线观看| 99久久久久成人国产免费| 久久久精品国产| 国产精品毛片无码| 永久免费看av| 懂色av一区二区夜夜嗨| 久久久久97国产| 亚洲成**性毛茸茸| 国产高清视频色在线www| 噜噜噜噜噜久久久久久91| 久久久久久自在自线| 国产在线综合视频| 欧美日韩在线播放| 麻豆传媒在线观看| 高清不卡日本v二区在线| 亚洲欧洲日本一区二区三区| 国产熟妇搡bbbb搡bbbb| 欧美午夜精品电影| 高h视频在线观看| 国产欧美一区二区三区另类精品| 亚洲一区不卡| 香蕉久久久久久久| 91精品蜜臀在线一区尤物| 黄色在线看片| 欧美第一黄网| 精品综合久久久久久8888| 免看一级a毛片一片成人不卡| 亚洲国产成人在线视频| 亚洲精品粉嫩美女一区| 自拍视频一区二区三区| 粉嫩蜜臀av国产精品网站| 狠狠人妻久久久久久| 精品国模在线视频| 久久精品国产亚洲5555| 国产一级不卡毛片| 亚洲精品高清在线| 九一在线视频| 亚洲aⅴ男人的天堂在线观看| 怡红院精品视频在线观看极品| 国产美女免费网站| 日韩三级av在线播放| 依依综合在线| eeuss中文| 26uuu国产在线精品一区二区| 真实的国产乱xxxx在线91| 欧美国产日韩一区二区在线观看| 国产精品美女久久久久久不卡| wwwxxxx在线观看|