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

從構(gòu)建分布式秒殺系統(tǒng)聊聊限流特技

存儲(chǔ) 存儲(chǔ)軟件 分布式
俗話說(shuō)的好,冰凍三尺非一日之寒,滴水穿石非一日之功,羅馬也不是一天就建成的。兩周前秒殺案例初步成型,分享到了中國(guó)最大的同×××友網(wǎng)站-碼云。同時(shí)也收到了不少小伙伴的建議和投訴。我從不認(rèn)為分布式、集群、秒殺這些就應(yīng)該是大廠的專利,在互聯(lián)網(wǎng)的今天無(wú)論什么時(shí)候都要時(shí)刻武裝自己,只有這樣,也許你的春天就在明天。

前言

俗話說(shuō)的好,冰凍三尺非一日之寒,滴水穿石非一日之功,羅馬也不是一天就建成的。兩周前秒殺案例初步成型,分享到了中國(guó)***的同×××友網(wǎng)站-碼云。同時(shí)也收到了不少小伙伴的建議和投訴。我從不認(rèn)為分布式、集群、秒殺這些就應(yīng)該是大廠的專利,在互聯(lián)網(wǎng)的今天無(wú)論什么時(shí)候都要時(shí)刻武裝自己,只有這樣,也許你的春天就在明天。

在開發(fā)秒殺系統(tǒng)案例的過程中,前面主要分享了隊(duì)列、緩存、鎖和分布式鎖以及靜態(tài)化等等。緩存的目的是為了提升系統(tǒng)訪問速度和增強(qiáng)系統(tǒng)的處理能力;分布式鎖解決了集群下數(shù)據(jù)的安全一致性問題;靜態(tài)化無(wú)疑是減輕了緩存以及DB層的壓力。

[[233265]]

限流

然而再牛逼的機(jī)器,再優(yōu)化的設(shè)計(jì),對(duì)于特殊場(chǎng)景我們也是要特殊處理的。就拿秒殺來(lái)說(shuō),可能會(huì)有***別的用戶進(jìn)行搶購(gòu),而商品數(shù)量遠(yuǎn)遠(yuǎn)小于用戶數(shù)量。如果這些請(qǐng)求都進(jìn)入隊(duì)列或者查詢緩存,對(duì)于最終結(jié)果沒有任何意義,徒增后臺(tái)華麗的數(shù)據(jù)。對(duì)此,為了減少資源浪費(fèi),減輕后端壓力,我們還需要對(duì)秒殺進(jìn)行限流,只需保障部分用戶服務(wù)正常即可。

就秒殺接口來(lái)說(shuō),當(dāng)訪問頻率或者并發(fā)請(qǐng)求超過其承受范圍的時(shí)候,這時(shí)候我們就要考慮限流來(lái)保證接口的可用性,以防止非預(yù)期的請(qǐng)求對(duì)系統(tǒng)壓力過大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問,或者讓多余的訪問排隊(duì)等待服務(wù)。

限流算法

任何限流都不是漫無(wú)目的的,也不是一個(gè)開關(guān)就可以解決的問題,常用的限流算法有:令牌桶,漏桶。

令牌桶

令牌桶算法是網(wǎng)絡(luò)流量×××(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一種算法。典型情況下,令牌桶算法用來(lái)控制發(fā)送到網(wǎng)絡(luò)上的數(shù)據(jù)的數(shù)目,并允許突發(fā)數(shù)據(jù)的發(fā)送(百科)。

在秒殺活動(dòng)中,用戶的請(qǐng)求速率是不固定的,這里我們假定為10r/s,令牌按照5個(gè)每秒的速率放入令牌桶,桶中最多存放20個(gè)令牌。仔細(xì)想想,是不是總有那么一部分請(qǐng)求被丟棄。

漏桶

漏桶算法的主要目的是控制數(shù)據(jù)注入到網(wǎng)絡(luò)的速率,平滑網(wǎng)絡(luò)上的突發(fā)流量。漏桶算法提供了一種機(jī)制,通過它,突發(fā)流量可以被×××以便為網(wǎng)絡(luò)提供一個(gè)穩(wěn)定的流量(百科)。

令牌桶是無(wú)論你流入速率多大,我都按照既定的速率去處理,如果桶滿則拒絕服務(wù)。

應(yīng)用限流

Tomcat

在Tomcat容器中,我們可以通過自定義線程池,配置***連接數(shù),請(qǐng)求處理隊(duì)列等參數(shù)來(lái)達(dá)到限流的目的(圖片源自網(wǎng)絡(luò))。

Tomcat默認(rèn)使用自帶的連接池,這里我們也可以自定義實(shí)現(xiàn),打開/conf/server.xml文件,在Connector之前配置一個(gè)線程池:

  1. <Executor name="tomcatThreadPool" 
  2.         namePrefix="tomcatThreadPool-" 
  3.         maxThreads="1000" 
  4.         maxIdleTime="300000" 
  5.         minSpareThreads="200"/> 
  • name:共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。默認(rèn)值:None;
  • namePrefix:在JVM上,每個(gè)運(yùn)行線程都可以有一個(gè)name 字符串。這一屬性為線程池中每個(gè)線程的name字符串設(shè)置了一個(gè)前綴,Tomcat將把線程號(hào)追加到這一前綴的后面。默認(rèn)值:tomcat-exec-;
  • maxThreads:該線程池可以容納的***線程數(shù)。默認(rèn)值:200;
  • maxIdleTime:在Tomcat關(guān)閉一個(gè)空閑線程之前,允許空閑線程持續(xù)的時(shí)間(以毫秒為單位)。只有當(dāng)前活躍的線程數(shù)大于minSpareThread的值,才會(huì)關(guān)閉空閑線程。默認(rèn)值:60000(一分鐘)。
  • minSpareThreads:Tomcat應(yīng)該始終打開的最小不活躍線程數(shù)。默認(rèn)值:25。

配置Connector

  1. <Connector executor="tomcatThreadPool" 
  2.            port="8080" protocol="HTTP/1.1" 
  3.            connectionTimeout="20000" 
  4.            redirectPort="8443" 
  5.            minProcessors="5" 
  6.            maxProcessors="75" 
  7.            acceptCount="1000"/> 
  • executor:表示使用該參數(shù)值對(duì)應(yīng)的線程池;
  • minProcessors:服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處理請(qǐng)求的線程數(shù);
  • maxProcessors:***可以創(chuàng)建的處理請(qǐng)求的線程數(shù);
  • acceptCount:指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過這個(gè)數(shù)的請(qǐng)求將不予處理。

API限流

秒殺活動(dòng)中,接口的請(qǐng)求量會(huì)是平時(shí)的數(shù)百倍甚至數(shù)千倍,從而有可能導(dǎo)致接口不可用,并引發(fā)連鎖反應(yīng)導(dǎo)致整個(gè)系統(tǒng)崩潰,甚至有可能會(huì)影響到其它服務(wù)。

那么如何應(yīng)對(duì)這種突然事件呢?這里我們采用開源工具包guava提供的限流工具類RateLimiter進(jìn)行API限流,該類基于"令牌桶算法",開箱即用。

  1. /** 
  2.  * 自定義注解  限流 
  3.  */ 
  4. @Target({ElementType.PARAMETER, ElementType.METHOD}) 
  5. @Retention(RetentionPolicy.RUNTIME) 
  6. @Documented 
  7. public  @interface ServiceLimit { 
  8.      String description()  default ""

自定義切面

  1. /** 
  2.  * 限流 AOP 
  3.  */ 
  4. @Component 
  5. @Scope 
  6. @Aspect 
  7. public class LimitAspect { 
  8.     //每秒只發(fā)出100個(gè)令牌,此處是單進(jìn)程服務(wù)的限流,內(nèi)部采用令牌捅算法實(shí)現(xiàn) 
  9.     private static   RateLimiter rateLimiter = RateLimiter.create(100.0); 
  10.  
  11.     //Service層切點(diǎn)  限流 
  12.     @Pointcut("@annotation(com.itstyle.seckill.common.aop.ServiceLimit)")   
  13.     public void ServiceAspect() { 
  14.  
  15.     } 
  16.  
  17.     @Around("ServiceAspect()"
  18.     public  Object around(ProceedingJoinPoint joinPoint) {  
  19.         Boolean flag = rateLimiter.tryAcquire(); 
  20.         Object obj = null
  21.         try { 
  22.             if(flag){ 
  23.                 obj = joinPoint.proceed(); 
  24.             } 
  25.         } catch (Throwable e) { 
  26.             e.printStackTrace(); 
  27.         } 
  28.         return obj; 
  29.     } 

業(yè)務(wù)實(shí)現(xiàn):

  1. @Override 
  2. @ServiceLimit 
  3. @Transactional 
  4. public Result startSeckil(long seckillId, long userId) { 
  5.     //省略部分業(yè)務(wù)代碼,詳見秒殺源碼 

分布式限流

Nginx

  1. #統(tǒng)一在http域中進(jìn)行配置 
  2. #限制請(qǐng)求 
  3. limit_req_zone $binary_remote_addr $uri zone=api_read:20m rate=50r/s; 
  4. #按ip配置一個(gè)連接 zone 
  5. limit_conn_zone $binary_remote_addr zone=perip_conn:10m; 
  6. #按server配置一個(gè)連接 zone 
  7. limit_conn_zone $server_name zone=perserver_conn:100m; 
  8. server { 
  9.         listen       80; 
  10.         server_name  seckill.52itstyle.com; 
  11.         index index.jsp; 
  12.         location / { 
  13.               #請(qǐng)求限流排隊(duì)通過 burst默認(rèn)是0 
  14.               limit_req zone=api_read burst=5; 
  15.               #連接數(shù)限制,每個(gè)IP并發(fā)請(qǐng)求為2 
  16.               limit_conn perip_conn 2; 
  17.               #服務(wù)所限制的連接數(shù)(即限制了該server并發(fā)連接數(shù)量) 
  18.               limit_conn perserver_conn 1000; 
  19.               #連接限速 
  20.               limit_rate 100k; 
  21.               proxy_pass      http://seckill; 
  22.         } 
  23. upstream seckill { 
  24.         fair; 
  25.         server  172.16.1.120:8080 weight=1  max_fails=2 fail_timeout=30s; 
  26.         server  172.16.1.130:8080 weight=1  max_fails=2 fail_timeout=30s; 

配置說(shuō)明

  1. imit_conn_zone 

是針對(duì)每個(gè)IP定義一個(gè)存儲(chǔ)session狀態(tài)的容器。這個(gè)示例中定義了一個(gè)100m的容器,按照32bytes/session,可以處理3200000個(gè)session。

  1. limit_rate 300k; 

對(duì)每個(gè)連接限速300k. 注意,這里是對(duì)連接限速,而不是對(duì)IP限速。如果一個(gè)IP允許兩個(gè)并發(fā)連接,那么這個(gè)IP就是限速limit_rate×2。

  1. burst=5; 

這相當(dāng)于桶的大小,如果某個(gè)請(qǐng)求超過了系統(tǒng)處理速度,會(huì)被放入桶中,等待被處理。如果桶滿了,那么抱歉,請(qǐng)求直接返回503,客戶端得到一個(gè)服務(wù)器忙的響應(yīng)。如果系統(tǒng)處理請(qǐng)求的速度比較慢,桶里的請(qǐng)求也不能一直待在里面,如果超過一定時(shí)間,也是會(huì)被直接退回,返回服務(wù)器忙的響應(yīng)。

OpenResty

背影有沒有很熟悉,對(duì)這就是那個(gè)直呼理解萬(wàn)歲老羅,2015年老羅在錘子科技T2發(fā)布會(huì)上將門票收入捐贈(zèng)給了 OpenResty,也相信老羅是個(gè)有情懷的胖子。

這里我們使用 OpenResty 開源的限流方案,測(cè)試案例使用OpenResty1.13.6.1***版本,自帶lua-resty-limit-traffic模塊以及案例 ,實(shí)現(xiàn)起來(lái)更為方便。

限制接口總并發(fā)數(shù)/請(qǐng)求數(shù)

秒殺活動(dòng)中,由于突發(fā)流量暴增,有可能會(huì)影響整個(gè)系統(tǒng)的穩(wěn)定性從而造成崩潰,這時(shí)候我們就要限制秒殺接口的總并發(fā)數(shù)/請(qǐng)求數(shù)。

這里我們采用 lua-resty-limit-traffic中的resty.limit.count模塊實(shí)現(xiàn),由于文章篇幅具體代碼參見源碼openresty/lua/limit_count.lua。

限制接口時(shí)間窗請(qǐng)求數(shù)

秒殺場(chǎng)景下,有時(shí)候并都是人肉鼠標(biāo),比如12306的搶票軟件,軟件刷票可比人肉鼠標(biāo)快多了。此時(shí)我們就要對(duì)客戶端單位時(shí)間內(nèi)的請(qǐng)求數(shù)進(jìn)行限制,以至于刷票不是那么猖獗。當(dāng)然了道高一尺魔高一丈,搶票軟件總是會(huì)有辦法繞開你的防線,從另一方面講也促進(jìn)了技術(shù)的進(jìn)步。

這里我們采用 lua-resty-limit-traffic中的resty.limit.conn模塊實(shí)現(xiàn),具體代碼參見源碼openresty/lua/limit_conn.lua。

平滑限制接口請(qǐng)求數(shù)

之前的限流方式允許突發(fā)流量,也就是說(shuō)瞬時(shí)流量都會(huì)被允許。突然流量如果不加以限制會(huì)影響整個(gè)系統(tǒng)的穩(wěn)定性,因此在秒殺場(chǎng)景中需要對(duì)請(qǐng)求×××為平均速率處理,即20r/s。

這里我們采用 lua-resty-limit-traffic 中的resty.limit.req 模塊實(shí)現(xiàn)漏桶限流和令牌桶限流。

其實(shí)漏桶和令牌桶根本的區(qū)別就是,如何處理超過請(qǐng)求速率的請(qǐng)求。漏桶會(huì)把請(qǐng)求放入隊(duì)列中去等待均速處理,隊(duì)列滿則拒絕服務(wù);令牌桶在桶容量允許的情況下直接處理這些突發(fā)請(qǐng)求。

漏桶

桶容量大于零,并且是延遲模式。如果桶沒滿,則進(jìn)入請(qǐng)求隊(duì)列以固定速率等待處理,否則請(qǐng)求被拒絕。

令牌桶

桶容量大于零,并且是非延遲模式。如果桶中存在令牌,則允許突發(fā)流量,否則請(qǐng)求被拒絕。

壓測(cè)

為了測(cè)試以上配置效果,我們采用AB壓測(cè),Linux下執(zhí)行以下命令即可:

  1. # 安裝 
  2. yum -y install httpd-tools 
  3. # 查看ab版本 
  4. ab -v 
  5. # 查看幫助 
  6. ab --help 

測(cè)試命令:

  1. ab -n 1000 -c 100 http://127.0.0.1/ 

測(cè)試結(jié)果:

  1. Server Software:        openresty/1.13.6.1  #服務(wù)器軟件 
  2. Server Hostname:        127.0.0.1     #IP 
  3. Server Port:            80            #請(qǐng)求端口號(hào) 
  4.  
  5. Document Path:          /             #文件路徑 
  6. Document Length:        12 bytes      #頁(yè)面字節(jié)數(shù) 
  7.  
  8. Concurrency Level:      100           #請(qǐng)求的并發(fā)數(shù) 
  9. Time taken for tests:   4.999 seconds #總訪問時(shí)間 
  10. Complete requests:      1000          #總請(qǐng)求樹 
  11. Failed requests:        0             #請(qǐng)求失敗數(shù)量 
  12. Write errors:           0 
  13. Total transferred:      140000 bytes  #請(qǐng)求總數(shù)據(jù)大小 
  14. HTML transferred:       12000 bytes   #html頁(yè)面實(shí)際總字節(jié)數(shù) 
  15. Requests per second:    200.06 [#/sec] (mean) #每秒多少請(qǐng)求,這個(gè)是非常重要的參數(shù)數(shù)值,服務(wù)器的吞吐量 
  16. Time per request:       499.857 [ms] (mean) #用戶平均請(qǐng)求等待時(shí)間  
  17. Time per request:       4.999 [ms] (mean, across all concurrent requests)  # 服務(wù)器平均處理時(shí)間,也就是服務(wù)器吞吐量的倒數(shù)  
  18. Transfer rate:          27.35 [Kbytes/sec] received #每秒獲取的數(shù)據(jù)長(zhǎng)度 
  19.  
  20. Connection Times (ms) 
  21.               min  mean[+/-sd] median   max 
  22. Connect:        0    0   0.8      0       4 
  23. Processing:     5  474  89.1    500     501 
  24. Waiting:        2  474  89.2    500     501 
  25. Total:          9  475  88.4    500     501 
  26.  
  27. Percentage of the requests served within a certain time (ms) 
  28.   50%    500 
  29.   66%    500 
  30.   75%    500 
  31.   80%    500 
  32.   90%    501 
  33.   95%    501 
  34.   98%    501 
  35.   99%    501 
  36.  100%    501 (longest request) 

總結(jié)

以上限流方案,只是針對(duì)此次秒殺案例做一個(gè)簡(jiǎn)單的小結(jié),大家也不要刻意區(qū)分那種方案的好壞,只要適合業(yè)務(wù)場(chǎng)景就是***的。

參考

https://github.com/openresty/lua-resty-limit-traffic

https://blog.52itstyle.com/archives/1764/

https://blog.52itstyle.com/archives/775/

分享是快樂的,也見證了個(gè)人成長(zhǎng)歷程,文章大多都是工作經(jīng)驗(yàn)總結(jié)以及平時(shí)學(xué)習(xí)積累,基于自身認(rèn)知不足之處在所難免,也請(qǐng)大家指正,共同進(jìn)步。

本文版權(quán)歸作者所有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出, 如有問題, 可郵件(345849402@qq.com)咨詢。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO博客
相關(guān)推薦

2018-06-11 11:12:09

秒殺限流分布式

2018-07-19 14:53:23

秒殺websocket異步

2016-11-28 08:58:43

系統(tǒng)限流算法

2016-11-28 08:58:43

系統(tǒng)限流

2023-02-10 00:04:53

2017-12-20 16:15:30

分布式系統(tǒng)架構(gòu)

2024-07-05 08:26:54

2018-01-23 15:55:23

分布式系統(tǒng)架構(gòu)

2017-09-01 05:35:58

分布式計(jì)算存儲(chǔ)

2022-06-13 10:01:36

Apollo攜程框架

2025-03-06 11:30:15

2023-04-06 08:52:54

Sentinel分布式系統(tǒng)

2022-05-11 13:55:18

高可用性分布式彈性

2023-01-06 16:42:28

2016-11-28 08:40:17

系統(tǒng)降級(jí)服務(wù)

2022-01-17 09:18:28

JMeter分布式壓測(cè)

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2023-05-12 11:52:21

緩存場(chǎng)景性能

2022-03-07 08:14:27

并發(fā)分布式

2018-04-03 09:27:42

分布式架構(gòu)系統(tǒng)
點(diǎn)贊
收藏

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

亚洲私人黄色宅男| 伊人成综合网yiren22| 亚洲精品中文在线| 欧美日韩成人一区二区三区 | 一级特级黄色片| 激情开心成人网| 亚洲免费观看高清完整 | 色777狠狠狠综合伊人| 日韩一区二区三区高清免费看看| 欧美一区二区三区爽大粗免费| 成年在线观看免费人视频| 国产高清久久久久| 国产精品爱啪在线线免费观看| 国产精品丝袜一区二区| 国产伦精品一区二区三区在线播放| 91国偷自产一区二区三区观看| 手机看片日韩国产| 在线亚洲自拍| 欧美日韩一区 二区 三区 久久精品| 50度灰在线观看| 成人性生交大片免费看午夜| 国产**成人网毛片九色| 国产精品日韩专区| 日韩免费视频一区二区视频在线观看| 我不卡伦不卡影院| 国产一区二区三区久久精品 | 在线观看国产欧美| 精品视频站长推荐| 亚洲国产高清在线观看| 欧美电影一区二区| 一级片视频免费观看| 免费毛片b在线观看| 一区二区三区四区中文字幕| 亚洲欧洲国产日韩精品| 国产区视频在线| 91在线国内视频| 国产亚洲情侣一区二区无| 99久久一区二区| 久久99精品国产.久久久久| 国产精品27p| 亚洲欧美一区二区三区在线观看 | 亚洲欧洲av一区二区三区久久| 欧美日韩免费观看一区| 四虎影视在线观看2413| 播五月开心婷婷综合| 99视频在线免费观看| 国产富婆一级全黄大片| 国产毛片精品视频| 2022国产精品| 国产99久一区二区三区a片| 国产一区二区三区在线观看免费视频 | 亚洲www啪成人一区二区| 日本黄色一区二区| 亚洲精品怡红院| 影音成人av| 欧美亚一区二区| www.精品在线| 高清在线一区二区| 日韩欧美亚洲另类制服综合在线| 成人一区二区三区仙踪林| 最新国产精品精品视频| 亚洲国产精品视频在线观看| 成人网站免费观看| 狠狠做六月爱婷婷综合aⅴ| 尤物yw午夜国产精品视频明星| 欧美成人另类视频| 五月天久久久| 久久久久久久香蕉网| 国产精品suv一区二区三区| 久久九九国产| 成人免费网站在线观看| 免费看国产片在线观看| 久久女同互慰一区二区三区| 日韩av电影在线观看| 日本电影在线观看网站| 亚洲男人的天堂在线aⅴ视频| 999一区二区三区| 伊人久久视频| 6080午夜不卡| 男男做爰猛烈叫床爽爽小说| 亚洲精品亚洲人成在线观看| 最近日韩中文字幕中文| 久久久精品99| 日韩高清欧美激情| 99在线影院| 国产永久av在线| 亚洲一区二区视频在线观看| 日本精品免费在线观看| 国产日韩欧美中文在线| 日韩美女av在线| 一本一本久久a久久| 亚洲视频福利| 国产精品久久久久久av下载红粉 | 国产剧情一区在线| 久久99国产精品99久久| 9色在线观看| 亚洲成人精品一区二区| 中国黄色片免费看| 精品福利网址导航| 日韩视频免费中文字幕| 国产福利拍拍拍| 国产一区在线不卡| 日本午夜精品一区二区三区| 永久免费网站在线| 欧美午夜不卡在线观看免费| 国产在线不卡av| 偷偷www综合久久久久久久| 欧美影院在线播放| 精品国自产在线观看| 国产亚洲精品久| 人妻av中文系列| 久久精品九色| 最近中文字幕日韩精品| 香蕉视频一区二区| 国产精品一二一区| 中国人体摄影一区二区三区| www.成人爱| 亚洲精品av在线播放| 欧美日韩偷拍视频| 精油按摩中文字幕久久| 日韩国产美国| 中文在线免费二区三区| 精品国产一区二区国模嫣然| 亚洲国产123| 久久国产精品72免费观看| 欧美lavv| xx欧美视频| 日韩精品久久久久| 午夜精品三级久久久有码| 国产成人av一区二区三区在线观看| 日韩欧美一区二区三区久久婷婷| 性欧美18xxxhd| 亚洲精品v天堂中文字幕| 免费在线观看av网址| 国产在线精品一区二区不卡了 | 日日夜夜精品一区| 欧美日韩在线三级| 最新中文字幕av| 日韩中文字幕1| 日韩欧美精品在线不卡| 日本综合字幕| 一本色道久久88精品综合| 五月天激情四射| 久久丝袜美腿综合| 老熟妇仑乱视频一区二区| 精品中文一区| 国产精品爽黄69天堂a| 成人动漫在线免费观看| 欧亚洲嫩模精品一区三区| www.黄色在线| 久久66热re国产| 五月天激情图片| 国产美女撒尿一区二区| 97国产精品免费视频| 天堂在线视频网站| 欧美视频精品一区| www久久久久久久| 美腿丝袜亚洲三区| avove在线观看| av综合网站| 26uuu亚洲国产精品| 精品无人乱码| 欧美日本一区二区三区| 色欲一区二区三区精品a片| 国产成人精品三级麻豆| 成人免费aaa| 国产探花在线精品一区二区| 国产精品日韩久久久久| 宅男网站在线免费观看| 亚洲第一在线视频| 欧美一区二区三区久久久| 中文字幕一区在线观看视频| 日本中文字幕在线不卡| 中日韩男男gay无套| 欧美视频观看一区| 国产激情一区| 91精品国产91久久久久| 成人高清网站| 精品精品欲导航| 久久久精品毛片| 亚洲欧美日韩综合aⅴ视频| 中文字幕无码人妻少妇免费| 免费成人美女在线观看.| 91看片淫黄大片91| 久久99视频| 99re视频| 91tv亚洲精品香蕉国产一区| 欧美激情久久久| av在线电影免费观看| 精品剧情在线观看| 波多野结衣一区二区在线| 亚洲精品乱码久久久久久久久 | 国产精品羞羞答答在线观看| 亚洲xxxx3d| 欧美xo影院| 久久久爽爽爽美女图片| 爱久久·www| 亚洲国产精品中文| 91麻豆成人精品国产| 欧美日韩激情小视频| 久久久久久视频| 久久精品人人做人人综合| 欧美体内she精高潮| 日韩av一二三| 免费成人在线视频网站| 中文视频一区| 一区二区三区四区视频在线观看| 久久中文资源| 97视频中文字幕| 日本在线一区二区| 国产精品aaaa| 欧美亚洲日本精品| 欧美极品少妇xxxxⅹ裸体艺术 | 999热精品视频| 免费久久99精品国产| 国内性生活视频| 好吊日精品视频| 久久免费看毛片| 日本一区二区三区视频| 欧美性色黄大片人与善| 777久久精品| 亚洲专区在线视频| av在线精品| 国产欧美va欧美va香蕉在线| 成人教育av| 欧美诱惑福利视频| 欧美xxxhd| 97精品免费视频| 丁香花电影在线观看完整版| 久久成人国产精品| 在线观看h片| 中文字幕最新精品| 国产大片在线免费观看| 亚洲日韩中文字幕在线播放| 亚洲欧美日韩精品永久在线| 亚洲成人黄色网址| 色一情一乱一区二区三区| 亚洲成人999| 天天操天天射天天舔| 日韩成人久久久| 青青青草网站免费视频在线观看| 日韩av在线网站| 欧美视频综合| 亚洲人成网站777色婷婷| 免费成人av电影| 亚洲天堂网站在线观看视频| 国产精品麻豆一区二区三区 | 蜜桃av久久久亚洲精品| 日韩欧美天堂| 日韩av在线电影观看| 成人在线亚洲| 天堂av免费看| 亚洲午夜激情在线| 国产美女网站在线观看| 亚洲一区中文| 人人爽人人av| 紧缚奴在线一区二区三区| 无套内谢丰满少妇中文字幕| 岛国一区二区三区| 在线观看国产三级| 久久精品在这里| 欧美一级特黄高清视频| 樱花影视一区二区| 午夜影院在线看| 色www精品视频在线观看| 亚洲性在线观看| 日韩欧美成人激情| 无码精品黑人一区二区三区| 亚洲欧美日韩精品| 黄色网页网址在线免费| 欧美精品久久久久a| 中文字幕在线视频网站| 国产欧美一区二区三区久久人妖 | 免费久久99精品国产自| 日韩av免费大片| 久久久久久久9| 日精品一区二区三区| 亚洲精品久久久久久| 91小视频在线免费看| 成人无码精品1区2区3区免费看 | 日韩精品视频一区二区在线观看| 蜜臀av在线播放一区二区三区| 在线视频观看一区二区| av在线播放一区二区三区| 懂色av蜜桃av| 性久久久久久久| 最近中文字幕在线视频| 欧美成人官网二区| 国产中文字幕在线观看| 欧美成人精品激情在线观看| 亚洲欧洲自拍| 98国产高清一区| 成人毛片在线| 日韩欧美国产综合在线| 久久99国产精品成人| 给我免费观看片在线电影的| 国产精品国产a| 日本韩国欧美中文字幕| 欧美一区二区三区性视频| 头脑特工队2在线播放| 美女999久久久精品视频| 欧美人体一区二区三区| www日韩av| 国产高清欧美| 中文久久久久久| 93久久精品日日躁夜夜躁欧美| 日韩成人短视频| 欧洲一区在线观看| 婷婷av一区二区三区| 欧美成人精品影院| 外国成人毛片| 五码日韩精品一区二区三区视频| 亚洲激情专区| 人妻av一区二区三区| 国产精品久久久久毛片软件| youjizz在线视频| 精品粉嫩超白一线天av| 18视频在线观看| 91精品中文在线| 久久综合电影| 免费看污污网站| 久久精品欧美一区二区三区不卡| 韩国av免费观看| 精品国产免费一区二区三区四区| 91网址在线观看| 亚洲专区在线视频| 亚洲一区二区日韩| 亚洲怡红院在线| 国产精品福利一区二区三区| 无码人妻精品一区二| 亚洲精品视频久久| 中文字幕乱码中文乱码51精品| 精品日本一区二区三区| 亚洲欧洲一区| www.88av| 欧美性xxxxx极品娇小| 在线观看xxx| 欧美伊久线香蕉线新在线| 精品国产午夜肉伦伦影院| 国产一区二区三区小说| 粉嫩嫩av羞羞动漫久久久| 精品一级少妇久久久久久久| 欧美成人艳星乳罩| 成年人视频免费在线播放| 国产伦精品一区二区三区照片91| 亚洲福利电影| 中文字幕狠狠干| 在线视频观看一区| 伊人在线视频| 5g影院天天爽成人免费下载| 欧美不卡一区| 在线xxxxx| 欧美午夜性色大片在线观看| 久久米奇亚洲| 国产日韩欧美电影在线观看| 98精品久久久久久久| 超级砰砰砰97免费观看最新一期 | 久久精品精品电影网| 亚洲va欧美va人人爽成人影院| 免费网站永久免费观看| 91色婷婷久久久久合中文| 波多野结衣不卡| 久久亚洲国产精品| 99re热精品视频| 久草综合在线观看| 日韩一区在线看| 国模人体一区二区| 日韩av毛片网| 亚洲91久久| 插我舔内射18免费视频| 在线观看日韩电影| av大全在线| 免费观看国产成人| 国产一区二区在线电影| 成年人午夜视频| 日日摸夜夜添一区| 精品少妇一区| 亚洲久久中文字幕| 亚洲一级二级在线| 91在线看片| 国产一区二区无遮挡| 青青草一区二区三区| 久久久久97国产| 一个人www欧美| 超碰97成人| 黄色小视频免费网站| 调教+趴+乳夹+国产+精品| 在线观看黄av| 欧美成人免费在线| 国产精品一区二区免费不卡 | 免费一级片在线观看| 亚洲欧美一区二区三区四区| 国产精品久一| 无码无遮挡又大又爽又黄的视频| 亚洲精品视频在线看| 福利在线播放| 久久久久久久久久久久久9999| 激情六月婷婷综合| 日韩电影在线观看一区二区| 欧美黑人国产人伦爽爽爽|