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

資深架構師分享:大型網站多級緩存的分層架構

存儲 存儲軟件
這種說法帶有片面性,甚至是一知半解,但是作為專業人士的我們,需要對緩存有更深、更廣的了解。

 這種說法帶有片面性,甚至是一知半解,但是作為專業人士的我們,需要對緩存有更深、更廣的了解。

[[279660]]

緩存技術存在于應用場景的方方面面。從瀏覽器請求,到反向代理服務器,從進程內緩存到分布式緩存。其中緩存策略,算法也是層出不窮,今天就帶大家走進緩存。

緩存對于每個開發者來說是相當熟悉了,為了提高程序的性能我們會去加緩存,但是在什么地方加緩存,如何加緩存呢?

假設一個網站,需要提高性能,緩存可以放在瀏覽器,可以放在反向代理服務器,還可以放在應用程序進程內,同時可以放在分布式緩存系統中。

 

資深架構師分享:大型網站多級緩存的分層架構

 

從用戶請求數據到數據返回,數據經過了瀏覽器,CDN,代理服務器,應用服務器,以及數據庫各個環節。每個環節都可以運用緩存技術。

從瀏覽器/客戶端開始請求數據,通過 HTTP 配合 CDN 獲取數據的變更情況,到達代理服務器(Nginx)可以通過反向代理獲取靜態資源。

再往下來到應用服務器可以通過進程內(堆內)緩存,分布式緩存等遞進的方式獲取數據。如果以上所有緩存都沒有命中數據,才會回源到數據庫。

緩存的請求順序是:用戶請求 → HTTP 緩存 → CDN 緩存 → 代理服務器緩存 → 進程內緩存 → 分布式緩存 → 數據庫。

看來在技術的架構每個環節都可以加入緩存,看看每個環節是如何應用緩存技術的。

1. HTTP緩存

當用戶通過瀏覽器請求服務器的時候,會發起 HTTP 請求,如果對每次 HTTP 請求進行緩存,那么可以減少應用服務器的壓力。

當第一次請求的時候,瀏覽器本地緩存庫沒有緩存數據,會從服務器取數據,并且放到瀏覽器的緩存庫中,下次再進行請求的時候會根據緩存的策略來讀取本地或者服務的信息。

 

資深架構師分享:大型網站多級緩存的分層架構

 

一般信息的傳遞通過 HTTP 請求頭 Header 來傳遞。目前比較常見的緩存方式有兩種,分別是:

  • 強制緩存
  • 對比緩存

1.1. 強制緩存

當瀏覽器本地緩存庫保存了緩存信息,在緩存數據未失效的情況下,可以直接使用緩存數據。否則就需要重新獲取數據。

這種緩存機制看上去比較直接,那么如何判斷緩存數據是否失效呢?這里需要關注 HTTP Header 中的兩個字段 Expires 和 Cache-Control。

Expires 為服務端返回的過期時間,客戶端第一次請求服務器,服務器會返回資源的過期時間。如果客戶端再次請求服務器,會把請求時間與過期時間做比較。

如果請求時間小于過期時間,那么說明緩存沒有過期,則可以直接使用本地緩存庫的信息。

反之,說明數據已經過期,必須從服務器重新獲取信息,獲取完畢又會更新最新的過期時間。

這種方式在 HTTP 1.0 用的比較多,到了 HTTP 1.1 會使用 Cache-Control 替代。

Cache-Control 中有個 max-age 屬性,單位是秒,用來表示緩存內容在客戶端的過期時間。

例如:max-age 是 60 秒,當前緩存沒有數據,客戶端第一次請求完后,將數據放入本地緩存。

那么在 60 秒以內客戶端再發送請求,都不會請求應用服務器,而是從本地緩存中直接返回數據。如果兩次請求相隔時間超過了 60 秒,那么就需要通過服務器獲取數據。

1.2. 對比緩存

需要對比前后兩次的緩存標志來判斷是否使用緩存。瀏覽器第一次請求時,服務器會將緩存標識與數據一起返回,瀏覽器將二者備份至本地緩存庫中。瀏覽器再次請求時,將備份的緩存標識發送給服務器。

服務器根據緩存標識進行判斷,如果判斷數據沒有發生變化,把判斷成功的 304 狀態碼發給瀏覽器。

這時瀏覽器就可以使用緩存的數據來。服務器返回的就只是 Header,不包含 Body。

下面介紹兩種標識規則:

1.2.1. Last-Modified/If-Modified-Since 規則

在客戶端第一次請求的時候,服務器會返回資源最后的修改時間,記作 Last-Modified。客戶端將這個字段連同資源緩存起來。

Last-Modified 被保存以后,在下次請求時會以 Last-Modified-Since 字段被發送。

當客戶端再次請求服務器時,會把 Last-Modified 連同請求的資源一起發給服務器,這時 Last-Modified 會被命名為 If-Modified-Since,存放的內容都是一樣的。

服務器收到請求,會把 If-Modified-Since 字段與服務器上保存的 Last-Modified 字段作比較:

  • 若服務器上的 Last-Modified 最后修改時間大于請求的 If-Modified-Since,說明資源被改動過,就會把資源(包括 Header+Body)重新返回給瀏覽器,同時返回狀態碼 200。
  • 若資源的最后修改時間小于或等于 If-Modified-Since,說明資源沒有改動過,只會返回 Header,并且返回狀態碼 304。瀏覽器接受到這個消息就可以使用本地緩存庫的數據。

注意:Last-Modified 和 If-Modified-Since 指的是同一個值,只是在客戶端和服務器端的叫法不同。

1.2.2. ETag / If-None-Match 規則

客戶端第一次請求的時候,服務器會給每個資源生成一個 ETag 標記。這個 ETag 是根據每個資源生成的唯一 Hash 串,資源如何發生變化 ETag 隨之更改,之后將這個 ETag 返回給客戶端,客戶端把請求的資源和 ETag 都緩存到本地。

ETag 被保存以后,在下次請求時會當作 If-None-Match 字段被發送出去。

在瀏覽器第二次請求服務器相同資源時,會把資源對應的 ETag 一并發送給服務器。在請求時 ETag 轉化成 If-None-Match,但其內容不變。

服務器收到請求后,會把 If-None-Match 與服務器上資源的 ETag 進行比較:

  • 如果不一致,說明資源被改動過,則返回資源(Header+Body),返回狀態碼 200。
  • 如果一致,說明資源沒有被改過,則返回 Header,返回狀態碼 304。瀏覽器接受到這個消息就可以使用本地緩存庫的數據。

注意:ETag 和 If-None-Match 指的是同一個值,只是在客戶端和服務器端的叫法不同。

2. CDN 緩存

HTTP 緩存主要是對靜態數據進行緩存,把從服務器拿到的數據緩存到客戶端/瀏覽器。

如果在客戶端和服務器之間再加上一層 CDN,可以讓 CDN 為應用服務器提供緩存,如果在 CDN 上緩存,就不用再請求應用服務器了。并且 HTTP 緩存提到的兩種策略同樣可以在 CDN 服務器執行。

CDN 的全稱是 Content Delivery Network,即內容分發網絡。

讓我們來看看它是如何工作的吧:

  • 客戶端發送 URL 給 DNS 服務器。
  • DNS 通過域名解析,把請求指向 CDN 網絡中的 DNS 負載均衡器。
  • DNS 負載均衡器將最近 CDN 節點的 IP 告訴 DNS,DNS 告之客戶端最新 CDN 節點的 IP。
  • 客戶端請求最近的 CDN 節點。
  • CDN 節點從應用服務器獲取資源返回給客戶端,同時將靜態信息緩存。注意:客戶端下次互動的對象就是 CDN 緩存了,CDN 可以和應用服務器同步緩存信息。

CDN 接受客戶端的請求,它就是離客戶端最近的服務器,它后面會鏈接多臺服務器,起到了緩存和負載均衡的作用。

3. 負載均衡緩存

說完客戶端(HTTP)緩存和 CDN 緩存,我們離應用服務越來越近了,在到達應用服務之前,請求還要經過負載均衡器。

雖說它的主要工作是對應用服務器進行負載均衡,但是它也可以作緩存。可以把一些修改頻率不高的數據緩存在這里,例如:用戶信息,配置信息。通過服務定期刷新這個緩存就行了。

 

資深架構師分享:大型網站多級緩存的分層架構

 

以 Nginx 為例,我們看看它是如何工作的:

  • 用戶請求在達到應用服務器之前,會先訪問 Nginx 負載均衡器,如果發現有緩存信息,直接返回給用戶。
  • 如果沒有發現緩存信息,Nginx 回源到應用服務器獲取信息。
  • 另外,有一個緩存更新服務,定期把應用服務器中相對穩定的信息更新到 Nginx 本地緩存中。

4. 進程內緩存

通過了客戶端,CDN,負載均衡器,我們終于來到了應用服務器。應用服務器上部署著一個個應用,這些應用以進程的方式運行著,那么在進程中的緩存是怎樣的呢?

進程內緩存又叫托管堆緩存,以APC為例,同時會受到托管堆回收算法的影響。

由于其運行在內存中,對數據的響應速度很快,通常我們會把熱點數據放在這里。

在進程內緩存沒有命中的時候,我們會去搜索進程外的緩存或者分布式緩存。這種緩存的好處是沒有序列化和反序列化,是最快的緩存。缺點是緩存的空間不能太大,對垃圾回收器的性能有影響。

這里我們需要關注幾個緩存的回收策略,具體的實現架構的回收策略會有所不同,但大致的思路都是一致的:

  • FIFO(First In First Out):先進先出算法,最先放入緩存的數據最先被移除。
  • LRU(Least Recently Used):最近最少使用算法,把最久沒有使用過的數據移除緩存。
  • LFU(Least Frequently Used):最不常用算法,在一段時間內使用頻率最小的數據被移除緩存。

在分布式架構的今天,多應用中如果采用進程內緩存會存在數據一致性的問題。

這里推薦兩個方案:

  • 消息隊列修改方案
  • Timer 修改方案

4.1. 消息隊列修改方案

應用在修改完自身緩存數據和數據庫數據之后,給消息隊列發送數據變化通知,其他應用訂閱了消息通知,在收到通知的時候修改緩存數據。

 

資深架構師分享:大型網站多級緩存的分層架構

 

4.2. Timer 修改方案

為了避免耦合,降低復雜性,對“實時一致性”不敏感的情況下。每個應用都會啟動一個 Timer,定時從數據庫拉取最新的數據,更新緩存。

不過在有的應用更新數據庫后,其他節點通過 Timer 獲取數據之間,會讀到臟數據。這里需要控制好 Timer 的頻率,以及應用與對實時性要求不高的場景。

 

資深架構師分享:大型網站多級緩存的分層架構

 

進程內緩存有哪些使用場景呢?

場景一:只讀數據,可以考慮在進程啟動時加載到內存。當然,把數據加載到類似 Redis 這樣的進程外緩存服務也能解決這類問題。

場景二:高并發,可以考慮使用進程內緩存,例如:秒殺。

5. 分布式緩存

說完進程內緩存,自然就過度到進程外緩存了。與進程內緩存不同,進程外緩存在應用運行的進程之外,它擁有更大的緩存容量,并且可以部署到不同的物理節點,通常會用分布式緩存的方式實現。

分布式緩存是與應用分離的緩存服務,最大的特點是,自身是一個獨立的應用/服務,與本地應用隔離,多個應用可直接共享一個或者多個緩存應用/服務。

 

資深架構師分享:大型網站多級緩存的分層架構

 

既然是分布式緩存,緩存的數據會分布到不同的緩存節點上,每個緩存節點緩存的數據大小通常也是有限制的。

數據被緩存到不同的節點,為了能方便的訪問這些節點,需要引入緩存代理,類似 Twemproxy。他會幫助請求找到對應的緩存節點。

同時如果緩存節點增加了,這個代理也會只能識別并且把新的緩存數據分片到新的節點,做橫向的擴展。

為了提高緩存的可用性,會在原有的緩存節點上加入 Master/Slave 的設計。當緩存數據寫入 Master 節點的時候,會同時同步一份到 Slave 節點。

一旦 Master 節點失效,可以通過代理直接切換到 Slave 節點,這時 Slave 節點就變成了 Master 節點,保證緩存的正常工作。

每個緩存節點還會提供緩存過期的機制,并且會把緩存內容定期以快照的方式保存到文件上,方便緩存崩潰之后啟動預熱加載。

5.1. 高性能

當緩存做成分布式的時候,數據會根據一定的規律分配到每個緩存應用/服務上。

如果我們把這些緩存應用/服務叫做緩存節點,每個節點一般都可以緩存一定容量的數據,例如:Redis 一個節點可以緩存 2G 的數據。

如果需要緩存的數據量比較大就需要擴展多個緩存節點來實現,這么多的緩存節點,客戶端的請求不知道訪問哪個節點怎么辦?緩存的數據又如何放到這些節點上?

緩存代理服務已經幫我們解決這些問題了,例如:Twemproxy 不但可以幫助緩存路由,同時可以管理緩存節點。

這里有介紹三種緩存數據分片的算法,有了這些算法緩存代理就可以方便的找到分片的數據了。

5.1.1. 哈希算法

Hash 表是最常見的數據結構,實現方式是,對數據記錄的關鍵值進行 Hash,然后再對需要分片的緩存節點個數進行取模得到的余數進行數據分配。

例如:有三條記錄數據分別是 R1,R2,R3。他們的 ID 分別是 01,02,03,假設對這三個記錄的 ID 作為關鍵值進行 Hash 算法之后的結果依舊是 01,02,03。

我們想把這三條數據放到三個緩存節點中,可以把這個結果分別對 3 這個數字取模得到余數,這個余數就是這三條記錄分別放置的緩存節點。

 

資深架構師分享:大型網站多級緩存的分層架構

 

Hash 算法是某種程度上的平均放置,策略比較簡單,如果要增加緩存節點,對已經存在的數據會有較大的變動。

5.1.2. 一致性哈希算法

一致性 Hash 是將數據按照特征值映射到一個首尾相接的 Hash 環上,同時也將緩存節點映射到這個環上。

如果要緩存數據,通過數據的關鍵值(Key)在環上找到自己存放的位置。這些數據按照自身的 ID 取 Hash 之后得到的值按照順序在環上排列。

 

資深架構師分享:大型網站多級緩存的分層架構

 

如果這個時候要插入一條新的數據其 ID 是 115,那么就應該插入到如下圖的位置。

 

資深架構師分享:大型網站多級緩存的分層架構

 

同理如果要增加一個緩存節點 N4 150,也可以放到如下圖的位置。

 

資深架構師分享:大型網站多級緩存的分層架構

 

這種算法對于增加緩存數據,和緩存節點的開銷相對比較小。

5.1.3. Range Based 算法

這種方式是按照關鍵值(例如 ID)將數據劃分成不同的區間,每個緩存節點負責一個或者多個區間。跟一致性哈希有點像。

例如:存在三個緩存節點分別是 N1,N2,N3。他們用來存放數據的區間分別是,N1(0, 100], N2(100, 200], N3(300, 400]。

那么數據根據自己 ID 作為關鍵字做 Hash 以后的結果就會分別對應放到這幾個區域里面了。

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

2019-10-30 16:24:34

分層架構緩存

2018-07-03 15:46:24

Java架構師源碼

2017-09-16 18:29:00

代碼數據庫線程

2012-11-01 15:08:10

IBM資深架構師

2019-08-27 11:00:38

技術數據庫設計

2013-10-17 15:54:46

紅帽

2015-04-10 17:35:26

WOT2015谷歌資深架構師李聰

2021-06-07 09:35:11

架構運維技術

2013-10-17 15:45:24

紅帽

2012-09-29 13:29:11

存儲架構架構緩存

2016-11-07 21:00:04

網站service架構設計

2013-10-15 13:24:00

負載均衡架構

2012-12-17 17:38:37

System CentWindows SerHyper-V

2009-02-19 16:19:48

SaaS開發SaaS安全SaaS

2013-11-14 10:06:11

紅帽redhat

2018-07-06 11:25:40

Java架構師面試

2012-09-28 14:08:20

大型網站架構大型網站算法算法

2014-09-26 09:53:41

系統架構架構架構演變

2020-08-24 08:50:12

架構師TL技術

2013-01-28 10:23:12

軟件架構師架構師程序員
點贊
收藏

51CTO技術棧公眾號

欧美激情一区在线| 91久久综合| 欧美疯狂性受xxxxx喷水图片| 日韩国产精品一区二区| 一区二区三区黄| 这里只有精品在线| 日韩av影片在线观看| 秋霞无码一区二区| 99免在线观看免费视频高清| 麻豆高清免费国产一区| 欧美夫妻性生活xx| 亚洲成人黄色av| 久久伊人精品| 在线免费观看日韩欧美| 久久www视频| 国产福利免费在线观看| 国产美女久久久久| 国产91精品在线播放| 青青青在线免费观看| 亚洲三级性片| 日韩精品专区在线| 奇米影音第四色| av老司机在线观看| 国产精品久久久久久久久晋中| 91青青草免费在线看| 久久精品无码av| 欧美激情综合色综合啪啪| 亚洲国产精品悠悠久久琪琪| 色www免费视频| 最新中文字幕在线播放| 一区二区三区在线免费播放 | av在线com| 91成人高清| 久久久精品欧美丰满| 国产亚洲第一区| 国产99对白在线播放| 日本在线观看不卡视频| 91精品国产91久久| 国产真实乱偷精品视频| 99久久夜色精品国产亚洲96| 亚洲四色影视在线观看| 在线观看免费视频黄| 国产精品亚洲欧美日韩一区在线| 欧美综合色免费| 国产精品动漫网站| 日本不良网站在线观看| 亚洲成人你懂的| 妞干网在线播放| 日本动漫理论片在线观看网站| 中文字幕中文字幕一区| 午夜精品视频在线观看一区二区| 精品无人乱码| 国产亚洲综合在线| 欧美 日韩 国产在线| 天天舔天天干天天操| 国产一区二区三区在线观看免费视频 | 波多野结衣理论片| 在线不卡欧美| 亚州av一区二区| 国产在线精品观看| 亚洲激情另类| 3344国产精品免费看| 91在线看视频| 久久精品亚洲| 国产精品久久久久一区二区| 中文字幕人成人乱码亚洲电影| 国产日韩一区二区三区在线| 57pao成人永久免费视频| 久久国产黄色片| 久久午夜激情| 国产精品久久久久免费a∨大胸| 亚洲男人天堂网址| 久久99精品久久久久久久久久久久| 91精品久久久久久综合乱菊| 国产精品久久影视| 久久er99精品| 国产99午夜精品一区二区三区| 黄色福利在线观看| 99久久精品国产导航| 欧美福利一区二区三区| 99视频在线观看地址| 亚洲欧美日韩国产综合| 精品人妻人人做人人爽| 悠悠资源网亚洲青| 欧美三级乱人伦电影| 深夜做爰性大片蜜桃| 精品三级av在线导航| 亚洲欧美在线第一页| 91香蕉国产视频| 国产一区清纯| 国产99久久久欧美黑人| 国产精选久久久| 99久久99久久久精品齐齐| 日本精品一区二区| 51xtv成人影院| 色综合欧美在线视频区| 久久久久久久高清| 欧美五码在线| 久热精品视频在线观看一区| 日韩免费一级片| 麻豆91在线播放免费| 国产欧美日韩综合一区在线观看| 成人免费在线电影| 亚洲国产三级在线| 91小视频网站| 欧美性生活一级片| 国产午夜精品全部视频在线播放 | 蜜桃视频无码区在线观看| 三级精品视频| 欧美另类老女人| а中文在线天堂| 成人一道本在线| 亚洲欧洲日韩综合二区| 波多野结衣视频一区二区| 欧美日韩欧美一区二区| 精品人妻一区二区三区日产乱码卜| 久久免费大视频| 欧美性在线视频| a在线观看免费| 国产精品三级在线观看| av网站在线观看不卡| 天堂精品久久久久| x99av成人免费| 日本视频免费观看| 99久久综合国产精品| 日本丰满少妇黄大片在线观看| 免费福利视频一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 97人妻人人揉人人躁人人| aa亚洲婷婷| 国产精品国产精品国产专区蜜臀ah | 日韩一区二区电影网| 久久久久久久久久久久久久久| 这里只有精品在线| 成人黄色免费片| av播放在线| 91国偷自产一区二区开放时间 | 色小子综合网| 国产精品1234| 久久这里精品| 欧美午夜www高清视频| www.555国产精品免费| 欧美国产高潮xxxx1819| 91久久国产精品91久久性色| 成人av毛片| 欧美性猛交xxxx乱大交退制版| 五月开心播播网| 宅男噜噜噜66一区二区| 国产日韩久久| 亚洲精品88| 日韩精品免费电影| av网站中文字幕| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美精品国产精品日韩精品| 国产精品人人爽| 最新热久久免费视频| 激情黄色小视频| 久久精品亚洲人成影院| 成人观看高清在线观看免费| 毛片av在线| 欧美精品在线视频| 人人澡人人澡人人看| 黑人精品欧美一区二区蜜桃| 香蕉精品视频在线| 亚洲**毛片| 国外色69视频在线观看| 性感美女视频一二三| 欧美午夜精品伦理| 奇米网一区二区| 国产一区二区视频在线播放| youjizz.com在线观看| 免费萌白酱国产一区二区三区| 91wwwcom在线观看| 阿v免费在线观看| 欧美精品日日鲁夜夜添| 欧美片一区二区| 91麻豆免费看片| 亚洲欧美在线精品| 欧美三区不卡| 欧美另类视频在线| 日韩一级视频| 欧美激情在线有限公司| 外国精品视频在线观看 | 成人性教育视频在线观看| 免费在线国产视频| 亚洲欧美中文在线视频| 国产精品久久久久毛片| 五月婷婷久久综合| 超碰人人干人人| 懂色av一区二区夜夜嗨| 午夜精品久久久内射近拍高清| 成人在线免费视频观看| 国产精品 日韩| 性欧美freehd18| 欧美肥婆姓交大片| 精品成人一区二区三区免费视频| 欧美日韩国产一级片| 国产一级在线观看视频| 欧美极品aⅴ影院| 亚洲熟女一区二区三区| 日韩国产一区二| www.一区二区.com| 青青草国产免费一区二区下载| 超碰97人人在线| 国外成人福利视频| 91国产美女在线观看| 午夜视频在线观看网站| 亚洲国产精品999| 一本一道人人妻人人妻αv| 午夜精品久久久久久| 色哟哟一一国产精品| 久久综合九色综合97婷婷女人| 激情在线观看视频| 日韩国产欧美三级| 午夜免费福利小电影| 希岛爱理一区二区三区| 日本高清视频一区二区三区 | 亚洲国产私拍精品国模在线观看| 久久久久久av无码免费看大片| 亚洲国产成人精品视频| 日韩精品123区| 国产精品久久毛片a| a级片在线观看| 97精品国产露脸对白| 国产精品19p| 精东粉嫩av免费一区二区三区| 亚洲国产精品毛片av不卡在线| 在线不卡亚洲| 久艹在线免费观看| 欧美在线黄色| 日本黄色播放器| 日韩夫妻性生活xx| 日韩电影免费观看在| 亚洲第一福利社区| 国产区二精品视| av成人资源网| 亚洲一区二区三区sesese| 久久亚洲人体| 国产精品麻豆va在线播放| 日本免费一区二区三区四区| 91精品国产九九九久久久亚洲| 国产啊啊啊视频在线观看| 欧美另类69精品久久久久9999| 精品孕妇一区二区三区| 日韩亚洲精品视频| 五月天婷婷在线视频| 视频直播国产精品| 视频一区二区三区不卡| 日韩中文字幕免费视频| 欧美成人高清在线| 久久黄色av网站| 精品视频在线一区二区| 久久国产加勒比精品无码| 哥也色在线视频| 欧美精品一区二区三区国产精品| 中文字幕在线播放网址| 欧美夫妻性生活xx| 黄视频免费在线看| 欧美又大又粗又长| 日韩成人影音| 国产欧美va欧美va香蕉在线| 日本在线一区二区| 亚洲japanese制服美女| 日韩一区网站| 精品久久久久久一区| 久久99免费视频| 亚洲免费久久| 欧美日本二区| 欧美牲交a欧美牲交| 日本视频一区二区| 亚洲天堂一区二区在线观看| 国产精品 欧美精品| 国产大学生视频| 久久久久久97三级| 天海翼在线视频| 亚洲综合丝袜美腿| 国产精品100| 欧美日韩一区二区欧美激情| 国产视频www| 日韩国产在线播放| 日本在线www| 97精品视频在线播放| 日韩免费小视频| 96pao国产成视频永久免费| 盗摄牛牛av影视一区二区| 青青草原亚洲| 欧美精品九九| 免费大片在线观看| 国产精品一区二区在线看| aa片在线观看视频在线播放| 国产精品色噜噜| 日韩精品久久久久久久酒店| 欧美中文字幕一区二区三区亚洲| 国产美女自慰在线观看| 亚洲免费电影一区| 成人a在线视频免费观看| 69视频在线播放| 999精品视频在线观看| 久久av免费观看| 综合久久综合| 欧美精品第三页| 懂色av一区二区夜夜嗨| 少妇的滋味中文字幕bd| 亚洲国产成人高清精品| 亚洲视频中文字幕在线观看| 亚洲第一国产精品| 黄色在线免费看| 国产91久久婷婷一区二区| 91精品国产乱码久久久竹菊| 日韩欧美在线观看强乱免费| 一区二区视频欧美| www.亚洲自拍| 欧美国产日本视频| 亚洲另类欧美日韩| 欧美大片日本大片免费观看| av大片在线播放| 国产成人拍精品视频午夜网站 | 狠狠色丁香婷综合久久| 黄瓜视频污在线观看| 亚洲夂夂婷婷色拍ww47| 国产精品日韩无码| 丝袜美腿精品国产二区| 超碰国产一区| 国产一区在线免费| 国模大胆一区二区三区| 亚洲免费黄色录像| 欧美国产视频在线| 欧美一区二区三区网站| 亚洲精品一区二区三区蜜桃下载| 黄色网页在线免费观看| 国产精品视频一区二区三区四| 特黄特色欧美大片| 欧美一区二区中文字幕| 国产成人av网站| 五月天丁香激情| 91精品国产高清一区二区三区 | 51久久精品夜色国产麻豆| 草莓视频一区二区三区| 91国在线高清视频| 国产成人在线视频播放| 免费看一级大片| 欧美一区二区视频网站| 麻豆视频在线观看免费| 91精品国产综合久久香蕉922 | 久久精品99久久香蕉国产色戒| 国产在线|日韩| 午夜欧美性电影| 美女视频一区二区三区| 一二三四在线观看视频| 欧美日韩久久一区二区| 91在线不卡| 国产在线视频2019最新视频| 北条麻妃国产九九九精品小说| 成人3d动漫一区二区三区| 国产视频在线观看一区二区三区| 日韩在线 中文字幕| 国产午夜精品全部视频在线播放| 中文另类视频| 一区精品在线| 国产成人在线网站| 亚洲精品77777| 亚洲精选一区二区| 全球最大av网站久久| 亚洲一区二区精品在线观看| 久久精品99久久久| 久久r这里只有精品| 精品国产乱码91久久久久久网站| а√天堂中文在线资源8| 欧美成人免费在线| 蜜桃传媒麻豆第一区在线观看| 极品美妇后花庭翘臀娇吟小说| 91超碰这里只有精品国产| 欧美性猛片xxxxx免费中国 | 亚洲视频天天射| 高跟丝袜欧美一区| 啊v在线视频| 风间由美一区二区三区| 性欧美xxxx大乳国产app| 日本一区二区视频在线播放| 欧美美女直播网站| a级片免费在线观看| 午夜精品一区二区在线观看的| 国产一区二区三区黄视频| 日韩成人一区二区三区| 尤物九九久久国产精品的分类| 综合欧美精品| 黄色免费视频大全| 国产精品乱码妇女bbbb| 男人天堂一区二区| 国产精品午夜一区二区欲梦| 欧美精品二区| b站大片免费直播| 欧美一级久久久| 性欧美hd调教| 国产精品igao激情视频| 久久久精品2019中文字幕之3| 99久久久国产精品无码免费| 欧美性资源免费| 欧美精品一线| 欧美日韩生活片|