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

互聯網大廠是如何設計和使用緩存的?方案已開源!

存儲 存儲架構
以秒殺系統為例,采用本地緩存+分布式緩存的混合型緩存方案時,如果整個秒殺系統前置的流量管控、流量清洗和限流等是秒殺系統流量洪峰的第一道防線,則本地緩存就是抗流量洪峰的第二道防線,而分布式緩存就是第三道防線,經過層層流量過濾,最終進入數據庫的流量就比較可控了。

最近,有小伙伴私信我:冰哥,我最近出去面試,面試官問我如何設計緩存能讓系統在百萬級別流量下仍能平穩運行,我當時沒回答上來。接著,面試官問我之前的項目是怎么使用緩存的,我說只是緩存了一些數據。當時確實想不到緩存還有哪些用處,估計這次面試是掛了。冰哥,你可以給我講講互聯網大廠項目是怎么設計和使用緩存的嗎?

本文緩存方案已經開源,開源地址如下,如果開源方案對你有點幫助或者啟發,歡迎在代碼倉庫給個Star,讓更多的小伙伴看到它,互相學習,一起進步。

  • GitHub:https://github.com/binghe001/spring-redis
  • Gitee:https://gitee.com/binghe001/spring-redis
  • GitCode:https://gitcode.net/binghe001/spring-redis

一、前言

通過這位小伙伴的自述,我們明顯感受到這位小伙伴對緩存的認識還是停留在簡單的存儲數據上,沒有對使用緩存背后的場景和實現邏輯進行深層次的思考。在互聯網大廠項目中,緩存也是一種必不可少的組件,那使用緩存僅僅是為了緩存熱點數據,提升讀性能嗎?如果你對緩存的認識只是停留在這里,那就未免太膚淺了。

今天,我們就以高并發、大流量業務場景中最具代表性的 秒殺系統 為例,采用市面上大家都比較熟悉的技術,一起探究下 秒殺系統 背后是如何設計和使用緩存的。

二、秒殺系統緩存核心訴求

秒殺系統在承接瞬時高并發流量時,如果將流量直接打到數據庫,那數據庫很有可能因為扛不住瞬間的高并發流量而導致崩潰和宕機。所以,需要對秒殺系統進行極致的緩存設計,讓大部分流量走緩存。

同時,在設計緩存架構方案時,為了進一步提升性能,將采用 本地緩存+分布式緩存的混合型緩存 設計方案,讓本地緩存抗大部分流量,分布式緩存次之,數據庫再次之,如圖1所示

圖片圖片

并且針對秒殺系統這種瞬時并發量高的場景,在設計緩存時,需要注意的技巧:優先讀取本地緩存數據,如果本地緩存失效,則讀取分布式緩存數據,并且在同一時刻,只能有一個線程更新本地緩存,防止緩存擊穿。

沒有獲取到本地緩存更新機會的其他線程,需要立即返回而不是原地等待。如果分布式緩存失效時,在同一時刻,也只能有一個線程更新分布式緩存,防止緩存擊穿。沒有獲取到分布式緩存更新機會的線程,也需要立即返回而不是原地等待。

另外,需要注意的是:我們提出了采用 本地緩存+分布式緩存的混合型緩存設計方案,后文會著重對這種設計進行說明。

三、秒殺系統緩存使用場景

秒殺系統屬于典型的讀多寫少的高并發系統,應對這種場景的一個有效措施就是使用緩存,不管是單機JVM緩存還是以Redis為例的分布式緩存,其讀寫性能都會比數據庫高得多。所以,在秒殺系統中,為了應對高并發、大流量的業務場景,緩存自然也就成為建設秒殺系統過程中必不可少的環節。

3.1 秒殺系統接口分析

在秒殺系統中,主要是對一些讀數據的接口設計緩存策略,而在這些讀數據的接口中,獲取秒殺活動列表、獲取秒殺活動詳情、獲取秒殺商品列表和獲取秒殺商品詳情的接口流量比其他接口高。

尤其是獲取秒殺商品列表和獲取秒殺商品詳情的接口QPS一般會高于獲取秒殺活動列表和秒殺活動詳情的接口,畢竟大部分用戶在秒殺開始前就已經進入到秒殺詳情頁,當然這也不是絕對的,還是要看秒殺系統對于這些接口的設計。

3.2 秒殺系統緩存場景

盡管獲取秒殺商品列表和獲取秒殺商品詳情的接口QPS一般會高于獲取秒殺活動列表和秒殺活動詳情的接口。

但是我們在設計緩存時,需要對這些接口一視同仁,都要以嚴格的高標準來設計這些接口,不然稍有不慎,一個接口出現問題,就可能導致整場秒殺活動以失敗告終。秒殺系統緩存的使用場景如圖2所示。

圖片圖片

所以,在秒殺系統中,會對獲取秒殺活動列表、獲取秒殺活動詳情、獲取秒殺商品列表和獲取秒殺商品詳情的接口設計緩存策略。

四、混合型緩存設計

總體來說,在設計秒殺系統的緩存過程中,會采用 本地緩存+分布式緩存的混合型緩存 設計方案。其中,本地緩存指的就是單機緩存,比如JVM內存緩存,單機Cache緩存。分布式緩存指的是以分布式的方式集中管理的緩存,比如Memcached、Redis等,如圖3所示。

圖片圖片

4.1 抗流量洪峰

良好的緩存設計不僅僅能夠提升系統的總體性能,還能作為抗瞬時流量洪峰的有效防線。

可以這么說,如果整個秒殺系統前置的流量管控、流量清洗和限流等是秒殺系統流量洪峰的第一道防線,則本地緩存就是抗流量洪峰的第二道防線,而分布式緩存就是第三道防線,如圖4所示。

圖片圖片

使用緩存能夠抗一定的流量洪峰,經過前置的流量管控、流量清洗和限流等措施的第一道防線、本地緩存的第二道防線、分布式緩存的第三道防線,真正進入數據庫的流量就會比較小了。

4.2 緩存集群方案

從緩存集群模式的角度去分析,每臺服務器甚至JVM實例都會擁有自己獨立的本地緩存,在承載大并發流量時,,以本地緩存為主,分布式緩存次之,如圖5所示。

圖片圖片

可以看到,從緩存的集群模式角度來看,每臺服務器都會自己獨立本地緩存,除了前置的流程管控、流量清洗和限流等措施構筑的流量洪峰第一道防線外。本地緩存會承接剩余的大部分流量,構筑成流量洪峰的第二道防線,而分布式緩存則是流量洪峰的第三道防線。

并且在緩存的設計上,分布式緩存的作用主要是協調和同步最新數據到本地緩存。

也就是說,只有本地緩存失效時,才會訪問分布式緩存,將分布式緩存中的數據更新到本地緩存中,并且同一時刻只能有一個線程對本地緩存進行更新操作,以避免多個線程并發更新本地緩存。

同樣的,如果分布式緩存失效,則同一時刻只能有一個線程訪問數據庫來獲取對應的數據,并將其更新到分布式緩存。

在集群模式下,我們應該盡最大努力將流量攔截在本地緩存,避免過多的請求訪問分布式緩存,提高秒殺系統的性能,并且降低秒殺系統由于大量的遠程IO導致的各種風險。

4.3 緩存交互流程

采用本地緩存+分布式緩存的混合型緩存架構設計方案時,在讀取緩存數據時,會優先讀取本地緩存的數據,如果本地緩存未開啟,或者已經失效,此時就會使用分布式緩存。

也就是說,優先讀取本地緩存中的數據,如果本地緩存未開啟或者緩存數據失效,則讀取分布式緩存中的數據,如圖6所示。

圖片圖片

可以看到,只有在本地緩存未開啟或者緩存失效的情況下,才會去訪問分布式緩存,讀取分布式緩存中的數據,并且在同一個時刻只能有一個線程更新本地緩存中的數據,這種方式可以最大限度減少遠程IO為秒殺系統帶來的風險。具體的流程如下所示。

(1)判斷本地緩存是否開啟,如果開啟則進行第2步,否則進行第4步。

(2)判斷本地緩存是否失效,如果未失效,則進行第3步,否則進行第4步。

(3)讀取本地緩存數據,讀取緩存流程結束。

(4)判斷分布式緩存是否開啟,如果開啟則進行第5步,否則進行第7步。

(5)判斷分布式緩存是否失效,如果未失效,則進行第6步,否則進行第7步。

(6)讀取分布式緩存數據,同一時刻只有一個線程更新本地緩存數據,讀取緩存流程結束。

(7)讀取數據庫數據,同一時刻只有一個線程更新分布式緩存數據,讀取緩存流程結束。

這里,有一個設計技巧需要大家注意:如果本地緩存失效,并且某個線程沒有獲取到更新本地緩存的機會,這個線程需要立即返回而不是在原地阻塞等待,這種方式可以最大限度的節省服務器資源和線程切換的成本,尤其是像在秒殺系統這種承接瞬時高并發流量的系統中,這種設計能夠節省不少服務器資源。

這種線程未獲取到更新數據的機會而快速返回的機制,需要客戶端配合在適配處理,也就是說,客戶端對這種情況需要進行靜默處理,不要提示錯誤信息,也不做其他處理,稍后重新調用接口進行重試即可。

4.4 混合型緩存設計的優點

采用本地緩存+分布式緩存的混合型緩存架構設計方案存在諸多的優點。其中,本地緩存一個很大的優勢就在于不會發生遠程IO操作,性能更高,有利于服務的橫向伸縮,大部分請求會命中本地單機緩存。這里,我們可以從整體的請求鏈路上進行分析。

例如,當前請求鏈路上需要讀取5次分布式緩存中的數據,這樣,如果秒殺系統承接了100萬的請求,則會產生500萬讀取分布式緩存的IO操作。這成倍的IO風險對于秒殺系統來說,是絕對不能忽視的風險因素,如圖7所示。

圖片圖片

可以看到,一次請求會訪問5次分布式緩存,這在無形當中就增加了分布式緩存的IO成本,這對秒殺系統來說,是不容忽視的風險項,稍有不慎,則系統可能會由于IO瓶頸引發各種事故,最終造成系統崩潰或者宕機。所以,在設計秒殺系統時,一定要注意這種放大效應帶來的風險。

因此,在高并發大流量的場景下,很有必要精心的設計本地緩存。

五、緩存刷新機制

數據存放到緩存中,并不是一成不變的,也不會永久存放到緩存中。也就是說,存放到緩存中的數據終歸是要失效或者過期的,也就是存放到緩存中的數據會有相應的生命周期。

為此需要以一定的策略對緩存中的數據進行刷新操作,以防止緩存中的數據長時間過期而導致大部分流量直接打入數據庫。

本節,就從本地緩存和分布式緩存兩個角度簡單聊聊緩存的生命周期。

5.1 本地緩存刷新機制

假設本地緩存基于Guava Cache實現,在設計本地緩存時,本地緩存的容量不宜過大,有效時長不宜過大,并且在設計本地緩存時,可以基于版本號機制來實現緩存的失效策略。

對于本地緩存會實現兩種刷新機制:

(1)主動刷新

請求接口傳入的版本號如果大于本地緩存中的版本號,說明本地緩存已經失效,此時,就需要從分布式緩存中重新獲取數據進行刷新。

(2)被動刷新

本地緩存自動過期,被動從緩存中移除,此時,需要從分布式緩存中重新獲取數據進行刷新。

5.2 分布式緩存刷新機制

假設分布式緩存基于Redis實現,對于分布式緩存來說,也需要設置緩存的過期時間,不能讓緩存數據永久性駐留到Redis中。相比于本地緩存來說,分布式緩存的過期時間要稍微長一些,并且分布式緩存在刷新機制上與本地緩存略有不同。

(1)主動刷新

業務數據變更驅動刷新分布式緩存數據。當業務數據發生變更時,會主動刷新分布式緩存中的數據。

(2)被動刷新

可以基于Redis提供的緩存過期策略,比如基于LRU、TTL等策略淘汰緩存中的數據。后續在訪問分布式緩存中的數據時,如果檢測到分布式緩存中的數據已經過期,則會使用一個線程來刷新分布式緩存中的數據。

六、數據一致性

可以這么說,只要系統中使用了緩存,就或多或少會涉及到數據一致性的問題,在秒殺系統中,數據一致性的問題主要包括:本地緩存與分布式緩存數據一致性問題,緩存與數據庫數據一致性問題。同時,在數據一致性保證方面,就包括強一致性保證和弱一致性保證。

6.1 強一致性保證

CAP理論為數據的強一致性奠定了理論基礎,但是CAP理論下的數據強一致性,很難做到既保證系統高性能的同時,又要保證數據的絕對一致。在秒殺系統的設計中,我們會將數據的強一致性保證交給數據庫和業務規則來實現,在業務規則層面結合數據庫來實現強一致。

例如,假設用戶在搶購秒殺商品中,緩存中存在商品庫存,通過了緩存中的校驗邏輯。在真正下單時,還要校驗數據庫中的商品庫存,如果此時數據庫中已經沒有商品剩余庫存了,則終止下單邏輯,提示用戶商品已售罄。

6.2 弱一致性保證

強一致性保證交由業務規則和數據庫共同約束實現,緩存層面的數據就可以實現為弱一致性。

也就是說,在很小的一段時間內,允許緩存中的數據存在延遲,允許緩存中的數據與數據庫中的數據在短時間內的不一致,只要在可接受的時間范圍內最終達到一致即可。

充分發揮緩存的實際作用,即:緩存數據,提供系統的讀寫性能和抗系統流量。

七、緩存落地實現

在秒殺系統中本地緩存和分布式緩存相結合,能夠抗住進入秒殺系統內部的大部分流量。并且在技術選型上,假設本地緩存默認基于Guava Cache實現,分布式緩存默認基于Redis實現。

并且本地緩存不僅僅只是支持Guava Cache,分布式緩存不僅僅只是支持Redis,在代碼層面,都是面向接口編程,而非面向具體實現類編程,不管是本地緩存還是分布式緩存,都可以根據簡單的配置切換具體的實現方式。

7.1 擴展性描述

代碼具備良好的擴展性,后續維護和升級的成本就比較低。相反,如果代碼寫的雜亂無章,猶如“屎山”,那后期維護起來是相當痛苦的,誰也不想天天面對著一堆“屎山”,哪來有問題改哪里。

所以,從一開始寫的代碼就要有良好的擴展性,方便后期的維護和升級。

假設秒殺系統整體基于SpringBoot+SpringCloud Alibaba技術棧實現,那如何寫代碼具備良好的擴展性呢?

總體的原則就是面向接口編程,而非面向具體的實現類編程,具體業務邏輯里依賴的是接口,而非實現類,在接口不變的前提下,可以隨時切換具體的實現類,也可以隨時新增接口的實現類。業務中可以根據配置加載接口的某個具體實現類。

7.2 本地緩存落地實現

本地緩存的落地實現示意圖如圖8所示。

圖片圖片

可以看到,具體秒殺業務中會依賴本地緩存的接口,而非具體的實現類。

本地緩存的接口可以有多個實現類,在秒殺業務中可以根據具體的配置項指定要加載并使用哪個實現類,也可以根據具體的需求和業務場景隨時新增本地接口的實現類,大大提高了程序的擴展性。

7.3 分布式緩存落地實現

分布式緩存的落地實現示意圖如圖9所示。

圖片圖片

可以看到,分布式緩存在擴展性方面的設計與本地緩存類似,同樣是秒殺系統在具體業務中依賴分布式緩存的接口,而非分布式緩存的具體實現類。

分布式緩存的接口可以有多個實現類,在秒殺業務中可以根據具體的配置項加載并實例化具體的實現類,也可以根據具體的需求和業務場景新增分布式緩存接口的實現類,提高了實現分布式緩存程序的擴展性。

八、總結

緩存不僅僅可以用來存儲熱點數據,提升熱點數據的讀性能,還是業務系統中抗高并發、大流量的利器。

以秒殺系統為例,采用本地緩存+分布式緩存的混合型緩存方案時,如果整個秒殺系統前置的流量管控、流量清洗和限流等是秒殺系統流量洪峰的第一道防線,則本地緩存就是抗流量洪峰的第二道防線,而分布式緩存就是第三道防線,經過層層流量過濾,最終進入數據庫的流量就比較可控了。

同時,引入本地緩存+分布式緩存的混合型緩存方案后,要考慮緩存的刷新機制,數據一致性問題,在代碼落地的過程中,還要最大程度避免緩存穿透、擊穿和雪崩問題,并實現代碼的高度可擴展性。

在提供的開源方案中,已經解決了緩存穿透、擊穿和雪崩問題,開源地址如下:

  • GitHub:https://github.com/binghe001/spring-redis
  • Gitee:https://gitee.com/binghe001/spring-redis
  • GitCode:https://gitcode.net/binghe001/spring-redis

如果開源方案對你有點幫助或者啟發,歡迎在代碼倉庫給個Star,讓更多的小伙伴看到它,互相學習,一起進步。

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2024-06-03 08:01:20

2021-12-16 10:32:04

APP會員互聯網大廠用戶

2022-02-24 11:05:06

互聯網加班科技

2022-01-05 16:45:22

互聯網裁員危機

2022-08-31 16:17:21

造芯互聯網公司大廠

2022-06-01 20:24:25

互聯網元宇宙大廠

2020-02-23 17:39:21

互聯網復工公司

2021-12-14 15:27:48

互聯網程序員裁員

2020-07-19 10:06:02

互聯網數據技術

2018-12-17 08:14:49

互聯網Java Kafka

2020-12-30 05:36:59

分庫分表存儲

2019-10-25 15:50:06

MySQL數據庫命令

2018-08-23 09:06:18

互聯網百度面試

2021-11-22 10:03:47

互聯網薪資技術

2023-01-17 09:41:26

Redis接口限流

2023-05-02 22:38:46

JVMJVM調優

2023-03-07 08:22:34

MySQL優化器

2019-12-11 15:45:49

互聯網數據技術

2022-01-24 10:46:40

互聯網裁員

2021-06-28 08:57:29

快手騰訊員工
點贊
收藏

51CTO技術棧公眾號

亚洲第一av| 国产精品久久久久久久久| 91久久精品www人人做人人爽| 国产成人精品一区二区三区在线观看 | 精品在线播放免费| 亚洲黄色成人网| 一区二区不卡在线视频 午夜欧美不卡'| 久久亚洲精品大全| 国产麻豆精品| 国产蜜臀av在线一区二区三区| 欧美巨大黑人极品精男| 无人在线观看的免费高清视频| 99草在线视频| 成人情趣视频网站| 色综合久久久久久久久久久| 动漫一区二区在线| 在线观看美女av| av成人亚洲| 久久久久久影视| 97在线免费观看视频| japan高清日本乱xxxxx| 日本福利专区在线观看| av成人在线观看| 亚洲精品中文在线影院| 国产精品在线看| 色一情一交一乱一区二区三区 | 四虎精品欧美一区二区免费| 亚洲视屏在线观看| 亚洲另类春色校园小说| 亚洲成人av在线电影| 99re视频| 久久国产在线观看| 国产成人高清精品免费5388| 亚洲主播在线观看| 粉嫩av免费一区二区三区| 999视频在线| 欧美精选视频在线观看| 欧美色爱综合网| 亚洲欧洲精品在线观看| 在线免费看av的网站| 久久中文字幕二区| 欧美一区二区三区不卡| 在线观看av的网址| av电影在线观看网址| 免费高清在线视频一区·| 色偷偷av一区二区三区| 欧美视频亚洲图片| 日本欧美电影在线观看| 成人综合在线观看| 91精品国产色综合久久不卡98口| 国产麻豆天美果冻无码视频| 欧美magnet| 久久久无码精品亚洲日韩按摩| 亚洲综合av影视| 亚洲精品在线观看av| 日韩av字幕| 精品av在线播放| 日韩激情久久| 一炮成瘾1v1高h| 欧美在线二区| 亚洲精品福利免费在线观看| 自拍偷拍激情视频| 精品视频在线观看免费观看| 亚洲国产精品一区二区久久 | 性欧美大战久久久久久久| 亚洲av成人精品毛片| 青青草91视频| 久久99精品视频一区97| 日本激情视频一区二区三区| 中文字幕日韩高清在线| 欧美性猛交xxxx黑人| 一区二区视频在线观看| 蜜桃久久一区二区三区| 日本大胆欧美人术艺术动态| 日本精品免费观看| 国产午夜手机精彩视频| 91成人网在线观看| 日韩高清a**址| 中文字幕 91| 大香伊人中文字幕精品| 亚洲国产高清在线观看视频| 99影视tv| 好吊色一区二区| 激情成人综合网| 欧洲中文字幕国产精品| 老妇女50岁三级| 不卡在线一区二区| 色爱av美腿丝袜综合粉嫩av | 国产精品中文字幕亚洲欧美| 欧美一区二区观看视频| 日韩欧美理论片| 视频一区视频二区欧美| 欧美性色欧美a在线播放| 日韩精品在线视频免费观看| 亚洲搞黄视频| 亚洲天堂中文字幕| 日韩久久不卡| 欧美成人精品一区二区男人看| 亚洲天堂免费看| 国产在线精品91| 国产电影一区二区三区爱妃记| 亚洲成a人片综合在线| 色综合久久av| 青青青免费视频在线2| 成人h动漫精品一区二区 | 电影一区二区三区久久免费观看| 日韩视频免费直播| wwwwwxxxx日本| 99re66热这里只有精品4| 黑人狂躁日本妞一区二区三区| 青青草综合在线| 国产秀色在线www免费观看| 亚洲国产成人午夜在线一区| 91制片厂免费观看| 日本在线免费中文字幕| 亚洲观看高清完整版在线观看| 四虎永久在线精品无码视频| 悠悠资源网亚洲青| 91麻豆精品国产91久久久久久久久 | 成人毛片在线精品国产| 久久久久久久久久久电影| 日本丰满大乳奶| 福利片一区二区| 亚洲一区二区三区在线看 | 国产精品一区二区精品| 日韩精品中文字幕在线| 韩国三级hd两男一女| 国产一区二区av在线| 亚洲免费福利视频| 少妇按摩一区二区三区| 加勒比久久高清| 亚洲精品国精品久久99热一| 日韩在线不卡av| 久久精品盗摄| 国产精品毛片a∨一区二区三区|国| 国产成人一级片| 水野朝阳av一区二区三区| 国产97在线播放| 亚洲乱熟女一区二区| 国产精品美女久久久久av爽李琼| 亚洲欧洲精品一区二区三区波多野1战4 | 第一福利在线| 国产亚洲人成网站| 亚洲成色www久久网站| 18aaaa精品欧美大片h| 午夜精品一区二区三区免费视频| 91看片破解版| 无码国模国产在线观看| 久久久av网站| 久久精品国产亚洲AV无码麻豆| 极品少妇xxxx精品少妇| 神马欧美一区二区| 国产成人免费9x9x人网站视频| 亚洲激情成人网| 精品在线视频免费观看| 国产a久久麻豆| 久久国产精品久久精品国产| 久久精品a一级国产免视看成人 | www在线播放| 国产精品毛片久久久久久久| 欧美精品成人网| 色婷婷av一区二区三区丝袜美腿 | 日本乱码一区二区三区不卡| 色丁香久综合在线久综合在线观看| 日本激情视频在线| 日本免费精品| 久久精品影视伊人网| 国产女人18毛片水真多| 日韩一区在线免费观看| 久久综合九色综合88i| 看片一区二区| 亚洲第一福利视频| 99精品中文字幕| 亚洲狼人精品一区二区三区| 国产精品日韩在线播放| av网页在线| 欧美区视频在线观看| 亚洲狠狠婷婷综合久久久久图片| 一本色道久久精品| 91在线高清视频| 玖玖综合伊人| 一卡二卡三卡日韩欧美| 国产精品日日摸夜夜爽| 成人在线丰满少妇av| 91欧美激情另类亚洲| 日本理论片午伦夜理片在线观看| 亚洲第一男人av| 久久亚洲天堂网| 国产激情精品久久久第一区二区| 色狠狠久久av五月综合|| 国产91精品在线| 久久这里只有精品视频首页| 五月天中文字幕| 18欧美亚洲精品| 日韩成人av影院| 亚洲欧美日本日韩| 国内外成人免费视频| 在线观看av免费| 欧美欧美欧美欧美首页| 久久亚洲AV成人无码国产野外| 日韩中文字幕不卡| 久久偷窥视频| av不卡高清| 国产一区二区三区在线视频| 国产免费一级视频| 中文字幕一区二区三区蜜月| 国产一线二线三线在线观看| 欧美va天堂在线| 美日韩免费视频| 日韩午夜电影免费看| 中文字幕日韩专区| 91精品专区| 91视视频在线观看入口直接观看www | 男人天堂亚洲天堂| 欧美日韩国产成人在线91 | 亚洲一区二区三区视频在线播放| 噜噜噜在线视频| 久久国产精品无码网站| 日日橹狠狠爱欧美超碰| 91精品电影| 日韩av高清在线播放| 97久久超碰| 欧美精品做受xxx性少妇| 国产精品永久久久久久久久久| 日本一区二区三级电影在线观看 | 成人国产精品入口免费视频| 欧美激情一二三| 亚洲av色香蕉一区二区三区| 亚洲免费色视频| 免费看91的网站| 男女男精品视频网| 日本wwww视频| 国产精品一区二区av日韩在线| 99国精产品一二二线| 97精品国产综合久久久动漫日韩 | 久久久久国产一区二区| 久久在线中文字幕| 亚洲精品成人影院| 亚洲欧美日韩另类精品一区二区三区| 日韩啪啪网站| 国产日韩一区二区| 1313精品午夜理伦电影| 国产精品偷伦视频免费观看国产| 美女福利一区二区| 日韩中文娱乐网| 免费黄网站在线观看| 亚洲第一级黄色片| 亚洲高清视频网站| 日韩精品中文字幕一区二区三区| 久草资源在线视频| 亚洲欧美精品午睡沙发| 三级黄色在线观看| ●精品国产综合乱码久久久久| 山东少妇露脸刺激对白在线| 韩国视频一区二区| 九九热99视频| 久久福利资源站| 亚洲精品久久久久久宅男| 日本欧美加勒比视频| 另类小说色综合| 欧美视频不卡| 欧美一区二区三区四区夜夜大片| 成人国产在线| 国产精品美女av| 免费日韩成人| 亚洲一区二区日本| 91麻豆精品国产91久久久久推荐资源| 999视频在线免费观看| 日韩一二三区在线观看| 国产成人亚洲欧美| 极品束缚调教一区二区网站 | 免费看日本一区二区| 91在线网站视频| 欧美高清hd| 风间由美久久久| 欧美一级三级| 日韩精品av一区二区三区| 日韩精品dvd| 精品伊人久久久久7777人| 日本中文字幕精品—区二区| 精品一区二区影视| 色综合久久久无码中文字幕波多| 成人深夜视频在线观看| 一区二区三区少妇| 国产午夜一区二区三区| 午夜成人亚洲理伦片在线观看| 亚洲欧美色图小说| 日本少妇做爰全过程毛片| 亚洲欧洲成人自拍| 妺妺窝人体色www在线下载| 欧美日韩亚洲激情| 亚洲自拍偷拍另类| 精品国产免费人成电影在线观看四季 | 免费黄网在线观看| 久久久久久久国产精品视频| 中日韩脚交footjobhd| 国产精品一区二区三区成人| 亚洲一区电影| 日本一区二区三区四区高清视频| 天天天综合网| 婷婷四月色综合| 亚洲国产精品91| 国产精品999视频| 麻豆一区二区三区| 亚欧在线免费观看| 国产成人在线看| 久久久久久久久久久国产精品| 中文字幕佐山爱一区二区免费| 国产特黄大片aaaa毛片| 亚洲福利视频三区| 91麻豆精品在线| 精品欧美一区二区久久| www.五月婷| 欧美本精品男人aⅴ天堂| 青草久久伊人| 久久99视频精品| 日韩精品一区二区三区av| 高清视频在线观看一区| 日韩激情一区| 欧美日韩一道本| 国产精品一卡二| 中文字幕永久免费| 国产婷婷色一区二区三区| 久久久香蕉视频| 777亚洲妇女| 成人午夜电影在线观看| 91av视频导航| 久久综合给合| 亚洲图片都市激情| 石原莉奈在线亚洲二区| 欲求不满的岳中文字幕| 久久综合久久综合久久综合| 国产av自拍一区| 亚洲国产精品久久久久秋霞影院| 一级黄色大片免费| 亚洲人成电影网站色…| 国产毛片av在线| 性色av一区二区三区在线观看| 欧美二区观看| 中文字幕在线中文| 国产一区二区三区四区在线观看 | 99久久亚洲国产日韩美女 | 免费观看黄色一级视频| 久久国产精彩视频| 精品国产三级| 手机成人av在线| 激情综合色综合久久| 婷婷综合在线视频| 亚洲资源中文字幕| 午夜精品久久久久久久第一页按摩| yellow中文字幕久久| free性欧美| 岛国视频一区免费观看| 欧美日韩一区二区三区四区在线观看 | 青青久久av北条麻妃黑人| 三级小说欧洲区亚洲区| 国产欧美日韩网站| 日本美女一区二区| 亚洲黄色网址大全| 欧美精品 日韩| 国产一二三区在线观看| 99久热re在线精品996热视频| 欧美日韩1区| 亚洲av成人片无码| 欧美国产成人在线| 一区二区乱子伦在线播放| 这里只有视频精品| 在线播放成人| 欧洲一区二区日韩在线视频观看免费| 久久av最新网址| 亚洲高潮女人毛茸茸| 欧美猛男超大videosgay| 中文字幕伦理免费在线视频| 99久re热视频这里只有精品6| 亚洲视频日本| 天堂av8在线| 亚洲精品成人少妇| 中日韩在线观看视频| 亚洲国产精品人久久电影| 国产在线88av| 亚洲一区中文字幕| 激情综合在线| 中文字幕在线观看日| 一区二区三区在线观看动漫 | 黄色污网站在线观看| 欧美xxxx黑人又粗又长密月| 蜜桃视频第一区免费观看| 久久精品黄色片| 欧美色倩网站大全免费| 麻豆传媒视频在线观看免费| 国产成人精品一区二区三区福利| 亚洲欧美视频| 女教师淫辱の教室蜜臀av软件| 精品久久久久久久久久久久久久久 | 欧美黄网免费在线观看| 黄色成人在线观看网站| 国产精品h视频| av欧美精品.com| 久久久久久久久久久网| 亚洲人成在线播放|