成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > redis實(shí)現(xiàn)的四種常見限流策略

redis實(shí)現(xiàn)的四種常見限流策略

熱門標(biāo)簽:宿遷便宜外呼系統(tǒng)平臺 十堰營銷電銷機(jī)器人哪家便宜 北京400電話辦理收費(fèi)標(biāo)準(zhǔn) 魔獸2青云地圖標(biāo)注 超呼電話機(jī)器人 山東外呼銷售系統(tǒng)招商 貴州電銷卡外呼系統(tǒng) 日本中國地圖標(biāo)注 鄭州人工智能電銷機(jī)器人系統(tǒng)

引言

  • 在web開發(fā)中功能是基石,除了功能以外運(yùn)維和防護(hù)就是重頭菜了。因?yàn)樵诰W(wǎng)站運(yùn)行期間可能會因?yàn)橥蝗坏脑L問量導(dǎo)致業(yè)務(wù)異常、也有可能遭受別人惡意攻擊
  • 所以我們的接口需要對流量進(jìn)行限制。俗稱的QPS也是對流量的一種描述
  • 針對限流現(xiàn)在大多應(yīng)該是令牌桶算法,因?yàn)樗鼙WC更多的吞吐量。除了令牌桶算法還有他的前身漏桶算法和簡單的計數(shù)算法
  • 下面我們來看看這四種算法

固定時間窗口算法

  • 固定時間窗口算法也可以叫做簡單計數(shù)算法。網(wǎng)上有很多都將計數(shù)算法單獨(dú)抽離出來。但是筆者認(rèn)為計數(shù)算法是一種思想,而固定時間窗口算法是他的一種實(shí)現(xiàn)
  • 包括下面滑動時間窗口算法也是計數(shù)算法的一種實(shí)現(xiàn)。因?yàn)橛嫈?shù)如果不和時間進(jìn)行綁定的話那么失去了限流的本質(zhì)了。就變成了拒絕了

優(yōu)點(diǎn)

  • 在固定的時間內(nèi)出現(xiàn)流量溢出可以立即做出限流。每個時間窗口不會相互影響
  • 在時間單元內(nèi)保障系統(tǒng)的穩(wěn)定。保障的時間單元內(nèi)系統(tǒng)的吞吐量上限

缺點(diǎn)

  • 正如圖示一樣,他的最大問題就是臨界狀態(tài)。在臨界狀態(tài)最壞情況會受到兩倍流量請求
  • 除了臨界的情況,還有一種是在一個單元時間窗內(nèi)前期如果很快的消耗完請求閾值。那么剩下的時間將會無法請求。這樣就會因?yàn)橐凰查g的流量導(dǎo)致一段時間內(nèi)系統(tǒng)不可用。這在互聯(lián)網(wǎng)高可用的系統(tǒng)中是不能接受的。

實(shí)現(xiàn)

  • 好了,關(guān)于原理介紹及優(yōu)缺點(diǎn)我們已經(jīng)了解了。下面我們動手實(shí)現(xiàn)它
  • 首先我們在實(shí)現(xiàn)這種計數(shù)時,采用redis是非常好的選擇。這里我們通過redis實(shí)現(xiàn)

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) {
    //根據(jù)前端傳遞的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();
    //設(shè)置時間固定時間窗口長度 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;
}

結(jié)果測試

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

滑動時間窗口算法

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

優(yōu)點(diǎn)

  • 實(shí)質(zhì)上就是固定時間窗口算法的改進(jìn)。所以固定時間窗口的缺點(diǎn)就是他的優(yōu)點(diǎn)。
  • 內(nèi)部抽象一個滑動的時間窗,將時間更加小化。存在邊界的問題更加小??蛻舾兄趿?。

缺點(diǎn)

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

實(shí)現(xiàn)

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

controller

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

service

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

結(jié)果測試

  • 和固定時間窗口采用相同的并發(fā)。為什么上面也會出現(xiàn)臨界狀況呢。因?yàn)樵诖a里時間單元間隔比固定時間間隔采用還要大 。 上面演示固定時間窗口時間單元是1S出現(xiàn)了最壞情況。而滑動時間窗口設(shè)計上就應(yīng)該間隔更短。而我設(shè)置成10S 也沒有出現(xiàn)壞的情況
  • 這里就說明滑動比固定的優(yōu)處了。如果我們調(diào)更小應(yīng)該更加不會出現(xiàn)臨界問題,不過說到底他還是避免不了臨界出現(xiàn)的問題

漏桶算法

  • 滑動時間窗口雖然可以極大程度的規(guī)避臨界值問題,但是始終還是避免不了
  • 另外時間算法還有個致命的問題,他無法面對突如其來的大量流量,因?yàn)樗谶_(dá)到限流后直接就拒絕了其他額外流量
  • 針對這個問題我們繼續(xù)優(yōu)化我們的限流算法。 漏桶算法應(yīng)運(yùn)而生

優(yōu)點(diǎn)

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

缺點(diǎn)

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

實(shí)現(xiàn)

controller

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

service

在service中我們通過redis的list的功能模擬出桶的效果。這里代碼是實(shí)驗(yàn)室性質(zhì)的。在真實(shí)使用中我們還需要考慮并發(fā)的問題

@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) {
        //為了防止并發(fā)場景。這里添加完成之后也要驗(yàn)證。  即使這樣本段代碼在高并發(fā)也有問題。此處演示作用
        redisTemplate.opsForList().trim(redisKey, 0, times-1);
        throw new RuntimeException("qps refuse request");
    }
    Mapstring, object=""> map = new HashMap>();
    map.put("success", "success");
    return map;
}

下游消費(fèi)

@Component
public class SchedulerTask {

    @Autowired
    RedisTemplate redisTemplate;

    private String redisKey="qpsList";

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

}

測試

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

令牌桶算法

令牌桶和漏桶法是一樣的。只不過將桶的作用方向改變了一下。

漏桶的出水速度是恒定的,如果流量突然增加的話我們就只能拒絕入池

但是令牌桶是將令牌放入桶中,我們知道正常情況下令牌就是一串字符當(dāng)桶滿了就拒絕令牌的入池,但是面對高流量的時候正常加上我們的超時時間就留下足夠長的時間生產(chǎn)及消費(fèi)令牌了。這樣就盡可能的不會造成請求的拒絕

最后,不論是對于令牌桶拿不到令牌被拒絕,還是漏桶的水滿了溢出,都是為了保證大部分流量的正常使用,而犧牲掉了少部分流量

public Mapstring, object=""> startLingpaitong(Mapstring, object=""> paramMap) {
        String redisKey = "lingpaitong";
        String token = redisTemplate.opsForList().leftPop(redisKey).toString();
        //正常情況需要驗(yàn)證是否合法,防止篡改
        if (StringUtils.isEmpty(token)) {
            throw new RuntimeException("令牌桶拒絕");
        }
        Mapstring, object=""> map = new HashMap>();
        map.put("success", "success");
        return map;
    }
@Scheduled(cron="*/1 * * * * ?")
    private void process(){
        //一次性生產(chǎn)兩個
        System.out.println("正在消費(fèi)。。。。。。");
        for (int i = 0; i  2; i++) {
            redisTemplate.opsForList().rightPush(redisKey, i);
        }
    }

到此這篇關(guān)于基于redis實(shí)現(xiàn)的四種常見的限流策略的文章就介紹到這了,更多相關(guān)redis 限流策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

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

標(biāo)簽:臺州 楊凌 吉安 北京 大慶 江蘇 朝陽 果洛

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《redis實(shí)現(xiàn)的四種常見限流策略》,本文關(guān)鍵詞  redis,實(shí)現(xiàn),的,四種,常見,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《redis實(shí)現(xiàn)的四種常見限流策略》相關(guān)的同類信息!
  • 本頁收集關(guān)于redis實(shí)現(xiàn)的四種常見限流策略的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产天堂素人系列在线视频| 中文字幕日本在线观看| 成人夜色视频网站在线观看| av中文资源在线资源免费观看| 午夜精品毛片| 免费能直接在线观看黄的视频| 午夜在线观看视频网站| 日韩乱码在线观看| 日韩精品免费一线在线观看| 成人影视在线播放| 色视频欧美一区二区三区| 一级片视频免费| 最近免费中文字幕中文高清百度| 国产精品一区二区羞羞答答| 青青青青在线视频| 99久久久久国产精品| 日本aⅴ大伊香蕉精品视频| 国产91在线亚洲| 欧美涩涩网站| 国产精品nxnn| 中文字幕在线看| 成人av黄色| 欧美乱妇高清无乱码免费| 福利视频一区二区三区四区| 国产无色aaa| www黄色在线| 欧美18一12sex性处hd| 亚洲香蕉av在线一区二区三区| 色狠狠一区二区三区香蕉| 啦啦啦啦免费高清视频在线观看1| 九九视频免费看| 亚洲欧美99| 精品影院一区| 国产男男chinese网站| 亚洲高清不卡av| 国产成人福利| 五月天色网站| 国产在线精品一区二区不卡了| 国精一区二区| av免费观看网| www日韩视频| 另类图片亚洲另类| 理论片午夜视频在线观看| 国产精品视频免费| 小早川怜子影音先锋在线观看| 国产视频一区在线| 欧美成人一区二区三区四区| 不用播放器的免费av| 色乱码一区二区三区88| 在线观看视频日韩| 国产激情在线看| 中文字幕无码乱码人妻日韩精品| 成人eeuss影院在线观看| 欧美激情一级二级三级在线视频| 韩日视频在线观看| 亚洲在线免费播放| 国产福利在线免费| 日韩香蕉视频| 欧美性活一级视频| 国产一区在线播放| 性chinese极品按摩| 中文字幕第一页久久| 亚洲一区av在线播放| 欧美精品一区二区蜜臀亚洲| 一道本在线免费视频| 日韩亚洲欧美综合| 久久99精品国产一区二区三区| 亚洲精品毛片| 国产真人无码作爱视频免费| 秋霞福利视频| 毛片网站大全| 视频一区视频二区在线观看| 98精品国产高清在线xxxx天堂| 中文字幕999| 在线不卡欧美精品一区二区三区| 精品一区二区日韩| 91美剧网在线播放| 四虎成人影院网址| 初高中福利视频网站| 亚洲一卡二卡| а√天堂中文在线资源8| 男捅女免费视频| 久久精品国产亚洲AV无码麻豆| 久久久久久亚洲精品中文字幕| 亚洲深夜影院| 亚洲国产精品自拍视频| 亚洲人成网7777777国产| 粉嫩久久99精品久久久久久夜| 国产后入清纯学生妹| 亚洲精品欧美二区三区中文字幕| 欧美一级高清片在线观看| 日本美女一区二区三区视频| 成人羞羞网站入口| 国产香蕉视频在线观看| 88在线观看91蜜桃国自产| 成人美女视频在线观看18| 91在线码无精品| 爱草在线视频| 欧美精品aaaa| 亚洲色图一二三区| 欧美日韩另类丝袜其他| 成人免费一区二区三区| 亚洲视频狠狠干| 天天操夜夜操天天射| 精品粉嫩aⅴ一区二区三区四区| 国产欧美精品国产国产专区| 精品亚洲免费视频| 九九精品久久| 91精品少妇一区二区三区蜜桃臀| 国产免费999| 一级黄色录像免费看| 亚洲人成电影院色| 欧美在线观看一区二区三区| 亚洲大胆av| 国产成人在线看| 在线观看日韩一区二区| 国产高清在线观看| 五月天综合激情网| 久久久久久久综合| 性猛交ⅹxxx富婆video| 国产美女激情视频| 香港成人在线视频| 亚洲综合视频一区| 国产日产精品一区二区三区的介绍| 国产波霸爆乳一区二区| 美女福利视频在线| 在线播放免费| 爽爽免费视频| 精品麻豆剧传媒av国产九九九| 国产精品久久久久久久泡妞| 日韩av一区二| 国模私拍视频在线观看| 国产综合色香蕉精品| 亚洲一级免费观看| 久久精品五月| 久久精品国产亚洲av久| 亚洲二区中文字幕| 99在线免费观看| www.日韩欧美| 99精品在免费线中文字幕网站一区| 蜜桃视频久久一区免费观看入口| 粉嫩av国产一区二区三区| 日韩欧美一区二区三区久久| 国产精品国产三级国产普通话三级| 香蕉久久国产av一区二区| 岳乳丰满一区二区三区| 亚洲精品国产精品自产a区红杏吧| 国外成人在线播放| 四虎影音在线| 能在线观看av网站| 国内精品在线观看视频| 一区二区在线观| 国产在线自天天| 国产z一区二区三区| 欧美日韩国产精品激情在线播放| 综合国产在线视频| 果冻天美麻豆一区二区国产| 久久激情视频免费观看| 久久福利视频导航| 女子免费在线观看视频www| 免费亚洲精品视频| 色哟哟一一国产精品| 久草视频这里只有精品| 美女又黄又免费的视频| 亚洲国产成人精品电影| 国产精品国产三级国产专区53| 成人一区二区在线| 国产日韩免费| 亚洲成人av电影在线| 波多野结衣久久精品| 奇米777欧美一区二区| 日韩在线免费看| av资源吧首页| 国产在线999| 久久国产精品久久久久久电车| 97色婷婷成人综合在线观看| 美女日批视频在线观看| 亚洲午夜未满十八勿入免费观看全集| 在线免费观看日韩av| 国产欧美日韩中文字幕| 成人免费看片'免费看| 水蜜桃亚洲一二三四在线| 日日夜夜国产| 自拍视频一区| 美丽的小蜜桃4春潮| 日韩综合视频在线观看| 污污的视频免费| 波多野结衣亚洲色图| 日韩一区二区三区不卡视频| 男人的天堂av网| 97超碰在线资源| 日本10禁啪啪无遮挡免费一区二区| 国内精品国产三级国产a久久| 欧美爱爱免费视频| 黄页大全在线免费观看| 少妇高潮一区二区三区99小说| 国产精品视频中文字幕| 亚洲熟女一区二区三区| 成人久久18免费网站麻豆| 亚洲精品国产精品国自产在线| 精品国产乱码久久久久久果冻传媒| 9l视频自拍蝌蚪9l视频| 日本wwww视频| 天堂中文资源在线| 欧美午夜久久| 中文天堂最新版本在线观看| 欧美最猛性xxxx| 一本一道久久久a久久久精品91| 亚洲无线码一区二区三区| av影片在线| 欧美性生活影院| 一区二区三区视频播放| 午夜欧美精品久久久久久久| 天天爱天天干天天操| 在线视频综合导航| 成年人在线观看视频| 欧美96一区二区免费视频| 久久久久久久久久久久91| 日韩在线国产精品| 国产一区亚洲一区| 欧美伊人亚洲伊人色综合动图| 久久这里有精品视频| 精品免费国产二区三区| 久久午夜免费电影| 欧美人成在线观看网站高清| 国产男女猛烈无遮挡a片漫画| 精品日韩在线一区| 国产高清自拍视频在线观看| 国产欧美亚洲精品| 成人a在线观看高清电影| 亚洲成年人在线播放| av亚洲产国偷v产偷v自拍| 欧美日韩电影一区二区三区| 欧美精品一区二区三区蜜臀| 国产乱子伦农村叉叉叉| 日韩视频一区二区三区在线播放| 欧美一区二区三区久久精品茉莉花| 国产美女自拍视频| 亚洲欧美变态国产另类| av中文字幕网址| 一本高清dvd不卡在线观看| 日韩偷拍一区二区| 久久午夜免费电影| 亚洲成人av在线播放| 婷婷电影在线观看| 暖暖成人免费视频| 性高潮久久久久久久久久| 九色porny丨入口在线| 夜色资源站国产www在线视频| 在线日韩欧美| 国产91色在线|免| 男女男精品视频站| 欧美天堂视频| 亚洲一区二区电影| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲欧美激情小说另类| 久久婷婷蜜乳一本欲蜜臀| 国产亚洲一区二区三区| 国产精品我不卡| 成全在线观看免费完整动漫| 精品视频一区在线视频| 99久久99久久免费精品小说| 嫩草影院发布页| 成人h动漫精品一区二区下载| 高清wwwwxxxx| 久久网福利资源网站| 91系列在线播放| 免费黄色欧美视频| 四虎永久免费影院| 668精品在线视频| 日韩中文在线字幕| 精品少妇人妻av一区二区| 无吗不卡中文字幕| 五月婷婷激情综合| 中出嫩模无套| 清清草免费视频| 国产综合欧美在线看| 免费大片在线观看www| 日韩精品在线播放| 日本三级中文字幕| 精品少妇一区二区三区视频免付费| 国产乱人乱偷精品视频a人人澡| 91精品国产成人观看| 久久av网址| 亚洲电影中文字幕| 97se在线视频| 五月天激情国产综合婷婷婷| 精品无人区麻豆乱码久久久| 国产一区二区三区四区在线观看| 日日摸夜夜添夜夜添国产精品| 欧美手机在线观看| 日本a在线播放| 最近中文字幕在线中文视频| 在线视频欧美性高潮| 蜜桃视频在线入口www| 小草在线视频在线免费视频| 免费不卡视频| 性做久久久久久久免费看| 中文字幕av手机在线| 宅男在线观看免费高清网站| 亚洲视频1区| 亚洲主播在线播放| 五月天欧美精品| 看电影就来5566av视频在线播放| 亚洲成人av影片| 久久免费高清视频| 伊人网综合在线| 最近中文字幕在线视频| 无码人妻精品一区二区三区温州| 国产女同互慰高潮91漫画| 高清视频一区二区三区| 一区二区三区国产好的精华液| 夜夜夜久久久| 欧美三级一区二区三区| 国内精品国产三级国产a久久| 欧美性xxxxxxxxx| 亚洲国产精品久久不卡毛片| 少妇欧美激情一区二区三区| aa国产精品| 欧美老熟妇一区二区三区| 日本人体一区二区| 欧美精品国产精品| 91在线视频导航| 91 中文字幕| 亚洲一区二区三区高清不卡| 久久精品噜噜噜成人av农村| 99久久精品日本一区二区免费| 国产精品熟女一区二区不卡|