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

Memcache緩存系統原理

存儲 存儲軟件
在Web服務開發中,服務端緩存是服務實現中所常常采用的一種提高服務性能的方法。其通過記錄某部分計算結果來嘗試避免再次執行得到該結果所需要的復雜計算,從而提高了服務的運行效率。

在Web服務開發中,服務端緩存是服務實現中所常常采用的一種提高服務性能的方法。其通過記錄某部分計算結果來嘗試避免再次執行得到該結果所需要的復雜計算,從而提高了服務的運行效率。

除了能夠提高服務的運行效率之外,服務端緩存還常常用來提高服務的擴展性。因此一些大規模的Web應用,如Facebook,常常構建一個龐大的服務端緩存。而它們所最常使用的就是Memcached。

在本文中,我們就將對Memcached進行簡單地介紹。

[[249450]]

Memcached簡介

在介紹Memcached之前,讓我們首先通過一個示例了解什么是服務端緩存。

相信大家都玩過一些網絡聯機游戲吧。在我那個年代(03年左右),這些游戲常常添加了對戰功能,并提供了天梯來顯示具有***秀戰績的玩家以及當 前玩家在天梯系統中的排名。這是游戲開發商所常常采用的一種聚攏玩家人氣的手段。而希望在游戲中證明自己的玩家則會由此激發斗志,進而花費更多時間來在天 梯中取得更好的成績。

就天梯系統來說,其最主要的功能就是為玩家提供天梯排名的信息,而并不允許玩家對該系統中所記錄的數據作任何修改。這樣設定的結果就是,整個天 梯系統的讀操作居多,而寫操作很少。反過來,由于一個游戲中的玩家可能有上千萬甚至上億人,而且在線人數常常達到上萬人,因此對天梯的訪問也會是非常頻繁 的。這樣的話,即使每秒鐘只有10個人訪問天梯中的排名,對這上億個玩家的天梯排名進行讀取及排序也是一件非常消耗性能的事情。

一個自然而然的想法就是:在對天梯排名進行一次計算后,我們在服務端將該天梯排名緩存起來,并在其它玩家訪問的時候直接返回該緩存中所記錄的結 果。而在一定時間段之后,如一個小時,我們再對緩存中的數據進行更新。這樣我們就不再需要每個小時執行成千上萬次的天梯排名計算了。

而這就是服務端緩存所提供的最重要功能。其既可以提高單個請求的響應速度,又可以降低服務層及數據庫層的壓力。除此之外,多個服務實例都可以讀 取該服務端緩存所緩存的信息,因此我們也不再需要擔心這些數據在各個服務實例中都保存了一份進而需要彼此同步的問題,也即是提高了擴展性。

而Memcached就是一個使用了BSD許可的服務端緩存實現。但是與其它服務端緩存實現不同的是,其主要由兩部分組成:獨立運行的 Memcached服務實例,以及用于訪問這些服務實例的客戶端。因此相較于普通服務端緩存實現中各個緩存都運行在服務實例之上的情 況,Memcached服務實例則是在服務實例之外獨立運行的:

從上圖中可以看出,由于Memcached緩存實例是獨立于各個應用服務器實例運行的,因此應用服務實例可以訪問任意的緩存實例。而傳統的緩存則與 特定的應用實例綁定,因此每個應用實例將只能訪問特定的緩存。這種綁定一方面會導致整個應用所能夠訪問的緩存容量變得很小,另一方面也可能導致不同的緩存 實例中存在著冗余的數據,從而降低了緩存系統的整體效率。

在運行時,Memcached服務實例只需要消耗非常少的CPU資源,卻需要使用大量的內存。因此在決定如何組織您的服務端緩存結構之前,您首 先需要搞清當前服務中各個服務實例的負載情況。如果一個服務器的CPU使用率非常高,卻存在著非常多的空余內存,那么我們就完全可以在其上運行一個 Memcached實例。而如果當前服務中的所有服務實例都沒有過多的空余內存,那么我們就需要使用一系列獨立的服務實例來搭建服務端緩存。一個大型服務 常常擁有上百個Memcached實例。而在這上百個Memcached實例中所存儲的數據則不盡相同。由于這種數據的異構性,我們需要在訪問由 Memcached所記錄的信息之前決定在該服務端緩存系統中到底由哪個Memcached實例記錄了我們所想要訪問的數據:

Memcache緩存系統原理

 

如上圖所示,用戶需要通過一個Memcached客戶端來完成對緩存服務所記錄信息的訪問。該客戶端知道服務端緩存系統中所包含的所有 Memcached服務實例。在需要訪問具有特定鍵值的數據時,該客戶端內部會根據所需要讀取的數據的鍵值,如“foo”,以及當前Memcached緩 存服務的配置來計算相應的哈希值,以決定到底是哪個Memcached實例記錄了用戶所需要訪問的信息。在決定記錄了所需要信息的Memcached實例 之后,Memcached客戶端將從配置中讀取該Memcached服務實例所在地址,并向該Memcached實例發送數據訪問請求,以從該 Memcached實例中讀取具有鍵值“foo”的信息。在各個論壇的討論中,這被稱為是Memcached的兩階段哈希(Two-stage hash)。

而對數據的記錄也使用了類似的流程:假設用戶希望通過服務端緩存記錄數據“bar”,并為其指定鍵值“foo”。那么Memcached客戶端 將首先對用戶所賦予的鍵值“foo”及當前服務端緩存所記錄的可用服務實例個數執行哈希計算,并根據哈希計算結果來決定存儲該數據的Memcached服 務實例。接下來,客戶端就會向該實例發送請求,以在其中記錄具有鍵值“foo”的數據“bar”。

這樣做的好處則在于,每個Memcached服務實例都是獨立的,而彼此之間并沒有任何交互。在這種情況下,我們可以省略很多復雜的功能邏輯, 如各個節點之間的數據同步以及結點之間消息的廣播等等。這種輕量級的架構可以簡化很多操作。如在一個節點失效的時候,我們僅僅需要使用一個新的 Memcached節點替代老節點即可。而在對緩存進行擴容的時候,我們也只需要添加額外的服務并修改客戶端配置。

這些記錄在服務端緩存中的數據是全局可見的。也就是說,一旦在Memcached服務端緩存中成功添加了一條新的記錄,那么其它使用該緩存服務的應用實例將同樣可以訪問該記錄:

Memcache緩存系統原理

 

在Memcached中,每條記錄都由四部分組成:記錄的鍵,有效期,一系列可選的標記以及表示記錄內容的數據。由于記錄內容的數據中并不包含任何數據結構,因此我們在Memcached中所記錄的數據需要是經過序列化之后的表示。

內存管理

在使用緩存時,我們不得不考慮的一個問題就是如何對這些緩存數據的生存期進行管理。這其中包括如何使一個記錄在緩存中的數據過期,如何在緩存空間不夠時執行數據的替換等。因此在本節中,我們將對Memcached的內存管理機制進行介紹。

首先我們來看一看Memcached的內存管理模型。通常情況下,一個內存管理算法所最需要考慮的問題就是內存的碎片化 (Fragmentation):在長時間地分配及回收之后,被系統所使用的內存將趨向于散落在不連續的空間中。這使得系統很難找到連續內存空間,一方面 增大了內存分配失敗的概率,另一方面也使得內存分配工作變得更為復雜,降低了運行效率。

為了解決這個問題,Memcached使用了一種叫Slab的結構。在該分配算法中,內存將按照1MB的大小劃分為頁,而該頁內存則會繼續被分割為一系列具有相同大小的內存塊:

Memcache緩存系統原理

 

因此Memcached并不是直接根據需要記錄的數據的大小來直接分配相應大小的內存。在一條新的記錄到來時,Memcached會首先檢查該記錄 的大小,并根據記錄的大小選擇記錄所需要存儲到的Slab類型。接下來,Memcached就會檢查其內部所包含的該類型Slab。如果這些Slab中有 空余的塊,那么Memcached就會使用該塊記錄該條信息。如果已經沒有Slab擁有空閑的具有合適大小的塊,那么Memcached就會創建一個新的 頁,并將該頁按照目標Slab的類型進行劃分。

一個需要考慮的特殊情況就是對記錄的更新。在對一個記錄進行更新的時候,記錄的大小可能會發生變化。在這種情況下,其所對應的Slab類型也可能會發生變化。因此在更新時,記錄在內存中的位置可能會發生變化。只不過從用戶的角度來說,這并不可見。

Memcached使用這種方式來分配內存的好處則在于,其可以降低由于記錄的多次讀寫而導致的碎片化。反過來,由于Memcached是根據 記錄的大小選擇需要插入到的塊類型,因此為每個記錄所分配的塊的大小常常大于該記錄所實際需要的內存大小,進而造成了內存的浪費。當然,您可以通過 Memcached的配置文件來指定各個塊的大小,從而盡可能地減少內存的浪費。

但是需要注意的是,由于默認情況下Memcached中每頁的大小為1MB,因此其單個塊***為1MB。除此之外,Memcached還限制每個數據所對應的鍵的長度不能超過250個字節。

一般來說,Slab中各個塊的大小以及塊大小的遞增倍數可能會對記錄所載位置的選擇及內存利用率有很大的影響。例如在當前的實現下,各個 Slab中塊的大小默認情況下是按照1.25倍的方式來遞增的。也就是說,在一個Memcached實例中,某種類型Slab所提供的塊的大小是80K, 而提供稍大一點空間的Slab類型所提供的塊的大小就將是100K。如果現在我們需要插入一條81K的記錄,那么Memcached就會選擇具有100K 塊大小的Slab,并嘗試找到一個具有空閑塊的Slab以存入該記錄。

同時您也需要注意到,我們使用的是100K塊大小的Slab來記錄具有81K大小的數據,因此記錄該數據所導致的內存浪費是19K,即19%的 浪費。而在需要存儲的各條記錄的大小平均分布的情況下,這種內存浪費的幅度也在9%左右。該幅度實際上取決于我們剛剛提到的各個Slab中塊大小的遞增倍 數。在Memcached的初始實現中,各個Slab塊的遞增倍數在默認情況下是2,而不是現在的1.25,從而導致了平均25%左右的內存浪費。而在今 后的各個版本中,該遞增倍數可能還會發生變化,以優化Memcached的實際性能。

如果您一旦知道了您所需要緩存的數據的特征,如通常情況下數據的大小以及各個數據的差異幅度,那么您就可以根據這些數據的特征來設置上面所提到 的各個參數。如果數據在通常情況下都比較小,那么我們就需要將最小塊的大小調整得小一些。如果數據的大小變動不是很大,那么我們可以將塊大小的遞增倍數設 置得小一些,從而使得各個塊的大小盡量地貼近需要存儲的數據,以提高內存的利用率。

還有一個值得注意的事情就是,由于Memcached在計算到底哪個服務實例記錄了具有特定鍵的數據時并不會考慮用來組成緩存系統中各個服務器 的差異性。如果每個服務器上只安裝了一個Memcached實例,那么各個Memcached實例所擁有的可用內存將存在著數倍的差異。但是由于各個實例 被選中的概率基本相同,因此具有較大內存的Memcached實例將無法被充分利用。我們可以通過在具有較大內存的服務器上部署多個Memcached實 例來解決這個問題:

Memcache緩存系統原理

 

例如上圖所展示的緩存系統是由兩個服務器組成。這兩個服務器中的內存大小并不相同。***個服務器的內存大小為32G,而第二個服務器的內存大小僅僅 有8G。為了能夠充分利用這兩個服務器的內存,我們在具有32G內存的服務器上部署了4個Memcached實例,而在只有8G內存的服務器上部署了1個 Memcached實例。在這種情況下,32G內存服務器上的4個Memcached實例將總共得到4倍于8G服務器所得到的負載,從而充分地利用了 32G內存服務器上的內存。

當然,由于緩存系統擁有有限的資源,因此其會在某一時刻被服務所產生的數據填滿。如果此時緩存系統再次接收到一個緩存數據的請求,那么它就會根 據LRU(Least recently used)算法以及數據的過期時間來決定需要從緩存系統中移除的數據。而Memcached所使用的過期算法比較特殊,又被稱為延遲過期(Lazy expiration):當用戶從Memcached實例中讀取數據的時候,其將首先通過配置中所設置的過期時間來決定該數據是否過期。如果是,那么在下 一次寫入數據卻沒有足夠空間的時候,Memcached會選擇該過期數據所在的內存塊作為新數據的目標地址。如果在寫入時沒有相應的記錄被標記為過期,那 么LRU算法才被執行,從而找到最久沒有被使用的需要被替換的數據。

這里的LRU是在Slab范圍內的,而不是全局的。假設Memcached緩存系統中的最常用的數據都存儲在100K的塊中,而該系統中還存在 著另外一種類型的Slab,其塊大小是300K,但是存在于其中的數據并不常用。當需要插入一條99K的數據而Memcached已經沒有足夠的內存再次 分配一個Slab實例的時候,其并不會釋放具有300K塊大小的Slab,而是在100K塊大小的各個Slab中找到需要釋放的塊,并將新數據添加到該塊 中。

高可用性

在企業級應用中,我們常常強調一個系統需要擁有高可用性和高可靠性。而對于一個組成而言,其需要能夠穩定地運行,并在出現異常的時候盡量使得異 常的影響限制在某個特定的范圍內,而不會導致整個系統不能正常工作。而且在出現異常之后,該組成需要能較為容易地恢復到正常的工作狀態。

那么Memcached需要什么樣的高可用性呢?在講解這個問題之前,我們先來看看在一個大型服務中Memcached所組成的服務端緩存是什么樣的:

Memcache緩存系統原理

 

從上圖中可以看到,在一個大型服務中,由Memcached所組成的服務端緩存實際上是由非常多的Memcached實例組成的。在前面我們已經 介紹過,Memcached實例實際上是完全獨立的,不存在Memcached實例之間的相互交互。因此在其中一個發生了故障的時候,其它的各個 Memcached服務實例并不會受到影響。如果一個擁有了16個Memcached實例的服務端緩存系統中的一個Memcached實例發生了故障,那 么整個系統將還有93.75%的緩存容量可以繼續工作。雖然緩存容量的減少會略微增加其后的各個服務實例的壓力,但是一個應用所經歷的負載波動常常比這個 大得多,因此該服務應該還是能夠正常工作的。

而這也恰恰表明了Memcached所具有的獨立性的正確性。由于Memcached本身致力于創建一個高效而且簡單,卻具有較強擴展性的緩存 組件,因此其并沒有強調數據的安全性。一旦其中的一個Memcached實例發生了故障,那么我們還可以從數據庫及服務端再次計算得到該數據,并將其記錄 在其它可用的Memcached實例上。

我想您讀到這里一定會想:“不,還有一個問題,那就是由于Memcached實例的個數變化會導致哈希計算的結果發生變化,從而導致所有對數據 的請求會導向到不正確的Memcached實例,使得由Memcached實例集群所提供的緩存服務全部失效,從而導致數據庫的壓力驟增。”

是的,這也是我曾經有所顧慮的地方。而且這不僅僅在服務端緩存失效的時候存在。只要服務端緩存中Memcached實例的數量發生了變化,那么該問題就會發生。

Memcached所使用的解決方法就是Consistent Hashing。在該算法的幫助下,Memcached實例數量的變化將只可能導致其中的一小部分鍵的哈希值發生改變。那該算法到底是怎么運行的呢?

首先請考慮一個圓,在該圓上分布了多個點,以表示整數0到1023。這些整數平均分布在整個圓上:

Memcache緩存系統原理

 

而在上圖中,我們則突出地顯示了6個藍點。這六個藍點基本上將該圓進行了六等分。而它們所對應的就是在當前Memcached緩存系統中所包含的三個 Memcached實例m1,m2以及m3。好,接下來我們則對當前需要存儲的數據執行哈希計算,并找到該哈希結果900在該圓上所對應的點:

Memcache緩存系統原理

 

可以看到,該點在順時針距離上離表示0的那個藍點最近,因此這個具有哈希值900的數據將記錄在Memcached實例m1中。

如果其中的一個Memcached實例失效了,那么需要由該實例所記錄的數據將暫時失效,而其它實例所記錄的數據仍然還在:

Memcache緩存系統原理

 

從上圖中可以看到,在Memcached實例m1失效的情況下,值為900的數據將失效,而其它的值為112和750的數據將仍然記錄在 Memcached實例m2及m3上。也就是說,一個節點的失效現在將只會導致一部分數據不再在緩存系統中存在,而并沒有導致其它實例上所記錄的數據的目 標實例發生變化。

但是我們還不得不考慮另一個問題,那就是在一個服務的服務端緩存僅僅由一個或幾個Memcached實例組成的情況。在這種情況下,其中一個 Memcached實例失效是較為致命的,因為數據庫以及服務器實例將接收到大量的需要進行復雜計算的請求,并將最終導致服務器實例和數據庫過載。因此在 設計服務端緩存時,我們常常采取超出需求容量的方法來定義這些緩存。例如在服務實際需要5個Memcached結點時我們設計一個包含6個節點的服務端緩 存系統,以增加整個系統的容錯能力。

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

2019-04-23 08:42:42

EhcacheMemcacheRedis

2018-07-19 09:43:41

MemcacheRedis緩存

2017-05-17 08:51:39

WebView分析應用

2019-01-03 13:09:58

瀏覽器緩存原理

2021-10-12 08:00:00

存儲邊緣緩存邊緣服務器

2011-03-25 15:01:26

Cacti監控memcache

2011-03-29 15:35:14

cactimemcache

2020-02-19 19:18:02

緩存查詢速度淘汰算法

2025-02-04 10:58:16

2010-01-15 10:32:24

LinuxMemcache

2019-06-18 15:57:25

HTTP緩存機制

2009-11-09 08:53:21

ASP.NET緩存

2018-11-30 09:00:19

html5cssjavascript

2022-10-08 00:04:00

緩存架構限流

2020-11-09 15:49:38

PHPMemcache網絡安全

2021-09-04 07:29:57

Android

2021-09-01 06:48:16

AndroidGlide緩存

2011-08-05 15:51:44

MySQL數據庫緩存

2018-11-30 09:03:55

HTTP緩存Web

2018-06-24 09:12:33

redismemcache源碼
點贊
收藏

51CTO技術棧公眾號

久久黄色影视| 美日韩免费视频| 日本在线播放一区| 一区视频免费观看| 国产视频网站在线| 91欧美极品| 国产精品视频免费看| 欧美精品videos性欧美| 国内自拍视频网| 日韩在线视频第一页| 久久久久蜜桃| 日本韩国一区二区三区视频| 97久久夜色精品国产九色| 女教师淫辱の教室蜜臀av软件| xxxxx性欧美特大| 成人av在线资源网站| 欧美成人网在线| 狠狠干狠狠操视频| 成人午夜在线观看视频| 久久精品三级| 亚洲男人天堂久| 免费观看日韩毛片| 三级黄视频在线观看| 影音先锋国产精品| 日韩精品一区二区三区视频| 日本道在线视频| 国产福利小视频| 亚洲在线久久| 日韩欧美中文一区二区| 天堂а√在线中文在线| www.热久久| 国产精品国码视频| 精品美女在线观看| 99在线免费视频观看| 性一交一乱一色一视频麻豆| 国产精品豆花视频| 日韩有码在线播放| 在线免费看v片| av在线播放国产| 国产精品1024| 久久久久久网址| 中日韩一级黄色片| 国产亚洲精aa在线看| 樱桃视频在线观看一区| 91亚洲精品在线观看| 欧美国产日韩在线观看成人| 欧美日韩激情在线一区二区三区| 欧美三级午夜理伦三级中视频| 亚洲永久一区二区三区在线| 99在线观看免费| 蜜臀久久99精品久久久画质超高清 | 欧美日韩成人一区二区| 一本久久a久久精品vr综合| 六十路在线观看| 老色鬼精品视频在线观看播放| 久久久精品视频成人| 精品无码人妻少妇久久久久久| 亚洲校园激情春色| 天天影视涩香欲综合网| 五月天国产一区| 亚洲狼人综合网| 国产成人小视频| 91成人免费观看| 国产av无码专区亚洲av| 国产一区二区三区美女| 97视频com| 成人三级视频在线观看| 99国产精品免费视频观看| 欧美精品一区二区三区在线| 亚洲黄色小视频在线观看| 丁香花在线观看完整版电影| 久久女同性恋中文字幕| 91在线精品播放| 国产草草影院ccyycom| 国产69精品一区二区亚洲孕妇| 国产成人高清激情视频在线观看 | 伊人色综合久久天天| 奇米777四色影视在线看| 欧美家庭影院| 国产精品福利影院| 九九久久99| 亚洲第一成人av| aaa欧美日韩| 91最新在线免费观看| 国产suv精品一区二区33| 欧美日韩一区二区三区四区在线观看| 在线观看免费高清视频97| 亚洲无人区码一码二码三码| 国产电影一区| 亚洲国产精品成人一区二区| 午夜剧场高清版免费观看 | 人妻夜夜添夜夜无码av| a天堂在线视频| 成人免费高清视频在线观看| 国产精品亚洲激情| 亚洲免费黄色网址| 激情av一区| 国产成人精品久久| 日韩中文字幕1| 中文字幕亚洲综合久久| 日本黄色免费观看| 中文字幕亚洲在线观看| 色棕色天天综合网| 日韩一区二区三区视频在线| 精品国产一区在线| 伊人久久亚洲| 亚洲人成网在线播放| 奇米亚洲午夜久久精品| 国产小视频国产精品| 漂亮人妻被黑人久久精品| 狠狠综合久久av一区二区蜜桃| 亚洲国产99精品国自产| av免费播放网站| 精品在线播放| 色综合久久悠悠| 蜜臀久久99精品久久久久久| 色哟哟精品丝袜一区二区| 亚洲精品一区二区三区蜜桃下载 | 六月丁香激情网| 欧美14一18处毛片| 欧美日韩一区二区在线观看| 在线天堂www在线国语对白| 手机在线电影一区| 最近中文字幕mv在线一区二区三区四区 | 成人黄色毛片| 欧美日韩电影在线播放| 欧美性xxxx图片| 国产日韩三级| 精品国产免费视频| 91无套直看片红桃在线观看| 日韩精品dvd| 蜜臀久久99精品久久久久久宅男| www.久久精品视频| 三级欧美韩日大片在线看| 欧美自拍视频在线观看| 少妇久久久久久久| 99在线精品一区二区三区| 日本高清视频免费在线观看| 精品久久国产一区| 亚洲精品电影网| 国产美女免费网站| 国产大片一区| 国产精品一区二区在线| 国产福利第一视频在线播放| 色综合久久久网| 国产精品自拍视频在线| 亚洲一区二区三区中文字幕在线观看 | 桃花色综合影院| 国产农村妇女毛片精品久久麻豆| 亚洲日本精品| 国产成人毛片| 在线观看成人黄色| 91丨porny丨在线中文 | 亚洲美女啪啪| 热re91久久精品国99热蜜臀| 亚州视频一区二区三区| 国产精品国产自产拍高清av| 男女视频一区二区三区| 一区二区三区四区精品视频| 欧美日韩爱爱视频| 亚洲精品国产精品国| 亚洲一区二区三区自拍| 在线视频日韩一区 | 日韩精品一区二区三区电影| 警花av一区二区三区| 欧美激情2020午夜免费观看| 国产91久久久| 成人欧美一区二区三区白人 | 日本色综合中文字幕| 亚洲精品一卡二卡三卡四卡| 伦理在线一区| 亚洲精品国产精品久久清纯直播| 国产专区第一页| 国产欧美日韩激情| 亚洲黄色片免费看| 在线播放亚洲| 日本一区免费看| 激情网站在线| 日韩成人小视频| 欧美日韩三级在线观看| 老妇喷水一区二区三区| 日韩中文不卡| 欧美天堂一区| 亚洲午夜激情免费视频| 亚洲一区 中文字幕| 97精品久久久午夜一区二区三区 | 91影视免费在线观看| 538在线观看| 欧美一卡2卡三卡4卡5免费| 99精品全国免费观看| 国内精品免费在线观看| 艳色歌舞团一区二区三区| 亚洲一区二区三区免费| 国产极品精品在线观看| 18videosex性欧美麻豆| 91精品国产综合久久婷婷香蕉 | 亚洲综合五月天婷婷丁香| 亚洲制服丝袜在线| 亚洲一区二区三区三州| 93在线视频精品免费观看| 国产精品v欧美精品v日韩精品| a级毛片免费观看在线| 日韩成人在线视频观看| 国产精品国产精品国产专区| 中文字幕免费一区| 久久久精品麻豆| 欧美午夜一区二区福利视频| 日韩欧美亚洲v片| 久久精品66| 亚洲在线www| 香蕉成人影院| 中文字幕日韩有码| 无码精品黑人一区二区三区| 欧美剧情片在线观看| 91传媒免费观看| 久久影院午夜片一区| wwwxxx色| 午夜亚洲福利| 国产精品免费一区二区三区观看| 青草视频在线免费直播| 中文字幕亚洲第一| 深夜福利在线视频| 精品久久99ma| 国产农村老头老太视频| 亚洲另类在线视频| 亚洲精品第二页| 国产一区二区三区观看| 91色国产在线| 日本中文一区二区三区| 欧美a在线视频| 亚洲免费大片| 国产高清av在线播放| 欧美日韩99| 天天想你在线观看完整版电影免费| 日韩成人a**站| 日本高清视频一区二区三区| 美女一区2区| 精品久久久久久综合日本| 亚洲国产欧美日本视频| 中文在线不卡视频| 黄色软件在线观看| 9191成人精品久久| 真实的国产乱xxxx在线91| 亚洲欧美经典视频| av最新在线观看| 国产精品电影一区二区| 五月婷婷综合激情网| 国产精品久久一级| 熟女av一区二区| 一区二区三区自拍| 国产亚洲欧美精品久久久www| 91亚洲永久精品| 51调教丨国产调教视频| 99re8在线精品视频免费播放| 国产熟女高潮一区二区三区| 99久久99久久精品国产片果冻| 久久久久国产免费| 国产成人av一区二区三区在线观看| 激情小说欧美色图| 日本美女一区二区| 一本色道久久亚洲综合精品蜜桃| 日韩成人dvd| 亚洲激情在线看| 国产精品中文有码| 激情视频综合网| 日韩国产在线一| 国产三级生活片| 日韩av中文字幕一区二区| 91极品尤物在线播放国产| 狠狠狠色丁香婷婷综合激情 | 亚洲va欧美va人人爽成人影院| 国产91精品久久久久| 大地资源网3页在线观看| 欧美成人激情视频| 成入视频在线观看| 久久综合免费视频| 成人av毛片| 久久精品视频va| 男人添女人下部高潮视频在线观看 | 成人三级在线| 香蕉久久夜色精品国产使用方法| 日产精品久久久一区二区| 国产韩国精品一区二区三区| 久久精品xxx| 日韩国产精品久久久久久亚洲| av中文字幕网址| 福利一区在线观看| 国产又粗又猛又爽又黄av| 亚洲综合偷拍欧美一区色| 麻豆成人免费视频| 欧美一区二区三区的| 午夜在线视频免费| 久久久久北条麻妃免费看| www.youjizz.com在线| 国产精品视频成人| 8x8ⅹ拨牐拨牐拨牐在线观看| 日韩免费不卡av| 伊人久久综合一区二区| 91久久久精品| 神马久久影院| 艳母动漫在线观看| 先锋资源久久| 日日摸日日碰夜夜爽av| 激情五月婷婷综合网| 中文字幕在线免费看线人| 国产精品家庭影院| 天天综合天天干| 欧美大片一区二区三区| 懂色一区二区三区| 97在线观看视频国产| 在线播放成人| 91久久久在线| 国产伦精品一区二区三区视频| 黄黄视频在线观看| 免费亚洲电影在线| 国产精品边吃奶边做爽| 亚洲欧美另类久久久精品2019 | 91精品国模一区二区三区| 黄色在线视频观看网站| 91精品国产电影| 中文在线8资源库| 97伦理在线四区| 99久久99热这里只有精品| 50路60路老熟妇啪啪| 日韩高清不卡一区| 一区二区三区少妇| 性做久久久久久免费观看欧美| 日韩乱码一区二区| 在线观看成人免费视频| 国产精品自产拍| 中文字幕精品—区二区| 日韩性xxx| 91亚洲精品一区二区| 99精品电影| 艹b视频在线观看| 中文字幕精品在线不卡| 日韩欧美在线观看免费| 日韩av在线看| 激情国产在线| 国产一区二区久久久| 国产精品密蕾丝视频下载| av免费观看国产| 成人免费精品视频| 黄网站免费在线| 欧美三级日韩三级| 高清av在线| 国产精品毛片a∨一区二区三区|国| 国产精品视频一区二区三区四蜜臂| 国产肥臀一区二区福利视频| 91视频com| 麻豆精品国产免费| 91精品国产91综合久久蜜臀| 老司机在线永久免费观看| 成人97在线观看视频| 97精品资源在线观看| 中文字幕在线亚洲三区| 国产精品资源| 中文字幕资源在线观看| 成人免费在线视频观看| 国产xxxxxx| 国内精品小视频在线观看| 国产精品4hu.www| 欧美爱爱视频网站| 亚洲一区网站| 国产男女无遮挡猛进猛出| 亚洲乱码国产乱码精品精可以看| 精品国产亚洲一区二区麻豆| 欧美夫妻性视频| 天天久久夜夜| 亚洲精品视频导航| 亚洲少妇30p| 中文字幕精品无| 中文字幕亚洲欧美| 精品国产鲁一鲁****| 国产美女在线一区| 久久精品视频一区二区| 国产成人无码aa精品一区| 欧美精品一区二区三区视频| 热色播在线视频| 国产日韩亚洲精品| 久久国产欧美| 日韩欧美国产成人精品免费| 在线欧美一区二区| 精品美女在线观看视频在线观看| 999视频在线观看| 国产精品一区二区99| 在线观看国产中文字幕| 亚洲综合一区二区三区| 加勒比一区二区三区在线| 成人网中文字幕| 日韩欧美精品| aaa黄色大片| 欧美中文字幕一区二区三区亚洲| 大地资源网3页在线观看| 久久综合婷婷综合| 久久99久久99小草精品免视看| 极品尤物一区二区| 精品美女在线播放| 全球最大av网站久久| 国产96在线 | 亚洲|