精品欧美一区二区三区在线观看 _久久久久国色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中文字幕一区二区三区| 欧美大片欧美激情性色a∨久久| 中文字幕第三区| 色一区二区三区| 国产精品久久久久久久久免费樱桃| 亚洲aⅴ男人的天堂在线观看| 国产精品第56页| 成人免费a**址| 精品99一区二区| 99sesese| 忘忧草在线日韩www影院| 国产精品区一区二区三| 国产欧美综合精品一区二区| 中文字幕第315页| 亚洲福利电影| 日韩小视频在线| 朝桐光av一区二区三区| 日韩在线激情| 在线看国产日韩| 日本一区午夜艳熟免费| 2019中文字幕在线视频| 成人黄色一级视频| 91色p视频在线| 久久韩国免费视频| 国产一区二区三区精彩视频| 日本蜜桃在线观看| 久久久久久久久久久久久夜| 99国精产品一二二线| 中文字幕一二三四| 久久精品亚洲| 97av在线影院| 日本学生初尝黑人巨免费视频| 精品日本12videosex| 日韩黄在线观看| 欧洲成人午夜精品无码区久久| 91亚洲精品| 色欧美日韩亚洲| 日本十八禁视频无遮挡| 国产区美女在线| 亚洲免费在线观看| av电影一区二区三区| 国产粉嫩一区二区三区在线观看 | 精品国内产的精品视频在线观看| 男人插女人视频在线观看| 欧美精品hd| 国产精品理论片| 性欧美大战久久久久久久免费观看| 日韩精品视频在线观看一区二区三区| 粉嫩av亚洲一区二区图片| eeuss一区二区三区| h片在线免费看| 国产经典欧美精品| 亚洲自拍欧美色图| 99久久久久成人国产免费| 精品一区二区三区视频| 国产专区欧美专区| 国产精品-色哟哟| 国产麻豆成人精品| 99九九视频| 欧洲精品久久一区二区| 成人免费视频网站在线观看| 国产嫩草一区二区三区在线观看| 亚洲精品国产suv一区| 国产福利一区二区三区视频在线 | 97国产成人精品视频| 久久久久久久蜜桃| 亚洲日本成人| 欧美最猛性xxxxx免费| 国产寡妇亲子伦一区二区三区四区| 亚洲一区自拍| 国产精品91在线观看| 精品国产www| 激情久久久久久久久久久久久久久久| 亚洲www在线| 欧美亚洲精品在线观看| 91啪九色porn原创视频在线观看| 欧美激情视频一区二区三区| 超碰免费在线观看| 综合分类小说区另类春色亚洲小说欧美 | 亚洲午夜激情视频| 国产一区二区看久久| 国产精品一区二区三区免费| 天天综合在线视频| 国产欧美综合在线观看第十页| 亚洲国产欧洲综合997久久| av免费在线网站| 婷婷综合久久一区二区三区| 成人性做爰aaa片免费看不忠| 日韩午夜电影免费看| 精品欧美乱码久久久久久1区2区| 日本免费福利视频| 日韩在线视频精品| 午夜精品一区二区三区在线视 | 国产无遮挡又黄又爽又色| 国产精品女主播一区二区三区| 国产精品久久久久久久久久久久 | 亚洲国产欧美在线成人app | 国产精品久久久久久av福利软件| 91丨九色丨丰满| av成人免费在线观看| 亚洲v欧美v另类v综合v日韩v| 91在线中文| 在线免费亚洲电影| 极品白嫩少妇无套内谢| 国产乱码精品一区二区三区四区| 成人台湾亚洲精品一区二区| 亚洲丰满少妇videoshd| 午夜激情在线观看视频| eeuss鲁片一区二区三区| 亚洲人成绝费网站色www| 午夜69成人做爰视频| 天堂精品中文字幕在线| 超碰97国产在线| 1024国产在线| 色悠悠久久综合| 风韵丰满熟妇啪啪区老熟熟女| 欧美一级本道电影免费专区| 欧美国产激情18| 在线免费观看中文字幕| 91蜜桃视频在线| 成人黄色片免费| 日本国产一区| 亚洲一区av在线播放| 国产系列精品av| 国产一区二三区| 亚洲成人一区二区三区| 欧美男人天堂| 亚洲高清久久久久久| 欧美成人精品一区二区免费看片 | 亚洲国产精品无码久久| 中文字幕一区二区三区不卡在线| 777米奇影视第四色| 北条麻妃一区二区三区在线观看| 久久精品国产精品亚洲| 做爰无遮挡三级| 国产三级一区二区| aa免费在线观看| 日韩欧美影院| 午夜欧美大片免费观看| 乱色精品无码一区二区国产盗| 亚洲色图20p| 欧美视频亚洲图片| 婷婷六月综合| 91久久久久久久久久久| 在线观看完整版免费| 欧美视频中文字幕| 成人在线观看免费高清| 日本午夜精品视频在线观看 | 黄色免费看视频| 亚洲黄色毛片| 久久久久久久久久久久久久久久av| 狂野欧美激情性xxxx欧美| 精品99久久久久久| www.伊人久久| 欧美激情中文字幕| 性chinese极品按摩| 欧美激情另类| 91大片在线观看| 里番在线播放| 亚洲男人天天操| 中文字幕日韩三级| 亚洲视频在线一区二区| 91av免费观看| 999在线观看精品免费不卡网站| 精品免费日产一区一区三区免费| 精精国产xxxx视频在线野外| 亚洲女人天堂av| 亚洲天堂网在线观看视频| 亚洲色图在线播放| 无码国产69精品久久久久网站| 国产美女一区| 亚洲激情一区二区| 日韩在线视频一区二区三区| 久久久欧美精品| 国产小视频在线| 欧美日韩免费在线视频| 中文字幕在线有码| 99久久精品免费观看| 五月婷婷狠狠操| 欧美人成在线| 欧美精品一区二区三区在线四季| www.成人在线视频| 久久久久久高潮国产精品视| 日韩毛片在线一区二区毛片| 欧美日韩国产精品自在自线| 久久久久香蕉视频| 国产午夜精品一区二区三区视频 | 国产91色在线观看| 欧美日本三区| 日韩av一区二区三区在线| 范冰冰一级做a爰片久久毛片| 日韩在线观看免费av| 国产小视频一区| 欧美理论片在线| 国产成人一区二区三区影院在线 | 欧美精品一级片| 久久久久九九视频| 又黄又爽又色的视频| 久久精品主播| 91午夜在线观看| 日韩伦理视频| 久久66热这里只有精品| 午夜免费一级片| 暖暖成人免费视频| 欧美第一黄色网| caoporn国产精品免费视频| 精品国产伦一区二区三区观看方式| 国产成人无码专区| 香蕉加勒比综合久久| 99成人在线观看| 久久久99精品久久| 国产黑丝在线观看| 国产一本一道久久香蕉| 久久精品免费网站| 久久av最新网址| 日本国产在线播放| 欧美天堂亚洲电影院在线观看 | 日韩视频二区| 欧美xxxx吸乳| 四季av在线一区二区三区| 蜜桃导航-精品导航| 超碰精品在线| 成人免费看片网站| 国产精品国产三级在线观看| 国产精品国模在线| 最新日韩三级| 欧美中文在线字幕| 黄色在线免费观看网站| 韩剧1988免费观看全集| 综合久久2o19| 久久综合免费视频| 国内精品久久久久久野外| 中文字幕精品久久久久| 国产福利在线视频| 亚洲最新av网址| 黄色在线观看网| 亚洲欧洲一区二区三区久久| 五十路在线视频| 日韩大陆毛片av| 熟妇人妻一区二区三区四区| 欧美tk—视频vk| 黄色aaa大片| 精品国产欧美一区二区| 午夜精品在线播放| 精品va天堂亚洲国产| 黄色小视频免费在线观看| 精品精品国产高清a毛片牛牛 | 日韩中文字幕精品视频| av播放在线观看| 日韩性生活视频| 超碰免费公开在线| 色在人av网站天堂精品| 青青草原av在线| 久久久人成影片一区二区三区| sm在线观看| 91精品国产九九九久久久亚洲| 蜜桃麻豆影像在线观看| 日韩免费观看av| 青青热久免费精品视频在线18| 国产精品久久9| 四虎影视国产精品| 99精彩视频| 亚州av一区| 亚州欧美一区三区三区在线 | 欧美理论电影在线播放| 女人天堂av在线播放| 97超级碰碰人国产在线观看| 成人影院入口| 国产美女久久精品| 波多野结衣在线一区二区| 欧美精彩一区二区三区| 日本道不卡免费一区| 中文字幕一区二区三区精彩视频 | 一区二区三区视频网| 国内成+人亚洲+欧美+综合在线| 九色91porny| 91视频免费播放| 性生交大片免费全黄| 亚洲第一综合色| 欧美一级黄视频| 日韩免费一区二区三区在线播放| 色哟哟国产精品色哟哟| 国产一区二区三区在线免费观看 | 不卡在线一区二区| 好吊色视频988gao在线观看| 国产亚洲精品bv在线观看| 中文字幕天天干| 牛牛精品视频在线| 亚洲国产欧美一区| av午夜在线| 97国产suv精品一区二区62| 日本美女久久| 狠狠色综合一区二区| 999精品视频| 国产亚洲欧美在线视频| 激情丁香综合五月| 免费观看av网站| 亚洲午夜成aⅴ人片| 伊人网站在线观看| 亚洲精品98久久久久久中文字幕| 日本中文字幕在线2020| 91av在线免费观看视频| 国产精品高清一区二区| 欧美一区二区在线| 亚洲激情另类| 色黄视频免费看| 国产视频一区在线观看| 国产精品.www| 欧美一区二区三区四区视频| 欧美成熟毛茸茸| 韩日精品中文字幕| 天堂精品在线视频| 在线观看免费91| 久久精品二区三区| 黄色性视频网站| 一级做a爱片久久| 91亚洲精品国偷拍自产在线观看| 亚洲精品天天看| 懂色av一区| 97久久人人超碰caoprom欧美| 日韩av密桃| www.日本xxxx| 久久精品人人做人人综合 | 亚洲一区国产精品| 青青一区二区三区| 欧美视频第一区| 99久久久久久| 激情综合网五月婷婷| 欧美一级欧美一级在线播放| 午夜视频成人| 国产精品十八以下禁看| 青青草国产成人a∨下载安卓| 欧美日韩大尺度| 久久精品亚洲精品国产欧美kt∨| 日韩欧美不卡视频| 亚洲国产中文字幕在线观看 | 国产精品99久久久久久人| 亚州综合一区| av网站在线观看不卡| 91视频免费观看| 黄色片中文字幕| 亚洲色图狂野欧美| 精品亚洲美女网站| 日本一区二区三区四区高清视频| 鲁大师影院一区二区三区| 中文字幕丰满孑伦无码专区| 图片区小说区区亚洲影院| 午夜av免费观看| 欧洲日韩成人av| 国产调教一区二区三区| 孩娇小videos精品| 亚洲欧美在线观看| 精品久久无码中文字幕| 久久99久久久久久久噜噜| 91精品国产自产在线丝袜啪| 日本香蕉视频在线观看| 成人av电影在线网| 在线观看亚洲欧美| 国产香蕉一区二区三区在线视频 | 欧美日韩国产综合草草| 国产超级va在线视频| 99精品99久久久久久宅男| 国产欧美日韩一区二区三区在线| 少妇户外露出[11p]| 在线观看亚洲成人| 美女写真理伦片在线看| 国产精品三区www17con| 麻豆久久婷婷| 性生交大片免费全黄| 欧美成人精品1314www| 极品av在线| 亚洲自拍偷拍二区| 丁香婷婷综合色啪| 亚洲黄网在线观看| 久热精品视频在线免费观看| 国产厕拍一区| 嫩草av久久伊人妇女超级a| 亚洲欧洲日产国产综合网| 性欧美videos另类hd| 欧美一级视频一区二区| 欧美高清视频手机在在线| 日本久久久久久久| 欧美一区二区三区| 2022国产精品| 老司机一区二区三区| 久久久99999| 精品国产91乱码一区二区三区| 欧美成人影院| av久久久久久| 国产欧美精品一区二区三区四区 | 亚洲网址你懂得| 日韩视频一二区| www.色偷偷.com| 午夜影院久久久| 欧洲不卡视频| 日本一区二区三区www| 国产91丝袜在线播放| 亚洲熟女乱色一区二区三区久久久|