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

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

存儲 存儲軟件
首先需要說明的是,HotRing是阿里核心緩存系統Tair的一個子組件。Tair是阿里一個NoSQL內存數據庫(Tair在阿里云上稱為企業版Redis)。HotRing是Tair用來解決沖突鏈表長度導致性能衰減問題的一個子組件。

 首先需要說明的是,HotRing是阿里核心緩存系統Tair的一個子組件。Tair是阿里一個NoSQL內存數據庫(Tair在阿里云上稱為企業版Redis)。HotRing是Tair用來解決沖突鏈表長度導致性能衰減問題的一個子組件。

[[324882]]

為什么需要HotRing

HotRing不是要解決緩存集群服務中單節點的并發能力上限,這一點一定要注意。它要解決的問題是緩存核心數據結構Hash中鏈表沖突導致性能衰減的問題。所以,阿里工程師測試出來的帶有HotRing的Tair,其性能相比目前其他最快的KV系統,是它們的2.58倍。根據壓力測試可知,HotRing對于緩存集群的每個節點處理熱點數據,是一個非常有用的數據結構。

題外話:Tair也有解決單個節點性能瓶頸的能力。假設雙十一淘寶首頁上的一件商品,我們可知,這件商品信息的TPS起碼是幾百萬甚至千萬級別的。這樣的熱點KEY,無論你的集群有多大,這個KEY只會路由到其中的一臺服務器上,那么并發能力就受到單節點限制,原生的memcache和Redis是完全搞不定的(Redis單節點TPS大概是10w級別,memcache可以達到幾十萬)。有一種辦法就是自己處理本地緩存,這樣代價比較大。阿里Tair的做法是熱點散列,如下圖所示,在每一個DataServer上開辟一個HotZone,統計到的熱點KEY就保存到集群每一個節點上的HotZone中,客戶端把熱點數據KEY的請求隨機打到任意一臺DataServer的HotZone區域(熱點KEY并不是Hash取模,這一點很重要),這樣的話熱點KEY請求就會被散列到多個節點乃至整個集群。那么整個Tair集群就不會因為某個熱點KEY而發生過載的情況。

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

背景和動機

這一段落,我們首先介紹Hash索引和KV系統中存在的熱點問題。然而,我們會給出熱點感應理論的潛在好處。最后,我們討論感應熱點的挑戰以及我們的設計原則。

Hash索引和熱點問題

Hash索引是KV存儲中最流行的數據結構,尤其當上游系統不需要范圍查詢的時候。下圖是典型的hash索引結構,其包含一張全局的Hash表,并且每個Entry都有一個沖突的鏈表。當我們訪問一個元素時,首先計算它的hash值h,這樣就能定位到Entry,然后在沖突鏈表上尋找我們要找的KEY。我們假設hash值h有n位,我們將其分為兩部分,前面 k位用來作為hash表部分,后面n-k位用來作為tag部分,如下圖所示:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

這樣的數據結構有一個很明顯的問題,如下圖所示。沖突的鏈表越長,需要訪問的內存次數就越多。因為在鏈表上查找某個KEY的時間復雜度是O(n):

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

這樣的數據結構還帶來一個問題,我們再看上面的(Figure 2),因為它無法感知熱點數據,那么熱點數據很可能在鏈表的頭部,也可能在鏈表的尾部,也可能均勻分散在鏈表上。熱點數據越接近尾部,訪問內存的次數就越高,性能就會越差,而且會隨著并發的提升,表現會更差。所以,這樣的數據結構對熱點數據是非常不友好的。

也有一些方法減少熱點數據訪問代價,但是,效果非常有限。首先,比如CPU緩存可以加速訪問熱點數據塊。但是對大部分的服務器來說,CPU緩存只有32M左右。對于一個256G的Redis緩存集群來說,它只能緩存0.012%的數據。

0.012%的比例肯定是不夠用的。阿里團隊分析了他們的業務數據分布,得到如下圖所示的結論。即對于一個Redis集群來說,50%~90%的情況下會訪問集群中1%的KEY。:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

CPU緩存這種方案行不通。還有另一種辦法:Rehash。通過Rehash來減少沖突鏈表的長度。沖突鏈表長度越短,熱點數據訪問的代價就越小,性能就會越高。但是。當Hash表已經非常大的時候,非常不建議Rehash。因為Rehash可能僅帶來一半的功效(就減少鏈長而言)。總而言之,所有現有方法都只能在較小程度上緩解熱點問題。

當我們論證HotRing的價值后,就剩下挑戰需要我們去解決了,我們的設計主要面對以下兩個問題:

熱點轉移(Hotspot Shift)。真實系統的緩存中熱點數據是會隨著時間發生變化的,比如今天是IQOO3,明天是Mate30,后臺是iPhone。所以,我們需要一個輕量的方案來跟蹤這些熱點切換問題。

并發訪問(Concurrent Access)。每個熱點數據的并發都會非常高,所以支持高并發的讀寫,才能達到令人滿意的性能。

HotRing簡介

讓我們看看阿里的HotRing是如何設計來優化沖突鏈表訪問性能問題的。如下圖所示,由沖突環取代之前的沖突鏈表,并且有一個Head指針,它會指向或者接近最熱的KEY,并且這個環是有序的。Head指針非常有用,當熱點數據發生轉移時,只需要更改這個Head指針,讓其指向環上最熱的數據,或者一個更好的位置。熱點數據轉移策略有兩種,后面會細講:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

至于并發問題,無鎖(LOCK-FREE)設計是最權威的解決方案,而且很多研究表明無鎖設計能顯著提升性能(JDK8中JUC大量采用CAS盡可能的不加鎖解決并發,也是一樣的原理)!而在HotRing中引入無鎖設計,可以非常優雅的解決并發寫入與刪除問題,并且設計團隊還將其應用到所有需要的地方,比如:熱點轉移探測,Head指針移動,rehash等。

HotRing設計

接下來,讓我們更深入的了解HotRing的設計細節,包括索引結構,特點轉移探測策略,無鎖操作(包括讀寫,插入刪除,Head指針移動,Rehash等)。

有序環索引結構

如上面的(Figure 4)圖描述了HotRing的索引結構,它主要改進了傳統Hash索引沖突鏈表結構。阿里HotRing的設計將最后一個KEY和第一個KEY連起來,并稱之為沖突環。這樣的話,Head指針可以指向任意一個元素,并不一定是固定在鏈表的第一個元素。這樣的設計,就可以將Head指向熱點數據。需要注意的是,當沖突環上只有一個數據時,Head的next指向它本身。

但是環形設計有一個很嚴重的問題,就是如果KEY不存在的話,就會導致死循環。因此,需要一個很好的方案解決這個問題,這非常重要。看到這里,你可能會有疑問,為什么不把Head指針當作起點,也當作終點呢?不可以,因為由于并發問題,Head指針可能會被修改。因此,HotRing的設計是讓沖突環有序,并且根據KEY進行排序。這樣的話,當我們在沖突環上查找某個KEY時,如果連續碰到兩個KEY且一個比目標KEY大,一個比目標KEY小,就表示找不到目標KEY,那么就可以安全的停止查找了。

下圖對比了沖突鏈表和HotRing兩種數據結構訪問方式。在HotRing中,Head指向A(3, 25),假設我們要查詢B(4,35),那么從Head開始,訪問到C(5,65)就可以結束了。而在沖突鏈表中,我們需要遍歷A,C,D,E,F,I后才能停止訪問:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

熱點轉移識別

如剛才講到,在HotRing中,無論是查找一個存在的KEY還是不存在的KEY,都非常容易。那么還有一個很棘手的問題,就是當熱點發生轉移的時候,如何識別并調整Head指針。比如熱點本來在A(3,25)上,隨著時間的推移,當熱點轉移到D(5, 68)時,如何感知,并將Head移到D(5, 68)上。

由于Hash值分布非常均勻,所以熱點KEY均勻分布在所有桶中。因此,我們只需要關注每個Bucket中如何識別熱點問題即可。實際上,每個桶中沖突的元素是很少的(可能只有5~10個),并且由于熱點數據比例一般只有10~20%,這就意味著每個桶上可能只有一個熱點KEY。因此,我們要做的就是,把這個Head指針指向這個熱點元素。為了獲得很好的性能,我們需要考慮兩個指標:識別精準度和反應靈敏度(魚與熊掌不可兼得)。

1.隨機移動策略

我們首先介紹的是隨機移動策略,這種策略的特點是反應靈敏,但是精準度不及后面介紹的統計采樣策略。這個策略的基本思路就是周期性的將Head指針移到一個潛在的熱點KEY上,不需要記錄任何歷史數據。每個線程會有一個ThreadLocal變量記錄它執行的請求數,每滿R次請求,線程決定是否需要移動Head指針。假設第R次訪問剛好是熱點訪問,那么不需要移動Head指針。反之,將指針移動到訪問的這個元素上,這個元素變為新的熱點數據。

這個參數R會影響反應靈敏度和識別精確度,如果R的值比較小,反應靈敏度會變高,但是就會帶來頻繁的,無效的Head指針移動。在我們的使用場景中,訪問的數據高度傾斜,因此Head指針移動應該不會頻繁。根據經驗,這個R值默認設置為5。

需要注意的是,如果數據傾斜不明顯的話,這個隨機策略的效果就不是很理想。更重要的是,這個策略不能處理一個環上有多個熱點KEY的場景。因為在這種場景下,Head指針會頻繁的在這些熱點KEY之間移動。如此一來,不但不能加速熱點數據訪問,可能還會影響常規操作。

2.統計采樣策略

為了訪問熱點數據的性能最高,因為我們設計了統計采樣策略。它提供了更精準的特點識別能力,但是相比隨機策略反應會遲鈍一些。接下來首先介紹每個KEY的詳細格式,以及HotRing上的Head指針,講解如何利用這些數據格式在沒有額外空間消耗的前提下維護統計信息,然后我們詳細闡述采樣策略預估訪問頻率。最終,我們要找到一個方法,當熱點數據轉移時,能讓Head指針移動到最佳位置,并且支持多個熱點KEY存在一個HotRing上的情況。

并發操作

Head指針無鎖(lock-free)設計會比較復雜,主要反映在幾個方面:一方面,Head指針可能被多個線程并發執行移動操作。因為要考慮Head指針的并發情況,防止Head指針移動到無效的KEY上。另一方面,當我們刪除或者更新KEY時,我們需要檢查Head指針是否在這些KEY上。如果是,那我我們要保證移動Head的準確性。接下來我們從增刪改查這4個維度詳細講述HotRing上的并發操作。

1.查詢

在HotRing上查找一個目標KEY就是從Head開始查找,前面已經提到過,不需要任何額外的動作,讀操作本身就是無鎖的。

2.新增

新增操作如下圖所示,假設創建一個C,同時并發修改B為B'。假如沒有并發保護,插入C后,鏈路就是B->C->D。同時將B修改為B',鏈路就是A->B'->D。這樣的話,從A遍歷,就會發現C已經丟失了。

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

3.修改

修改操作如下圖所示,假設有一個線程將B修改為B‘,同時另一個線程將D修改為D‘,如果沒有并發保護,就會導致最終的鏈路變成:A->B'->D->E,即D'會丟失:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

4.刪除

刪除操作如下圖所示,假設有一個線程將D修改為D‘,同時另一個線程將B線程。如果沒有并發保護,可能導致最終的鏈路變成A->D->E,即D'會丟失:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

為了解決上面這幾種并發導致的問題,HotRing用了一個Occupied位來解決這個問題。例如,在[2. 新增]即更新和被插入并發操作時,更新B時它的Next被更新,這時候它的Occupied就會設置為true。一旦Occupied設置為true,接下來的并發新增C就會失敗,因為B的Occupied為true,所以必須重試,直到更新操作完成才行。原理非常類似于CAS,即你任何操作涉及的KEY的Occupied都不能是true,是true表示其他并發操作正在進行中。

5.Head指針移動

為了確保Head指針操作的準確性,尤其在更新和刪除的時候。HotRing分不同情況解決這個問題。如果是識別策略導致Head指針移動時,也用Occupied這個占位符來解決并發問題。比如識別策略達到滿足Head指針移動的條件,首先將Head指針指向的元素的Occupied置為true。確保它不被更新和刪除(因為這時候如果有并發更新和刪除,發現它們要操作的KEY的Occupied為true,就會重試)。然后將Head指針移到新的KEY上,移動之前,需要確保新的KEY沒有被其他線程更新或者刪除,因此移動Head之前,還需要將新的KEY的Occupied置為true,當Head指針移動完成后,再將這兩個KEY的Occupied重置。然后其他線程就能操作這兩個KEY了。

無鎖Rehash

傳統的Rehash策略一般由負載因子觸發,例如沖突鏈表平均長度等。然后這種策略沒有考慮熱點數據,所以對HotRing不適合。取而代之的是,HotRing用訪問成本來觸發Rehash(獲取數據時平均內存訪問次數)。如下圖所示,HotRing的無鎖Rehash分為如下3個主要步驟:

1.初始化

首先HotRing創建一個rehash的后臺線程,這個線程初始化一個size是舊hash表兩倍的新hash表。通過復用tag的最高一位來進行索引。因此,新表中將會有兩個Head指針與舊表中的一個Head指針對應。HotRing根據tag范圍對數據進行劃分。假設tag最大值為T,tag范圍為[0,T),則兩個新的Head指針對應tag范圍為[0,T/2)和[T/2,T)。同時,rehash線程創建一個rehash節點(如下右圖中間節點所示,包含兩個空數據的子元素節點),子元素節點分別對應兩個新Head指針(Head1和Head2)。HotRing利用元素中的Rehash標志位識別rehash節點的子元素節點:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

2.分裂

在分裂階段,rehash線程通過將rehash節點的兩個子元素節點插入沖突環中完成環的分裂。如圖(Split)所示,因為B和E是tag的范圍邊界,所以子元素節點分別插入到B和E之前。完成兩個插入操作后,新hash表將激活,所有的訪問都將通過新hash表進行訪問。到目前為止,已經在邏輯上將沖突環一分為二。接下來當我們查找數據時,最多需要掃描相比舊hash表一半的元素:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

3.刪除

刪除階段需要做一些收尾性的工作,包括舊hash表的回收。以及rehash節點的刪除回收。這里需要強調,分裂階段和刪除階段間,必須有一個RCU靜默期(transition period)。該靜默期保證所有從舊哈希表進入的訪問均已經返回。否則,直接回收舊哈希表可能導致并發錯誤。

總結

接下來簡單總結一下HotRing是如何rehash的。首先會有一個size為舊表2倍的新的hash表,并且會有兩個Head指針:Head1和Head2。分裂時,原沖突環中一半的元素跟著Head1,另一半的元素跟著Head2,從而組成兩個新的沖突環。最后是一些收尾性的工作,簡單吧^^

總結

最后,我們通過YCSB對HotRing方案進行了壓力測試,并對比了行業有名的Memcached等。壓測結果如下圖所示,我們可以看到HotRing方案的吞吐量遠超其他方案:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

此外,壓測了鏈表長度對性能的影響,如下圖所示,我們可以發現當鏈表長度從2一直遞增到16的過程中。HotRing方案的性能幾乎是恒定的。而一致性Hash和FASTER方案的性能很明顯梯度遞減了:

 

一碰就頭疼的緩存熱點Key問題,阿里的Tair是如何解決的?

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-10-08 00:00:09

數據庫緩存系統

2021-02-23 19:24:51

數字人民幣碰一碰支付

2022-12-23 20:46:37

遙控器應用鴻蒙

2021-01-30 19:35:44

HDFS單點Hadoop

2011-08-22 14:50:39

ssh

2021-04-18 15:01:56

緩存系統數據

2022-12-12 08:13:27

Redis數據傾斜

2018-05-17 09:40:56

區塊鏈身份識別身份驗證

2022-01-17 14:51:20

鴻蒙HarmonyOS應用

2024-11-21 16:47:55

2017-10-17 09:21:06

2021-07-15 09:39:06

鴻蒙HarmonyOS應用

2021-12-28 16:10:20

鴻蒙HarmonyOS應用

2023-11-28 08:00:00

SpringJava

2023-07-18 16:05:00

IP地址

2024-12-05 09:06:58

2019-11-26 14:30:20

Spring循環依賴Java

2022-05-19 15:47:24

碰一碰連接設備開發鴻蒙
點贊
收藏

51CTO技術棧公眾號

国产精品久久亚洲| 一区二区三区视频免费在线观看| 男人草女人视频| 色欲av伊人久久大香线蕉影院| 国内精品久久久久久久97牛牛 | 岛国精品资源网站| 美女视频一区| 亚洲成人一区二区| 亚洲ai欧洲av| 五月婷婷开心中文字幕| 开心九九激情九九欧美日韩精美视频电影| 九九久久久久99精品| 毛片网站免费观看| 久久久久毛片免费观看| 欧美性黄网官网| 久久久成人精品一区二区三区| 四虎影视2018在线播放alocalhost| 老妇喷水一区二区三区| 欧美激情按摩在线| 谁有免费的黄色网址| 亚洲综合网狠久久| 欧美精品1区2区3区| 日本在线观看a| 日本天码aⅴ片在线电影网站| 国产午夜精品一区二区| 国产麻豆日韩| 国产福利小视频| 免费成人你懂的| 日本欧美一二三区| 日韩欧美一区二区一幕| 欧美日本不卡高清| 久久精品福利视频| 无码人妻丰满熟妇啪啪欧美| 老司机精品视频在线播放| 91精品国产色综合久久ai换脸| 91av俱乐部| 性欧美freesex顶级少妇| 一区二区不卡在线视频 午夜欧美不卡在| 色女人综合av| 国产在线电影| www一区二区| 狠狠色综合一区二区| 精品国产乱码久久久久久蜜臀网站| 首页综合国产亚洲丝袜| 欧美一区二区视频97| 国产成人无码精品久在线观看 | 91无套直看片红桃| 日韩国产精品久久久久久亚洲| 欧美亚洲国产精品| 国产乱国产乱老熟| 国产精品一页| 欧美在线视频一二三| 日本黄色片视频| 亚洲三级观看| 97视频免费在线看| 日韩av男人天堂| 亚洲黄色免费| 欧美做受高潮电影o| 国产区在线观看视频| 亚洲美女啪啪| 91成人天堂久久成人| 成人免费看片98欧美| 亚洲免费一区二区| 欧洲成人在线视频| 美女黄页在线观看| 久久精品国产亚洲高清剧情介绍 | 国产精品极品| 亚洲精品白浆高清久久久久久| 色婷婷精品久久二区二区密| 日本欧美韩国国产| 亚洲一区二区国产| 乱老熟女一区二区三区| 中文字幕一区二区av| 欧美激情在线观看| 日本一区二区三区精品| 日韩av一区二区三区| 国产中文字幕亚洲| 蜜桃在线一区二区| 国产视频一区在线观看| 一本色道久久综合亚洲精品婷婷| 成人黄视频在线观看| 亚洲国产一二三| 国产女女做受ⅹxx高潮| 成人不卡视频| 欧美一级专区免费大片| 中出视频在线观看| 日韩在线理论| 久久久久久久国产| 这里只有久久精品视频| 国产中文字幕一区| 久久久久久久免费| 免费黄网站在线播放| 亚洲一区二区三区美女| 欧美日韩大尺度| 精品国产亚洲一区二区三区| 亚洲国产欧美一区二区三区同亚洲| 日韩在线免费观看av| 日韩在线不卡| 欧美综合在线第二页| 国产美女精品视频国产| www日韩大片| 香港三级日本三级a视频| 日本高清不卡一区二区三区视频 | 视频一区 中文字幕| 欧美激情一区二区三区全黄| 18黄暴禁片在线观看| 久久91超碰青草在哪里看| 精品福利一二区| 女教师淫辱の教室蜜臀av软件| 亚洲午夜av| 国产精品一区二区久久国产| 天天摸夜夜添狠狠添婷婷| 国产精品国产三级国产aⅴ原创| 国产3p露脸普通话对白| 色综合久久久| 亚洲视频第一页| 国产主播在线观看| 精品综合久久久久久8888| 你懂的网址一区二区三区| 色女人在线视频| 7777精品久久久大香线蕉| 日韩精品电影一区二区| 亚洲福利电影| 粉嫩av四季av绯色av第一区| av在线电影观看| 欧美午夜精品伦理| 一级欧美一级日韩片| 欧美91大片| 成人中文字幕+乱码+中文字幕| 国产爆初菊在线观看免费视频网站 | 久久综合九色| 久久久一本精品99久久精品| av影视在线看| 精品国产成人在线影院| 欧美国产日韩综合| 国产一区二区三区香蕉| 午夜一区二区三视频在线观看| 69久成人做爰电影| 国产视频在线观看一区二区| 香蕉视频一区二区| www..com久久爱| 热99这里只有精品| 麻豆成人入口| 88xx成人精品| 污污视频在线观看网站| 精品动漫一区二区| av网站免费在线播放| 99精品国产在热久久婷婷| 国产精品区一区| 嗯啊主人调教在线播放视频| 亚洲第一页中文字幕| 国产成人无码精品亚洲| 久久午夜老司机| 熟妇人妻va精品中文字幕| 国产精品一国产精品| 国产精品久久久久久久久借妻| 你懂的在线视频| 在线国产电影不卡| 中文字幕无码日韩专区免费| 国产中文字幕精品| www.成年人视频| 九九免费精品视频在线观看| 日产日韩在线亚洲欧美| 二区在线视频| 欧美高清dvd| 久久久久无码国产精品| jizz一区二区| 成人午夜激情av| 婷婷亚洲五月| 国产精品一区免费观看| 欧美亚洲韩国| 久久精品国产精品亚洲| 亚洲免费成人网| 色综合婷婷久久| 亚洲色图日韩精品| 粉嫩av一区二区三区粉嫩| 久久久999免费视频| 欧美精品色图| 97se在线视频| 亚洲天堂av影院| 少妇精69xxtheporn| 精品国精品国产自在久不卡| 午夜精品福利一区二区三区av| 一级片视频免费看| 国产一区二区三区精品欧美日韩一区二区三区| 欧美交换配乱吟粗大25p| 日韩高清在线免费观看| 国产精品丝袜久久久久久不卡| 在线电影福利片| 亚洲视频电影图片偷拍一区| 国产欧美综合视频| 日韩欧美在线视频| 粉嫩av性色av蜜臀av网站| 91免费在线播放| 手机免费看av网站| 久久精品国产清高在天天线| 国产人妻互换一区二区| 亚洲97av| 99re资源| 欧美成人毛片| 国产91在线播放九色快色| 在线播放免费av| 在线丨暗呦小u女国产精品| www.黄色片| 精品视频一区二区不卡| 久草国产精品视频| 亚洲黄色性网站| 精品手机在线视频| 久久精品日产第一区二区三区高清版 | 成人看片网页| 97视频在线观看视频免费视频| 拍真实国产伦偷精品| 亚洲乱亚洲乱妇无码| 成人免费公开视频| 777色狠狠一区二区三区| 青青国产在线视频| 香蕉乱码成人久久天堂爱免费| 久久嫩草捆绑紧缚| 国产日韩av一区二区| 日本人dh亚洲人ⅹxx| 蜜桃在线一区二区三区| 日本成人在线免费视频| 亚洲尤物在线| 男人添女人下部高潮视频在观看| 亚洲女同一区| 手机成人av在线| 精品久久影视| 欧美精品亚洲精品| 特黄特色欧美大片| 国产免费一区二区| 国产欧美自拍一区| 动漫3d精品一区二区三区 | 欧美成人女星排名| 99re只有精品| 日韩亚洲电影在线| www久久久久久| 欧美va亚洲va香蕉在线| 精品国产无码AV| 日韩三级视频在线看| 国产精选久久久| 制服丝袜在线91| 国产精品一区二区黑人巨大| 91.com在线观看| av网站在线观看免费| 欧美精品少妇一区二区三区| 亚洲一区二区人妻| 在线不卡免费欧美| 99视频国产精品免费观看a| 91麻豆精品国产91久久久| 国产精品久久久久久免费免熟| 欧美老女人第四色| 国产精品久久免费| 日韩欧美一区二区三区在线| 国产黄a三级三级看三级| 日韩视频国产视频| 日韩一卡二卡在线| 亚洲欧美国产va在线影院| 久草在线青青草| 色偷偷88888欧美精品久久久| 免费人成在线观看播放视频| 欧美成人免费在线视频| segui88久久综合| 欧美怡春院一区二区三区| 成人日韩精品| 成人羞羞国产免费| youjizz欧美| 久久久久久久久久久一区| 日本一区二区高清不卡| 亚洲欧美日韩不卡| 亚洲夜间福利| 波多野结衣天堂| 国内外成人在线| 亚洲一区二区三区综合| 欧美国产精品一区| 免费在线黄色网| 欧美日韩午夜视频在线观看| 国产在线一级片| 日韩欧美视频一区| 久久精品色图| 久久综合久中文字幕青草| 丰满的护士2在线观看高清| 日韩美女免费观看| 成人污污www网站免费丝瓜| 粉嫩av一区二区三区免费观看| 国产精品一区高清| 日韩视频在线免费播放| 国产欧美精品| 992kp免费看片| 91麻豆国产福利在线观看| 三级全黄做爰视频| 欧美日韩美女在线| 国产视频一区二区三区四区五区| 日韩成人中文字幕| а天堂中文在线官网| 国产成人精品一区二区三区| 欧美专区一区| 先锋在线资源一区二区三区| 欧美成人亚洲| www.com操| 97久久精品人人做人人爽50路| 任你操精品视频| 日韩欧美中文免费| 国产黄a三级三级看三级| 在线精品国产欧美| 国产精品一二三产区| 91精品视频网站| 欧美视频免费| 国产成人精品视频免费看| 国产经典欧美精品| 欧美日韩国产黄色| 欧美性猛交xxxx乱大交3| www.综合色| 不卡毛片在线看| 国产精品久久久久久妇女| 久久这里精品国产99丫e6| 欧美黄色精品| 肉色超薄丝袜脚交| 国产精品国产三级国产aⅴ原创 | 日韩精品高清不卡| 51调教丨国产调教视频| 一级做a爱片久久| 国产毛片毛片毛片毛片| 中文字幕亚洲综合久久| 校园春色亚洲色图| 久久久久一区二区| 99pao成人国产永久免费视频| 又黄又爽又色的视频| 国产精品三级在线观看| 免费看污视频的网站| 精品伊人久久97| 国产高清不卡| 欧美精品v日韩精品v国产精品| 激情欧美日韩| 蜜臀av粉嫩av懂色av| 一区二区三区欧美亚洲| 国产女人18毛片18精品| 久久亚洲精品成人| 成人在线免费av| 一区不卡视频| 久久er99热精品一区二区| 老司机精品免费视频| 欧美美女一区二区| 色的视频在线免费看| 国产日韩欧美视频在线| 欧美国产一级| 五月天婷婷影视| 一二三区精品视频| 亚洲乱码在线观看| 久久久免费精品| 啪啪国产精品| 亚洲精品乱码久久久久久自慰| 久久久精品综合| 最近中文字幕在线视频| 久久精品国产v日韩v亚洲| 亚洲一区二区电影| 奇米影视亚洲色图| 久久影视一区二区| 欧美一级淫片免费视频黄| 中国china体内裑精亚洲片| 日本一区二区中文字幕| 超薄肉色丝袜足j调教99| 国产成人av自拍| 日本中文字幕第一页| 最新国产成人av网站网址麻豆| 日韩三区四区| 男女日批视频在线观看| 久久青草国产手机看片福利盒子| 天天天天天天天干| 欧美精品一区三区| 免费日韩一区二区三区| 人人干人人视频| 亚洲最新视频在线观看| 午夜影院免费视频| 国产精品视频地址| 欧美国产精品| 国产免费一区二区三区网站免费| 欧美色网一区二区| 免费看电影在线| 人偷久久久久久久偷女厕| 国产一区二区三区四区五区美女| 国产第一页在线播放| 伊人久久五月天| 伊人精品久久| 91国产精品视频在线观看| 一区二区三区蜜桃| 国产九色在线| 97碰碰视频| 日本女优在线视频一区二区 | 一本久久精品一区二区| 免费日本一区二区三区视频| 精品麻豆av| 国产一区二区三区在线看麻豆| 成人精品在线看| 九九久久久久99精品| 精品视频免费在线观看| 国产亚洲精品成人a| 欧美天堂亚洲电影院在线播放| 国产天堂在线播放视频| 亚洲欧洲国产日韩精品| 99久久精品免费|