午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 詳解基于redis實現的四種常見的限流策略

詳解基于redis實現的四種常見的限流策略

熱門標簽:貴州電銷卡外呼系統 鄭州人工智能電銷機器人系統 超呼電話機器人 日本中國地圖標注 十堰營銷電銷機器人哪家便宜 魔獸2青云地圖標注 山東外呼銷售系統招商 北京400電話辦理收費標準 宿遷便宜外呼系統平臺

一、引言

  • 在web開發中功能是基石,除了功能以外運維和防護就是重頭菜了。因為在網站運行期間可能會因為突然的訪問量導致業務異常、也有可能遭受別人惡意攻擊
  • 所以我們的接口需要對流量進行限制。俗稱的QPS也是對流量的一種描述
  • 針對限流現在大多應該是令牌桶算法,因為它能保證更多的吞吐量。除了令牌桶算法還有他的前身漏桶算法和簡單的計數算法
  • 下面我們來看看這四種算法

二、固定時間窗口算法

  • 固定時間窗口算法也可以叫做簡單計數算法。網上有很多都將計數算法單獨抽離出來。但是筆者認為計數算法是一種思想,而固定時間窗口算法是他的一種實現
  • 包括下面滑動時間窗口算法也是計數算法的一種實現。因為計數如果不和時間進行綁定的話那么失去了限流的本質了。就變成了拒絕了

優點:

  • 在固定的時間內出現流量溢出可以立即做出限流。每個時間窗口不會相互影響
  • 在時間單元內保障系統的穩定。保障的時間單元內系統的吞吐量上限

缺點:

  • 正如圖示一樣,他的最大問題就是臨界狀態。在臨界狀態最壞情況會受到兩倍流量請求
  • 除了臨界的情況,還有一種是在一個單元時間窗內前期如果很快的消耗完請求閾值。那么剩下的時間將會無法請求。這樣就會因為一瞬間的流量導致一段時間內系統不可用。這在互聯網高可用的系統中是不能接受的。

實現:

  • 好了,關于原理介紹及優缺點我們已經了解了。下面我們動手實現它
  • 首先我們在實現這種計數時,采用redis是非常好的選擇。這里我們通過redis實現

controller

@RequestMapping(value = "/start",method = RequestMethod.GET)
public Mapstring,object> start(@RequestParam Mapstring, object=""> paramMap) {
    return testService.startQps(paramMap);
}

service

@Override
public Mapstring, object=""> startQps(Mapstring, object=""> paramMap) {
    //根據前端傳遞的qps上線
    Integer times = 100;
    if (paramMap.containsKey("times")) {
        times = Integer.valueOf(paramMap.get("times").toString());
    }
    String redisKey = "redisQps";
    RedisAtomicInteger redisAtomicInteger = new RedisAtomicInteger(redisKey, redisTemplate.getConnectionFactory());
    int no = redisAtomicInteger.getAndIncrement();
    //設置時間固定時間窗口長度 1S
    if (no == 0) {
        redisAtomicInteger.expire(1, TimeUnit.SECONDS);
    }
    //判斷是否超限  time=2 表示qps=3
    if (no > times) {
        throw new RuntimeException("qps refuse request");
    }
    //返回成功告知
    Mapstring, object=""> map = new HashMap>();
    map.put("success", "success");
    return map;
}

結果測試:

我們設置的qps=3 , 我們可以看到五個并發進來后前三個正常訪問,后面兩個就失敗了。稍等一段時間我們在并發訪問,前三個又可以正常訪問。說明到了下一個時間窗口

三、滑動時間窗口算法

  • 針對固定時間窗口的缺點--臨界值出現雙倍流量問題。 我們的滑動時間窗口就產生了。
  • 其實很好理解,就是針對固定時間窗口,將時間窗口統計從原來的固定間隔變成更加細度化的單元了。
  • 在上面我們固定時間窗口演示中我們設置的時間單元是1S 。 針對1S我們將1S拆成時間戳。
  • 固定時間窗口是統計單元隨著時間的推移不斷向后進行。而滑動時間窗口是我們認為的想象出一個時間單元按照相對論的思想將時間固定,我們的抽象時間單元自己移動。抽象的時間單元比實際的時間單元更小。
  • 讀者可以看下下面的動圖,就可以理解了。

優點:

  • 實質上就是固定時間窗口算法的改進。所以固定時間窗口的缺點就是他的優點。
  • 內部抽象一個滑動的時間窗,將時間更加小化。存在邊界的問題更加小。客戶感知更弱了。

缺點:

  • 不管是固定時間窗口算法還是滑動時間窗口算法,他們都是基于計數器算法進行優化,但是他們對待限流的策略太粗暴了。
  • 為什么說粗暴呢,未限流他們正常放行。一旦達到限流后就會直接拒絕。這樣我們會損失一部分請求。這對于一個產品來說不太友好

實現:

  • 滑動時間窗口是將時間更加細化,上面我們是通過redis#setnx實現的。這里我們就無法通過他統一記錄了。我們應該加上更小的時間單元存儲到一個集合匯總。然后根據集合的總量計算限流。redis的zsett數據結構就和符合我們的需求。
  • 為什么選擇zset呢,因為redis的zset中除了值以外還有一個權重。會根據這個權重進行排序。如果我們將我們的時間單元及時間戳作為我們的權重,那么我們獲取統計的時候只需要按照一個時間戳范圍就可以了。
  • 因為zset內元素是唯一的,所以我們的值采用uuid或者雪花算法一類的id生成器

controller

@RequestMapping(value = "/startList",method = RequestMethod.GET)
public Mapstring,object> startList(@RequestParam Mapstring, object=""> paramMap) {
    return testService.startList(paramMap);
}

service

String redisKey = "qpsZset";
Integer times = 100;
if (paramMap.containsKey("times")) {
    times = Integer.valueOf(paramMap.get("times").toString());
}
long currentTimeMillis = System.currentTimeMillis();
long interMills = inter * 1000L;
Long count = redisTemplate.opsForZSet().count(redisKey, currentTimeMillis - interMills, currentTimeMillis);
if (count > times) {
    throw new RuntimeException("qps refuse request");
}
redisTemplate.opsForZSet().add(redisKey, UUID.randomUUID().toString(), currentTimeMillis);
Mapstring, object=""> map = new HashMap>();
map.put("success", "success");
return map;

結果測試:

  • 和固定時間窗口采用相同的并發。為什么上面也會出現臨界狀況呢。因為在代碼里時間單元間隔比固定時間間隔采用還要大 。 上面演示固定時間窗口時間單元是1S出現了最壞情況。而滑動時間窗口設計上就應該間隔更短。而我設置成10S 也沒有出現壞的情況
  • 這里就說明滑動比固定的優處了。如果我們調更小應該更加不會出現臨界問題,不過說到底他還是避免不了臨界出現的問題

四、漏桶算法

  • 滑動時間窗口雖然可以極大程度的規避臨界值問題,但是始終還是避免不了
  • 另外時間算法還有個致命的問題,他無法面對突如其來的大量流量,因為他在達到限流后直接就拒絕了其他額外流量
  • 針對這個問題我們繼續優化我們的限流算法。 漏桶算法應運而生

優點:

  • 面對限流更加的柔性,不在粗暴的拒絕。
  • 增加了接口的接收性
  • 保證下流服務接收的穩定性。均勻下發

缺點:

  • 我覺得沒有缺點。非要雞蛋里挑骨頭那我只能說漏桶容量是個短板

實現:

controller

@RequestMapping(value = "/startLoutong",method = RequestMethod.GET)
public Mapstring,object> startLoutong(@RequestParam Mapstring, object=""> paramMap) {
    return testService.startLoutong(paramMap);
}

service在service中我們通過redis的list的功能模擬出桶的效果。這里代碼是實驗室性質的。在真實使用中我們還需要考慮并發的問題

@Override
public Mapstring, object=""> startLoutong(Mapstring, object=""> paramMap) {
    String redisKey = "qpsList";
    Integer times = 100;
    if (paramMap.containsKey("times")) {
        times = Integer.valueOf(paramMap.get("times").toString());
    }
    Long size = redisTemplate.opsForList().size(redisKey);
    if (size >= times) {
        throw new RuntimeException("qps refuse request");
    }
    Long aLong = redisTemplate.opsForList().rightPush(redisKey, paramMap);
    if (aLong > times) {
        //為了防止并發場景。這里添加完成之后也要驗證。  即使這樣本段代碼在高并發也有問題。此處演示作用
        redisTemplate.opsForList().trim(redisKey, 0, times-1);
        throw new RuntimeException("qps refuse request");
    }
    Mapstring, object=""> map = new HashMap>();
    map.put("success", "success");
    return map;
}

下游消費

@Component
public class SchedulerTask {

    @Autowired
    RedisTemplate redisTemplate;

    private String redisKey="qpsList";

    @Scheduled(cron="*/1 * * * * ?")
    private void process(){
        //一次性消費兩個
        System.out.println("正在消費。。。。。。");
        redisTemplate.opsForList().trim(redisKey, 2, -1);
    }

}

測試:

  • 我們還是通過50并發循環10次訪問。我們可以發現只有在一開始能達到比較高的吞吐量。在隨后桶的容量滿了之后。而下游水滴速率比上游請求速率慢的情況下。只能以下游恒定的速度接收訪問。
  • 他的問題也暴露的很明顯。針對時間窗口的不足漏桶進行的不足,但是仍是不足。無法徹底避免請求溢出的問題。
  • 請求溢出本身就是一種災難性的問題。所有的算法目前都沒有解決這個問題。只是在減緩他帶來的問題

五、令牌桶算法

  • 令牌桶和漏桶法是一樣的。只不過將桶的作用方向改變了一下。
  • 漏桶的出水速度是恒定的,如果流量突然增加的話我們就只能拒絕入池
  • 但是令牌桶是將令牌放入桶中,我們知道正常情況下令牌就是一串字符當桶滿了就拒絕令牌的入池,但是面對高流量的時候正常加上我們的超時時間就留下足夠長的時間生產及消費令牌了。這樣就盡可能的不會造成請求的拒絕
  • 最后,不論是對于令牌桶拿不到令牌被拒絕,還是漏桶的水滿了溢出,都是為了保證大部分流量的正常使用,而犧牲掉了少部分流量
public Mapstring, object=""> startLingpaitong(Mapstring, object=""> paramMap) {
    String redisKey = "lingpaitong";
    String token = redisTemplate.opsForList().leftPop(redisKey).toString();
    //正常情況需要驗證是否合法,防止篡改
    if (StringUtils.isEmpty(token)) {
        throw new RuntimeException("令牌桶拒絕");
    }
    Mapstring, object=""> map = new HashMap>();
    map.put("success", "success");
    return map;
}
@Scheduled(cron="*/1 * * * * ?")
private void process(){
    //一次性生產兩個
    System.out.println("正在消費。。。。。。");
    for (int i = 0; i  2; i++) {
        redisTemplate.opsForList().rightPush(redisKey, i);
    }
}

以上就是詳解基于redis實現的四種常見的限流策略的詳細內容,更多關于redis限流策略的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • redis實現的四種常見限流策略
  • springboot+redis 實現分布式限流令牌桶的示例代碼
  • 詳解Redis實現限流的三種方式
  • Python+redis通過限流保護高并發系統
  • Springboot使用redis進行api防刷限流過程詳解
  • Redis和Lua實現分布式限流器的方法詳解
  • php使用lua+redis實現限流,計數器模式,令牌桶模式
  • 基于Redis的限流器的實現(示例講解)
  • 基于Redis實現分布式應用限流的方法

標簽:大慶 北京 果洛 朝陽 吉安 臺州 楊凌 江蘇

巨人網絡通訊聲明:本文標題《詳解基于redis實現的四種常見的限流策略》,本文關鍵詞  詳解,基于,redis,實現,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解基于redis實現的四種常見的限流策略》相關的同類信息!
  • 本頁收集關于詳解基于redis實現的四種常見的限流策略的相關信息資訊供網民參考!
  • 推薦文章
    91社区在线播放| 国产xxxx振车| 无码精品视频一区二区三区 | 精品国产乱码久久久久久1区二区| 国产日韩欧美精品在线| 亚洲综合欧美日韩| 国产真实乱子伦精品视频| 亚洲综合中文字幕在线观看| 亚洲影视一区二区| xvideos亚洲人网站| 狠狠人妻久久久久久综合蜜桃| 精品av在线播放| 9色porny| 国产精品女主播av| 免费看的黄色大片| 五月天亚洲精品| 久久综合毛片| 婷婷色在线视频| 91久久久久久久久久| 丝袜美腿亚洲综合| 狠狠色伊人亚洲综合网站色| 国产毛片精品视频| 99亚洲精品视频| 亚洲男人的天堂av| 久久精品无码一区二区三区毛片| 欧美日韩亚洲另类| 国产成人一区二区三区电影| 久久久国产精品一区二区三区| 韩国三级在线一区| 色姑娘综合网| www.爱久久.com| 午夜午夜精品一区二区三区文| 日本欧美一区二区三区乱码| 日本成人三级| 国产农村妇女精品| 人妻激情偷乱视频一区二区三区| 欧美一级高清大全免费观看| 亚洲男人在线天堂| 欧美一区二区三区在线观看| 日本伦理一区二区三区| 欧美老少配视频| 青草视频在线观看免费| 91午夜理伦私人影院| 国产中文字幕一区| 国产aaa一级片| 日韩美女一区二区三区| 免费在线黄色网| 国产91免费观看| 国产一区二区三区在线观看免费| 国内精品在线观看视频| 欧美一区二区网站| 麻豆亚洲av熟女国产一区二| 国产精品免费一区| 国产伦理吴梦梦伦理| 久久久久久久久久久久国产| 欧美成人精品一区二区三区| 天堂一区二区在线| 尤物av无码色av无码| 午夜国产不卡在线观看视频| 人妻av一区二区三区| 国内精品视频一区| 久久人人爽人人爽| 一区二区国产精品精华液| 蜜月aⅴ免费一区二区三区| 国产成人午夜精品5599| 91玉足脚交白嫩脚丫| 一本一道久久a久久精品逆3p| 日韩黄色片在线观看| 极品粉嫩美女露脸啪啪| 欧美理论电影在线播放| 国产日韩欧美高清| 久久精品国产av一区二区三区| 麻豆91蜜桃| 欧美一区二区三区婷婷月色| 亚洲AV午夜精品| aaa毛片在线观看| 色久欧美在线视频观看| 欧美韩日一区二区三区四区| 久久免费视频这里只有精品| 国产丝袜在线精品| 中国毛片直接看| 欧美主播一区二区三区美女 久久精品人| 欧美日韩国产天堂| 免费人成网站在线观看欧美高清| 午夜福利三级理论电影| 国产二区不卡| 欧美日韩另类在线| 久久综合影音| 五月婷婷婷婷婷| 国产二区一区| 亚洲一级在线观看| 中文字幕在线观看视频免费| 亚洲精品天堂成人片av在线播放| 中文字幕亚洲第一| 国产片一区二区| 欧美黄片一区二区三区| 亚洲爆乳无码精品aaa片蜜桃| 欧美激情一区二区三区成人| 亚洲国产欧美日韩另类综合| 国产剧情在线视频| 屁屁影院ccyy国产第一页| 久久久久国色av免费观看性色 | 久久中文欧美| 日韩精品一区中文字幕| 国产日韩av在线播放| 日韩免费电影一区| 99国产精品99久久久久久| 永久免费无码av网站在线观看| 不卡的av中文字幕| 国产一区国产精品| 亚洲欧洲一区二区三区久久| 国产精品久久久久毛片软件| 亚洲国产精品久久久久久久| 免费黄色在线视频| 免费不卡av在线| 成人性生交大片免费看视频直播| 91精品国产一区二区| 欧美韩国一区二区| 日韩精品1区2区3区| 国产精品乱子伦| 亚洲男人在线天堂| 激情六月丁香婷婷| 免费中文日韩| 日韩免费在线观看视频| 亚洲国产高潮在线观看| 亚洲卡通动漫在线| 懂色av噜噜一区二区三区av| 国产白浆在线观看| 国产精品免费人成网站酒店 | 欧美色综合天天久久综合精品| 日韩成人免费在线| 国产又黄又爽视频| 鲁一鲁一鲁一鲁一色| 亚洲一区二区久久久久久久| 欧美xxxx14xxxxx性爽| 欧美精品一区二区三区蜜臀| 欧美日韩午夜剧场| 国产精品毛片大码女人| 国产成人自拍在线| 日本aⅴ免费视频一区二区三区| 中文精品久久久久人妻不卡| 亚洲一级av无码毛片精品| 国产亚洲天堂网| 国产欧美日韩网站| 成人手机视频在线| 日本一区二区三区视频免费看| 91免费欧美精品| 久久久久亚洲精品国产| 啊v视频在线一区二区三区| 亚洲成人av片在线观看| 欧美日韩一区视频| 欧美午夜无遮挡| 亚洲成av人片在www色猫咪| 中文字幕一区二区日韩精品绯色| 国产一区二区免费视频| 日韩国产欧美三级| 亚洲色图21p| 后进极品白嫩翘臀在线视频| 国产深喉视频一区二区| 亚洲天堂网在线观看视频| 国产三级精品三级在线观看| 中文字幕免费观看| 日韩不卡高清视频| 中文在线免费看视频| 一级爱爱免费视频| 一区二区视频在线免费观看| 亚洲一区精品在线观看| 国产精品久久免费| a毛片在线免费观看| 全部免费毛片在线播放一个| 深爱激情五月婷婷| 卡一卡二国产精品 | 91精品蜜臀在线一区尤物| 精品国产91亚洲一区二区三区婷婷| 亚洲成人激情图| 精品国产欧美一区二区五十路| 久久综合免费视频| 成人午夜小视频| 久久99精品视频一区97| 国产亚洲精品成人av久久ww| 精品不卡在线视频| 久久久国产精品x99av| 精品国产一区二区三区久久久 | 久久久精品国产| 日本欧美中文字幕| 国产精品亚洲一区二区三区| 国产成人黄色av| 超碰97在线播放| www.好吊操| 在线a免费观看| 久久久精品99| 黄色av一区二区三区| 天堂成人免费av电影一区| 不卡影院免费观看| 欧美日韩免费看| 日韩成人中文字幕| 国产97在线视频| 亚洲人成77777| 日本免费观看网站| 久久一级免费视频| jizz国产视频| 激情综合五月婷婷| 国产成人午夜99999| 性高潮久久久久久久 | 亚洲电影在线看| 2019中文字幕在线免费观看| 国产成人精品视频| 伊人久久大香线蕉成人综合网| 少妇激情一区二区三区| 内射一区二区三区| 亚洲乱码精品久久久久..| 美女视频网站久久| 一区二区三区精品视频| 欧美成人一级视频| 国产精品免费电影| 一区二区三区四区| 99精品全国免费观看| 午夜在线视频免费| 日本一区二区三区国色天香| 精品久久久久久久久久久院品网| 国产国语videosex另类| 久草视频国产在线| 国产91对白刺激露脸在线观看| 亚洲精品20p| 懂色av蜜臀av粉嫩av喷吹| 从欧美一区二区三区| 日韩欧美综合一区| 亚洲xxxx在线| 无码国产精品一区二区免费式直播| 亚洲综合网在线| 福利一区二区在线| 精品久久久久久久久久久久久久久 | 欧美亚洲另类在线| 亚洲国产日韩欧美在线观看| 美女黄页在线观看| 亚洲欧美日韩国产手机在线| 夜夜嗨av一区二区三区免费区| 亚洲综合在线小说| 免费在线观看你懂的| 国内精品伊人久久久久影院对白| 欧美自拍偷拍午夜视频| 岛国视频一区| 污视频在线观看免费网站| 视频一区二区免费| 日韩一区二区三区免费看| 狠狠干一区二区| 中国美女黄色一级片| 99国产精品久久久久| 欧美国产日韩在线| 色婷婷综合久久久久中文字幕| 亚洲成人生活片| 欧美特级限制片免费在线观看| 91av国产在线| 91人人澡人人爽| 国内精品写真在线观看| 尤物99国产成人精品视频| 国产深夜男女无套内射| 日本高清视频免费观看| 欧美在线激情网| 欧美日韩高清不卡| 国产精品一区二区a| 91久久国产综合| 成人白浆超碰人人人人| 欧美日韩999| 91成人在线观看喷潮教学| 国精产品一品二品国精品69xx| 日韩欧美中文字幕精品| 欧洲精品在线播放| 实拍女处破www免费看| 另类小说视频一区二区| 中文字幕久久亚洲| 91 视频免费观看| 福利电影一区二区| 欧美老女人在线视频| 北京富婆泄欲对白| av激情综合网| 国产精品在线看| 欧美日韩精品在线观看视频| 亚洲国产精品一区二区久久| 国产美女久久精品香蕉69| 国产一级特黄a高潮片| 欧美久久久影院| 亚洲精品无码久久久久久| 国产福利一区在线| 国产欧美欧洲在线观看| 美国一级黄色录像| 午夜亚洲福利老司机| 9l视频自拍9l视频自拍| 蜜桃av一区二区| 国产精品久久久久久久天堂| www.国产色| 日韩一级免费观看| 欧美性猛交xx| 中文字幕欧美一区| 色婷婷777777仙踪林| 国产福利视频一区二区三区| 国产欧美精品一区二区三区介绍 | 国产原创popny丨九色| 精品一区二区日韩| 成人资源av| 丝袜亚洲另类丝袜在线| 91在线观看免费高清完整版在线观看| 久久久久99精品成人片我成大片| 在线播放日韩专区| 疯狂试爱三2浴室激情视频| 亚洲国产精彩中文乱码av在线播放 | 亚洲福利av在线| 无码人妻丰满熟妇区五十路| 欧美精品一区二区三区久久久| 中文字幕 日韩 欧美| 久久精品人人| 欧美另类99xxxxx| 人妻无码一区二区三区免费| 日韩精品一区二区三区蜜臀| 一区二区三区免费播放| 亚洲色图在线看| 一区二区三区三区在线| 久久99精品久久久久久国产越南| 成人激情av| 国产伦精一区二区三区| 国产精品一区二区三区四区五区| 国产精品女人久久久| 国产成人一区二区三区小说 | www.四虎在线| 在线观看日韩av先锋影音电影院| 久久人人爽人人片| 舔着乳尖日韩一区| 欧美久久久久久久久久久| 精品国产1区2区| 亚洲精品乱码久久久久久9色| 欧美老年两性高潮| 中文字幕有码在线播放| 在线观看国产精品淫| 瑟瑟视频在线免费观看| 最新91在线视频| 亚洲天堂视频在线观看| 亚洲av中文无码乱人伦在线视色| 欧美日本高清视频| 国产999久久久| 国产一区喷水| eeuss影院一区二区三区 | 亚洲成人综合网站| 中文字幕av观看| 亚洲精品久久久久中文字幕欢迎你| 怡红院一区二区三区| 另类少妇人与禽zozz0性伦| 日韩av黄色片| 亚洲一区国产精品| 国产欧美精品一区二区色综合朱莉 | 亚洲一二三在线观看| 国产精品 欧美在线| 91女人视频在线观看| 冲田杏梨av在线| 国产视频精品一区二区三区| 自拍偷拍第八页| 无码免费一区二区三区免费播放| 国产人伦精品一区二区| 成人影视免费观看| 欧美一区二粉嫩精品国产一线天| 天天操天天干天天| 一区二区高清视频| 欧美日韩激情在线| 国产在线欧美在线| av成人观看| 亚洲一区二区三区四区在线观看 | 欧美三片在线视频观看| 国模私拍一区二区| 成人小视频在线观看免费| 日韩一级成人av| 国产三级自拍视频| 久久国产成人精品国产成人亚洲| 精品少妇一区二区三区日产乱码 | 精品日韩av一区二区| 久久精品99北条麻妃| 免费看av软件| 亚洲激情在线视频| 老司机午夜精品视频| av黄色在线网站| 久久国产精品影视| 久久精品欧美一区二区三区不卡| 国产高潮失禁喷水爽到抽搐| 国产精品美女免费视频| 福利视频第一区| 国产精品无码白浆高潮| 国产欧美高清在线| 深夜福利91大全| 97se狠狠狠综合亚洲狠狠| 日本一级片在线播放| 国产v亚洲v天堂无码| 日韩一级精品视频在线观看| 精品综合久久久久久8888| 不卡一区二区在线观看| 久久99精品久久久久久秒播放器| 日韩美女视频一区二区在线观看| 日韩永久免费视频| 少妇精品无码一区二区三区| 国产精品v欧美精品∨日韩| 欧美午夜精品久久久久久浪潮 | 国产午夜麻豆影院在线观看| 国产成人艳妇aa视频在线 | 色综合五月天导航| 一区二区三区高清不卡| 最新国产中文字幕| 国产性生活一级片| 97久久人人超碰caoprom欧美| 色素色在线综合| 天堂在线中文网| 级毛片内射视频| 日韩精品一区在线视频| 国产脚交av在线一区二区|