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

緩存太香了!我的10年使用經(jīng)驗總結(jié)!

存儲 存儲軟件
一位七牛的資深架構(gòu)師曾經(jīng)說過這樣一句話:“Nginx+業(yè)務(wù)邏輯層+數(shù)據(jù)庫+緩存層+消息隊列,這種模型幾乎能適配絕大部分的業(yè)務(wù)場景。

[[358817]]

圖片來自 Pexels

這么多年過去了,這句話或深或淺地影響了我的技術(shù)選擇,以至于后來我花了很多時間去重點(diǎn)學(xué)習(xí)緩存相關(guān)的技術(shù)。

我在 10 年前開始使用緩存,從本地緩存、到分布式緩存、再到多級緩存,踩過很多坑。下面我結(jié)合自己使用緩存的歷程,談?wù)勎覍彺娴恼J(rèn)識。

本地緩存

頁面級緩存

我使用緩存的時間很早,2010 年左右使用過 OSCache,當(dāng)時主要用在 JSP 頁面中用于實(shí)現(xiàn)頁面級緩存。

偽代碼類似這樣:

  1. <cache:cache key="foobar" scope="session">  
  2.       some jsp content  
  3. </cache:cache> 

中間的那段 JSP 代碼將會以 key="foobar" 緩存在 session 中,這樣其他頁面就能共享這段緩存內(nèi)容。

在使用 JSP 這種遠(yuǎn)古技術(shù)的場景下,通過引入 OSCache 之后 ,頁面的加載速度確實(shí)提升很快。

但隨著前后端分離以及分布式緩存的興起,服務(wù)端的頁面級緩存已經(jīng)很少使用了。但是在前端領(lǐng)域,頁面級緩存仍然很流行。

對象緩存

2011 年左右,開源中國的紅薯哥寫了很多篇關(guān)于緩存的文章。他提到:開源中國每天百萬的動態(tài)請求,只用 1 臺 4 Core 8G 的服務(wù)器就扛住了,得益于緩存框架 Ehcache。

這讓我非常神往,一個簡單的框架竟能將單機(jī)性能做到如此這般,讓我欲欲躍試。

于是,我參考紅薯哥的示例代碼,在公司的余額提現(xiàn)服務(wù)上第一次使用了 Ehcache。

邏輯也很簡單,就是將成功或者失敗狀態(tài)的訂單緩存起來,這樣下次查詢的時候,不用再查詢支付寶服務(wù)了。

偽代碼類似這樣:

 

添加緩存之后,優(yōu)化的效果很明顯 , 任務(wù)耗時從原來的 40 分鐘減少到了 5~10 分鐘。

上面這個示例就是典型的「對象緩存」,它是本地緩存最常見的應(yīng)用場景。相比頁面緩存,它的粒度更細(xì)、更靈活,常用來緩存很少變化的數(shù)據(jù),比如:全局配置、狀態(tài)已完結(jié)的訂單等,用于提升整體的查詢速度。

刷新策略

2018 年,我和我的小伙伴自研了配置中心,為了讓客戶端以最快的速度讀取配置, 本地緩存使用了 Guava。

整體架構(gòu)如下圖所示:

 

那本地緩存是如何更新的呢?有兩種機(jī)制:

  • 客戶端啟動定時任務(wù),從配置中心拉取數(shù)據(jù)。
  • 當(dāng)配置中心有數(shù)據(jù)變化時,主動推送給客戶端。這里我并沒有使用 websocket,而是使用了 RocketMQ Remoting 通訊框架。

后來我閱讀了 Soul 網(wǎng)關(guān)的源碼,它的本地緩存更新機(jī)制如下圖所示,共支持 3 種策略:

 

Zookeeper Watch 機(jī)制:soul-admin 在啟動的時候,會將數(shù)據(jù)全量寫入 Zookeeper,后續(xù)數(shù)據(jù)發(fā)生變更時,會增量更新 Zookeeper 的節(jié)點(diǎn)。

與此同時,soul-web 會監(jiān)聽配置信息的節(jié)點(diǎn),一旦有信息變更時,會更新本地緩存。

Websocket 機(jī)制:Websocket 和 Zookeeper 機(jī)制有點(diǎn)類似,當(dāng)網(wǎng)關(guān)與 admin 首次建立好 websocket 連接時,admin 會推送一次全量數(shù)據(jù),后續(xù)如果配置數(shù)據(jù)發(fā)生變更,則將增量數(shù)據(jù)通過 websocket 主動推送給 soul-web。

Http 長輪詢機(jī)制:Http 請求到達(dá)服務(wù)端后,并不是馬上響應(yīng),而是利用 Servlet 3.0 的異步機(jī)制響應(yīng)數(shù)據(jù)。

當(dāng)配置發(fā)生變化時,服務(wù)端會挨個移除隊列中的長輪詢請求,告知是哪個 Group 的數(shù)據(jù)發(fā)生了變更,網(wǎng)關(guān)收到響應(yīng)后,再次請求該 Group 的配置數(shù)據(jù)。

不知道大家發(fā)現(xiàn)了沒?

  • pull 模式必不可少
  • 增量推送大同小異

長輪詢是一個有意思的話題 , 這種模式在 RocketMQ 的消費(fèi)者模型也同樣被使用,接近準(zhǔn)實(shí)時,并且可以減少服務(wù)端的壓力。

分布式緩存

關(guān)于分布式緩存, Memcached 和 Redis 應(yīng)該是最常用的技術(shù)選型。相信程序員朋友都非常熟悉了,我這里分享兩個案例。

合理控制對象大小及讀取策略

2013 年,我服務(wù)一家彩票公司,我們的比分直播模塊也用到了分布式緩存。當(dāng)時,遇到了一個 Young GC 頻繁的線上問題,通過 jstat 工具排查后,發(fā)現(xiàn)新生代每隔兩秒就被占滿了。

進(jìn)一步定位分析,原來是某些 key 緩存的 value 太大了,平均在 300K 左右,最大的達(dá)到了 500K。這樣在高并發(fā)下,就很容易導(dǎo)致 GC 頻繁。

找到了根本原因后,具體怎么改呢?我當(dāng)時也沒有清晰的思路。于是,我去同行的網(wǎng)站上研究他們是怎么實(shí)現(xiàn)相同功能的,包括:360 彩票,澳客網(wǎng)。

我發(fā)現(xiàn)了兩點(diǎn):

  • 數(shù)據(jù)格式非常精簡,只返回給前端必要的數(shù)據(jù),部分?jǐn)?shù)據(jù)通過數(shù)組的方式返回。
  • 使用 Websocket,進(jìn)入頁面后推送全量數(shù)據(jù),數(shù)據(jù)發(fā)生變化推送增量數(shù)據(jù)。

再回到我的問題上,最終是用什么方案解決的呢?當(dāng)時,我們的比分直播模塊緩存格式是 JSON 數(shù)組,每個數(shù)組元素包含 20 多個鍵值對, 下面的 JSON 示例我僅僅列了其中 4 個屬性。

  1. [{ 
  2.      "playId":"2399"
  3.      "guestTeamName":"小牛"
  4.      "hostTeamName":"湖人"
  5.      "europe":"123" 
  6.  }] 

這種數(shù)據(jù)結(jié)構(gòu),一般情況下沒有什么問題。但是當(dāng)字段數(shù)多達(dá) 20 多個,而且每天的比賽場次非常多時,在高并發(fā)的請求下其實(shí)很容易引發(fā)問題。

基于工期以及風(fēng)險考慮,最終我們采用了比較保守的優(yōu)化方案:

①修改新生代大小,從原來的 2G 修改成 4G。

②將緩存數(shù)據(jù)的格式由 JSON 改成數(shù)組,如下所示:

  1. [["2399","小牛","湖人","123"]] 

修改完成之后,緩存的大小從平均 300K 左右降為 80K 左右,YGC 頻率下降很明顯,同時頁面響應(yīng)也變快了很多。

但過了一會,CPU Load 會在瞬間波動得比較高。可見,雖然我們減少了緩存大小,但是讀取大對象依然對系統(tǒng)資源是極大的損耗,導(dǎo)致 Full GC 的頻率也不低。

③為了徹底解決這個問題,我們使用了更精細(xì)化的緩存讀取策略。

我們把緩存拆成兩個部分,第一部分是全量數(shù)據(jù),第二部分是增量數(shù)據(jù)(數(shù)據(jù)量很小)。

頁面第一次請求拉取全量數(shù)據(jù),當(dāng)比分有變化的時候,通過 Websocket 推送增量數(shù)據(jù)。

第 3 步完成后,頁面的訪問速度極快,服務(wù)器的資源使用也很少,優(yōu)化的效果非常優(yōu)異。

經(jīng)過這次優(yōu)化,我理解到: 緩存雖然可以提升整體速度,但是在高并發(fā)場景下,緩存對象大小依然是需要關(guān)注的點(diǎn),稍不留神就會產(chǎn)生事故。

另外我們也需要合理地控制讀取策略,最大程度減少 GC 的頻率 , 從而提升整體性能。

分頁列表查詢

列表如何緩存是我非常渴望和大家分享的技能點(diǎn)。這個知識點(diǎn)也是我 2012 年從開源中國上學(xué)到的,下面我以「查詢博客列表」的場景為例。

我們先說第 1 種方案:對分頁內(nèi)容進(jìn)行整體緩存。這種方案會按照頁碼和每頁大小組合成一個緩存 key,緩存值就是博客信息列表。

假如某一個博客內(nèi)容發(fā)生修改, 我們要重新加載緩存,或者刪除整頁的緩存。這種方案,緩存的顆粒度比較大,如果博客更新較為頻繁,則緩存很容易失效。

下面我介紹下第 2 種方案:僅對博客進(jìn)行緩存。

流程大致如下:

①先從數(shù)據(jù)庫查詢當(dāng)前頁的博客 id 列表,sql 類似:

  1. select id from blogs limit 0,10  

②批量從緩存中獲取博客 id 列表對應(yīng)的緩存數(shù)據(jù) ,并記錄沒有命中的博客 id,若沒有命中的 id 列表大于 0,再次從數(shù)據(jù)庫中查詢一次,并放入緩存,sql 類似:

  1. select id from blogs where id in (noHitId1, noHitId2) 

③將沒有緩存的博客對象存入緩存中。

④返回博客對象列表。

理論上,要是緩存都預(yù)熱的情況下,一次簡單的數(shù)據(jù)庫查詢,一次緩存批量獲取,即可返回所有的數(shù)據(jù)。

另外,關(guān)于緩存批量獲取,如何實(shí)現(xiàn)?

  • 本地緩存:性能極高,for 循環(huán)即可。
  • Memcached:使用 mget 命令。
  • Redis:若緩存對象結(jié)構(gòu)簡單,使用 mget 、hmget命令;若結(jié)構(gòu)復(fù)雜,可以考慮使用 pipleline,lua 腳本模式。

第 1 種方案適用于數(shù)據(jù)極少發(fā)生變化的場景,比如排行榜,首頁新聞資訊等。

第 2 種方案適用于大部分的分頁場景,而且能和其他資源整合在一起。

舉例:在搜索系統(tǒng)里,我們可以通過篩選條件查詢出博客 id 列表,然后通過如上的方式,快速獲取博客列表。

多級緩存

首先要明確為什么要使用多級緩存?本地緩存速度極快,但是容量有限,而且無法共享內(nèi)存。

分布式緩存容量可擴(kuò)展,但在高并發(fā)場景下,如果所有數(shù)據(jù)都必須從遠(yuǎn)程緩存種獲取,很容易導(dǎo)致帶寬跑滿,吞吐量下降。

有句話說得好,緩存離用戶越近越高效!

使用多級緩存的好處在于:高并發(fā)場景下, 能提升整個系統(tǒng)的吞吐量,減少分布式緩存的壓力。

2018 年,我服務(wù)的一家電商公司需要進(jìn)行 App 首頁接口的性能優(yōu)化。我花了大概兩天的時間完成了整個方案,采取的是兩級緩存模式,同時利用了 Guava 的惰性加載機(jī)制。

整體架構(gòu)如下圖所示:

 

緩存讀取流程如下:

①業(yè)務(wù)網(wǎng)關(guān)剛啟動時,本地緩存沒有數(shù)據(jù),讀取 Redis 緩存,如果 Redis 緩存也沒數(shù)據(jù),則通過 RPC 調(diào)用導(dǎo)購服務(wù)讀取數(shù)據(jù),然后再將數(shù)據(jù)寫入本地緩存和 Redis 中;若 Redis 緩存不為空,則將緩存數(shù)據(jù)寫入本地緩存中。

②由于步驟 1 已經(jīng)對本地緩存預(yù)熱,后續(xù)請求直接讀取本地緩存,返回給用戶端。

③Guava 配置了 refresh 機(jī)制,每隔一段時間會調(diào)用自定義 LoadingCache 線程池(5 個最大線程,5 個核心線程)去導(dǎo)購服務(wù)同步數(shù)據(jù)到本地緩存和 Redis 中。

優(yōu)化后,性能表現(xiàn)很好,平均耗時在 5ms 左右。最開始我以為出現(xiàn)問題的幾率很小,可是有一天晚上,突然發(fā)現(xiàn) App 端首頁顯示的數(shù)據(jù)時而相同,時而不同。

也就是說:雖然 LoadingCache 線程一直在調(diào)用接口更新緩存信息,但是各個服務(wù)器本地緩存中的數(shù)據(jù)并非完成一致。

說明了兩個很重要的點(diǎn):

  • 惰性加載仍然可能造成多臺機(jī)器的數(shù)據(jù)不一致。
  • LoadingCache 線程池數(shù)量配置的不太合理, 導(dǎo)致了線程堆積。

最終,我們的解決方案是:

  • 惰性加載結(jié)合消息機(jī)制來更新緩存數(shù)據(jù),也就是:當(dāng)導(dǎo)購服務(wù)的配置發(fā)生變化時,通知業(yè)務(wù)網(wǎng)關(guān)重新拉取數(shù)據(jù),更新緩存。
  • 適當(dāng)調(diào)大 LoadigCache 的線程池參數(shù),并在線程池埋點(diǎn),監(jiān)控線程池的使用情況,當(dāng)線程繁忙時能發(fā)出告警,然后動態(tài)修改線程池參數(shù)。

寫在最后

緩存是非常重要的一個技術(shù)手段。如果能從原理到實(shí)踐,不斷深入地去掌握它,這應(yīng)該是技術(shù)人員最享受的事情。

這篇文章屬于緩存系列的開篇,更多是把我 10 多年工作中遇到的典型問題娓娓道來,并沒有非常深入地去探討原理性的知識。

我想我更應(yīng)該和朋友交流的是:‍‍‍‍‍如何體系化的學(xué)習(xí)一門新技術(shù)。

  • 選擇該技術(shù)的經(jīng)典書籍,理解基礎(chǔ)概念。
  • 建立該技術(shù)的知識脈絡(luò)。
  • 知行合一,在生產(chǎn)環(huán)境中實(shí)踐或者自己造輪子。
  • 不斷復(fù)盤,思考是否有更優(yōu)的方案。

后續(xù)我會連載一些緩存相關(guān)的內(nèi)容,包括緩存的高可用機(jī)制、Codis 的原理等,關(guān)于緩存,如果你有自己的心得體會或者想深入了解的內(nèi)容,歡迎評論區(qū)留言。

作者:張勇

簡介:現(xiàn)任科大訊飛高級架構(gòu)師。11 年后端經(jīng)驗,曾就職于同程藝龍、神州優(yōu)車等公司。樂于分享、熱衷通過自己的實(shí)踐經(jīng)驗平鋪對技術(shù)的理解。

編輯:陶家龍

出處:轉(zhuǎn)載自公眾號IT人的職場進(jìn)階(ID:BestITer)

 

責(zé)任編輯:武曉燕 來源: IT人的職場進(jìn)階
相關(guān)推薦

2015-06-23 15:07:53

2009-09-27 14:53:38

Hibernate S

2010-04-21 14:53:46

Oracle游標(biāo)

2009-09-08 16:02:47

Linq使用Group

2009-09-25 17:26:55

使用Hibernate

2017-01-05 16:29:00

2015-09-14 15:13:52

2009-10-15 09:27:00

2013-07-11 14:41:16

編程經(jīng)驗

2011-07-21 13:40:17

java

2009-09-16 17:13:54

學(xué)習(xí)Linq

2009-08-19 09:24:43

AJAX引擎經(jīng)驗總結(jié)

2009-09-29 16:32:11

OJB Hiberna

2023-11-09 08:01:41

Spring緩存注解

2010-03-23 11:39:49

云計算

2010-03-25 13:42:14

云計算

2010-05-19 17:24:55

MySQL編碼

2018-09-03 09:11:37

經(jīng)驗總結(jié)運(yùn)維

2010-08-06 13:43:45

Flex調(diào)試

2011-07-08 13:15:52

JSP
點(diǎn)贊
收藏

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

av视屏在线播放| 欧美中文字幕第一页| 日韩爱爱小视频| 国产最新在线| 成人免费高清视频在线观看| 69av成年福利视频| 成人小视频免费看| 三级欧美日韩| 在线观看日韩国产| japanese在线播放| 九色视频网站在线观看| 国产美女在线精品| 日本久久91av| 黄色一级视频免费| 欧美日韩一区二区三区视频播放| 日韩欧美色综合| 国产精品天天av精麻传媒| 3d玉蒲团在线观看| 国产色综合久久| 99在线视频播放| 国产成人av免费| 亚洲三级网站| 久久影院免费观看| 无码人妻精品一区二区中文| 亚洲视频一起| 9191国产精品| 一级黄色特级片| 爱情电影社保片一区| 亚洲精品第一国产综合野| 日日骚一区二区网站| 日韩在线视频免费| 国产美女在线精品| 91免费人成网站在线观看18| 在线免费一区二区| 久久精品欧洲| 97碰在线观看| 免费观看一级视频| 中文一区一区三区免费在线观看| 中文字幕亚洲无线码在线一区| 日本一卡二卡在线| 91欧美极品| 宅男噜噜噜66一区二区66| 50路60路老熟妇啪啪| 麻豆mv在线观看| 亚洲国产日产av| 国产精品一色哟哟| 色帝国亚洲欧美在线| 亚洲三级理论片| japanese在线视频| 色老头视频在线观看| 欧美国产欧美综合| 日韩精品电影网站| www.av在线| 国产精品美女久久久久久久久久久 | 亚洲国产一区二区精品视频 | 污污的网站18| 日韩精品一区二区三区av| 色88888久久久久久影院按摩| 欧美视频在线观看网站| 欧美freesex黑人又粗又大| 亚洲成人中文在线| 久久久亚洲精品无码| 操人在线观看| 一本色道综合亚洲| 熟女少妇精品一区二区| 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲成色www久久网站| 888av在线| 亚洲精品一二三| 日韩视频在线视频| 五月天av在线| 在线观看成人免费视频| 三上悠亚在线一区二区| 久久av偷拍| 欧美精品一区二区高清在线观看| 天天躁日日躁狠狠躁免费麻豆| 欧洲亚洲视频| 中文字幕精品—区二区| 国产三级国产精品国产国在线观看| 国产大片一区| 久久久久久国产精品久久| 国产乱国产乱老熟| 美日韩一级片在线观看| 91久久久一线二线三线品牌| 免费看日韩av| 久久久亚洲高清| 亚洲一二区在线| 国精一区二区三区| 色婷婷av一区二区三区之一色屋| 手机在线看福利| 麻豆国产一区| 亚洲欧美日韩天堂一区二区| 亚洲AV成人无码精电影在线| 亚洲大片av| 国产精品影片在线观看| 亚洲av无码一区二区三区dv | 久热国产精品视频一区二区三区| 国产综合在线观看| 亚洲男女毛片无遮挡| 99热自拍偷拍| 成人亚洲精品| 亚洲女人被黑人巨大进入al| 尤物在线免费视频| 老司机免费视频久久| 91美女高潮出水| 青青久草在线| 亚洲精品国产第一综合99久久| 国产成人精品视频免费看| 91嫩草国产线观看亚洲一区二区| 亚洲国产欧美久久| 日本 欧美 国产| 亚洲一区二区毛片| 91精品婷婷国产综合久久蝌蚪| 酒色婷婷桃色成人免费av网| 一区二区高清免费观看影视大全| 亚洲一二三区av| 欧美黑人巨大videos精品| 日韩在线观看免费全| 欧美日韩乱国产| 国产一区二区看久久| 欧美日韩一区二| 草莓视频丝瓜在线观看丝瓜18| 欧美日韩在线播放三区四区| 美女100%无挡| 国产精品久久久亚洲一区| 亚洲综合自拍一区| 美女羞羞视频在线观看| 91久久精品一区二区| 中文在线永久免费观看| 欧美三级网页| 亚洲一区亚洲二区| 日本在线天堂| 欧美日韩在线播放三区四区| 性高潮久久久久久久| 国产精品日韩精品欧美精品| 国产精品三区在线| 最新国产露脸在线观看| 777a∨成人精品桃花网| 日韩免费av一区| 秋霞影院一区二区| 偷拍视频一区二区| 91精品xxx在线观看| 亚洲人成在线一二| 亚洲成人av影片| 久久久久国产精品免费免费搜索| 浮妇高潮喷白浆视频| 欧美日韩一区二区三区四区不卡| 久久免费观看视频| 人妻一区二区三区| 亚洲国产综合91精品麻豆| 老熟女高潮一区二区三区| 欧美激情日韩| 国产精品9999久久久久仙踪林| 亚洲男同gay网站| 精品少妇一区二区三区在线播放| 欧美日韩在线视频免费播放| 国产aⅴ精品一区二区三区色成熟| 永久免费网站视频在线观看| 一区二区三区视频免费视频观看网站| 欧美精品在线免费播放| 成人乱码一区二区三区| 午夜日韩在线电影| 法国伦理少妇愉情| 奇米影视一区二区三区| 香蕉视频在线网址| 欧美午夜网站| 91精品国产91久久| 九色网友自拍视频手机在线| 欧美日韩免费观看一区三区| 国产极品国产极品| www.在线成人| 韩国视频一区二区三区| 99视频精品视频高清免费| 官网99热精品| 芒果视频成人app| 中文字幕亚洲字幕| 超碰福利在线观看| 午夜精品影院在线观看| 免费观看a级片| 国产乱码字幕精品高清av| 欧美精品久久久久久久免费| 精品视频亚洲| αv一区二区三区| 欧美亚洲韩国| 欧美黑人巨大精品一区二区| 天堂在线中文| 91精品国产综合久久精品图片| 国产一级视频在线观看| 久久久久久久久岛国免费| 激情文学亚洲色图| 亚洲一区二区毛片| 免费成人深夜夜行网站视频| 噜噜噜狠狠夜夜躁精品仙踪林| 国产精品高清免费在线观看| 污的网站在线观看| 亚洲欧美色婷婷| av男人天堂av| 在线观看国产精品网站| 国产亚洲精品女人久久久久久| 久久久久久亚洲综合影院红桃| 中文字幕亚洲乱码| 国产日韩精品视频一区二区三区| 影音欧美亚洲| 免费视频亚洲| 国产精品中出一区二区三区| 欧美影视资讯| 97超碰国产精品女人人人爽| 黄网站在线播放| 亚洲欧美国产一本综合首页| 精品人妻久久久久一区二区三区| 色综合欧美在线| 强乱中文字幕av一区乱码| 国产女同互慰高潮91漫画| 亚洲香蕉中文网| 国产一区二区在线观看免费| 欧美牲交a欧美牲交aⅴ免费真| 午夜激情一区| 亚洲亚洲精品三区日韩精品在线视频| 日韩激情毛片| 国产精品区一区| 国产一区二区三区| 国产精品尤物福利片在线观看| 精精国产xxxx视频在线野外| 欧美成人精品在线观看| 午夜免费福利在线观看| 亚洲欧美福利视频| 爽爽视频在线观看| 欧美大片日本大片免费观看| 国产精品视频在线观看免费 | 亚洲欧美中日韩| 51妺嘿嘿午夜福利| 99国产精品国产精品毛片| 绯色av蜜臀vs少妇| 国产成人在线网站| 欧美国产在线一区| 精品写真视频在线观看| 亚欧激情乱码久久久久久久久| 水野朝阳av一区二区三区| 无码人妻丰满熟妇区96| 99riav1国产精品视频| 老子影院午夜伦不卡大全| 欧美日韩免费观看一区=区三区| 中文字幕av久久| 久久精品亚洲欧美日韩精品中文字幕| 亚洲午夜精品一区二区三区| 99成人在线视频| 中文字幕制服丝袜在线| 国产精品久久久久无码av| 日韩在线电影一区| 久久视频精品| 欧美日韩一级在线| 欧美日韩一区二区三区四区在线观看| 99亚洲国产精品| 欧美精品97| 国产天堂视频在线观看| 在线日本成人| 黄色片一级视频| 青青草原综合久久大伊人精品优势| 五月天婷婷激情视频| 麻豆极品一区二区三区| caoporm在线视频| 国产精品一区二区免费不卡| 免费黄视频在线观看| 成人av电影在线播放| 黄色片视频免费观看| 久久看人人爽人人| 内射毛片内射国产夫妻| 亚洲欧美一区二区不卡| 国产 日韩 欧美 成人| 色综合天天综合网天天狠天天| 中文 欧美 日韩| 日韩西西人体444www| 神马午夜电影一区二区三区在线观看| 亚洲欧美一区二区三区久久| 在线观看黄色av| 久久久久久亚洲精品| 日韩在线免费| 51精品国产人成在线观看 | 国产一区二区三区影院| 色婷婷精品大在线视频| 99国产精品欲| 日韩激情av在线免费观看| 最新真实国产在线视频| 久久久久亚洲精品| 超薄肉色丝袜脚交一区二区| 成人免费激情视频| 天海翼精品一区二区三区| 一区二区免费在线观看| 亚洲午夜电影| 国产熟人av一二三区| 国产精品一区一区| 91视频在线网站| 一区二区三区四区不卡在线| 成人免费毛片视频| 欧美一二三在线| 你懂的在线视频| 欧美日韩xxx| 九七电影院97理论片久久tvb| 国产精品二区三区| 日韩精品欧美激情一区二区| 国产伦精品一区二区三区四区视频_| 青青草国产成人av片免费| 欧美做受高潮中文字幕| 国产精品国产自产拍在线| 亚洲综合一二三| 欧美精三区欧美精三区| 九色在线免费| 国外成人性视频| 豆花视频一区| 图片区小说区区亚洲五月| 国产视频亚洲| 美女久久久久久久久| 亚洲欧美日韩国产成人精品影院| 91久久国产综合久久91| 亚洲成人网在线观看| 久久精品视频免费看| 国产精品久久久久久久久久新婚| 国产精品午夜av| 日本精品福利视频| 久久国产乱子精品免费女| 在线免费观看污视频| 亚洲精品国产成人久久av盗摄| 亚洲一级视频在线观看| 亚洲丝袜一区在线| 免费h在线看| 国产三区二区一区久久| 午夜国产精品视频| 亚欧精品在线视频| 中文字幕色av一区二区三区| 中文字幕国产在线观看| 亚洲激情自拍图| 成人影院在线播放| 国产98在线|日韩| 欧美国产另类| 午夜视频在线免费看| 综合久久久久综合| ,一级淫片a看免费| 日韩在线免费av| 亚洲一区二区三区久久久| 亚洲最大色综合成人av| 麻豆精品在线视频| 天天色天天综合| 欧美久久久久久久久久| 国产原创在线观看| 91日本视频在线| 午夜精品免费| 中文字幕制服丝袜| 亚洲一线二线三线视频| 性欧美videos另类hd| 欧美激情亚洲另类| 超碰一区二区三区| 亚洲 欧美 日韩 国产综合 在线 | 欧美成ee人免费视频| 亚洲欧美日韩国产一区| 中文字幕第20页| 欧美日韩一级黄| 成人免费高清| 国产精品亚洲不卡a| 亚洲深夜激情| 一级黄色性视频| 欧美日韩精品久久久| 视频在线观看入口黄最新永久免费国产 | 91在线视频免费观看| 无码人妻丰满熟妇精品区| 在线视频免费一区二区| 成人免费观看49www在线观看| 超碰97在线看| 91丨九色丨蝌蚪丨老版| 久草热在线观看| 久久91超碰青草是什么| 欧美美女在线直播| 天堂视频免费看| 亚洲国产精品久久一线不卡| 激情视频在线观看免费| 国产在线观看精品| 在线日韩中文| 337人体粉嫩噜噜噜| 日韩欧美精品在线| gay欧美网站| 艳母动漫在线免费观看| 97se亚洲国产综合自在线观| 国产第一页在线观看| 久久影院模特热| 最新国产精品视频| 中文字幕12页| 欧美视频二区36p| av在线三区| 国产精品露出视频| 免费观看一级特黄欧美大片| 精品一区二区三区四| 一区二区三区视频免费| 97久久综合精品久久久综合| 国产一线二线三线在线观看| 一区二区三区蜜桃网| 不卡在线视频| 国产福利不卡| 久久国产三级精品| 青青草av在线播放| 久久久国产成人精品| 韩日一区二区三区|