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

一文掌握常見的限流算法:計數器、漏桶、令牌桶等

開發 系統
常見的限流算法包括固定窗口計數器算法、滑動窗口計數器算法、漏桶算法、令牌桶算法、基于用戶的限流和動態限流。以下將逐一介紹這些算法并附上 Go 語言的代碼示例。

限流(Rate Limiting),也稱流量控制。是指系統在面臨高并發,或者大流量請求的情況下,限制新的請求對系統的訪問,從而保證系統的穩定性。限流會導致部分用戶請求處理不及時或者被拒,這就影響了用戶體驗。所以一般需要在系統穩定和用戶體驗之間平衡一下。

常見的限流算法包括固定窗口計數器算法、滑動窗口計數器算法、漏桶算法、令牌桶算法、基于用戶的限流和動態限流。其中固定窗口計數器算法、滑動窗口計數器算法由都屬于計數器算法。

以下將逐一介紹這些算法并附上 Go 語言的代碼示例。

1. 固定窗口計數器算法

固定窗口計數器算法屬于計數器算法中的一種。固定窗口計數器算法通過對請求進行計數,限制在固定時間窗口內的請求數。每個窗口開始時計數器被重置,遍歷時間限制內的請求次數。

  • 優點:實現簡單,容易理解。
  • 缺點:窗口邊界可能造成突發流量,將大量請求集中在窗口切換的瞬間。

假設一個接口 1s 中最多請求 100 次。最開始設置一個計數器 count=0,來一個請求count+1,1s 之內 count<=100 的請求可以正常訪問,count>100 的請求則被拒絕,1s 之后 count 被重置為 0,重新開始計數。

固定窗口的問題是容易出現“突刺現象”,例如在 1s 內,100 個請求都是在前 100ms 過來的,那么后面的 900ms 的請求都會被拒絕,而系統此時是空閑的。另外還有“臨界問題”,如果 100 個請求是在后 100ms 過來的,而下一個 1s 的 100 個請求在前 100ms 過來,此時系統在這 200ms 內就需要處理 200 個請求,跟我們想要的不符合。

到這里我們很容易想到,1s 這個范圍太大了,縮小一些就更好了,這種把固定窗口拆成更多個小窗口的做法就是滑動窗口算法了。

Go代碼示例:

package main

import (
    "sync"
    "time"
)

type FixedWindowCounter struct {
    mu        sync.Mutex
    requestCount int
    limit     int
    window    time.Duration
    resetTime time.Time
}

func NewFixedWindowCounter(limit int, window time.Duration) *FixedWindowCounter {
    return &FixedWindowCounter{
        limit: limit,
        window: window,
        resetTime: time.Now(),
    }
}

func (fw *FixedWindowCounter) Allow() bool {
    fw.mu.Lock()
    defer fw.mu.Unlock()

    now := time.Now()
    if now.Sub(fw.resetTime) >= fw.window {
        fw.requestCount = 0
        fw.resetTime = now
    }

    if fw.requestCount < fw.limit {
        fw.requestCount++
        return true
    }
    return false
}

2. 滑動窗口計數器算法

滑動窗口計數器算法屬于計數器算法中的一種?;瑒哟翱诘乃枷胧菍⒐潭ù翱诓鸪筛鄠€小窗口,隨著時間的推移,窗口不斷的滑動,統計也在不斷的變化。窗口拆分的越多,滑動就會越平滑,統計就會越精確,所消耗的資源就會越多。滑動窗口如果只拆為1個窗口,就退化為固定窗口。

  • 優點:比固定窗口算法更平滑,減少請求的突發性。
  • 缺點:實現較復雜。

Go代碼示例:

package main

import (
    "container/list"
    "sync"
    "time"
)

type SlidingWindowCounter struct {
    mu        sync.Mutex
    events    *list.List
    limit     int
    window    time.Duration
}

func NewSlidingWindowCounter(limit int, window time.Duration) *SlidingWindowCounter {
    return &SlidingWindowCounter{
        events: list.New(),
        limit: limit,
        window: window,
    }
}

func (sw *SlidingWindowCounter) Allow() bool {
    sw.mu.Lock()
    defer sw.mu.Unlock()

    now := time.Now()
    // 清理過期的事件
    for sw.events.Len() > 0 {
        if sw.events.Front().Value.(time.Time).Add(sw.window).Before(now) {
            sw.events.Remove(sw.events.Front())
        } else {
            break
        }
    }

    if sw.events.Len() < sw.limit {
        sw.events.PushBack(now)
        return true
    }

    return false
}

3. 漏桶算法

漏桶算法通過一個固定速率的漏桶完成請求,任何超出桶容量的請求將被拒絕。請求以固定速率從桶中出桶。

  • 優點:能夠平滑處理流量,避免突發請求。
  • 缺點:如果桶滿了,則請求會被立即拒絕。

漏桶算法的思想是將請求先放到一個桶中,然后像滴水一樣不斷的從中取出請求執行,桶滿則溢,后面的請求會被拒絕。當漏斗滿了,多余的水就被直接丟棄了。

漏桶算法的特點是流入速度不確定,但是流出速度是確定的,漏桶可以很平滑,均衡的處理請求,但是無法應對短暫的突發流量。

Go代碼示例:

package main

import (
    "sync"
    "time"
)

type LeakyBucket struct {
    mu        sync.Mutex
    capacity  int
    available int
    rate      time.Duration
    lastTime  time.Time
}

func NewLeakyBucket(capacity int, rate time.Duration) *LeakyBucket {
    return &LeakyBucket{
        capacity:  capacity,
        available: capacity,
        rate:      rate,
        lastTime:  time.Now(),
    }
}

func (lb *LeakyBucket) Allow() bool {
    lb.mu.Lock()
    defer lb.mu.Unlock()

    now := time.Now()
    elapsed := now.Sub(lb.lastTime)

    // 更新可用令牌
    lb.available += int(elapsed / lb.rate)
    if lb.available > lb.capacity {
        lb.available = lb.capacity
    }
    lb.lastTime = now

    if lb.available > 0 {
        lb.available--
        return true
    }

    return false
}

4. 令牌桶算法

令牌桶算法的思想是不斷的生成令牌放到一個桶中,請求到來時到桶中申請令牌,申請得到就執行,申請不到就拒絕。如果桶中的令牌滿了,新生成的令牌也會丟棄。

  • 優點:允許突發流量,控制能力更強。
  • 缺點:稍微復雜。

與漏桶不同的是,令牌桶是流入速度確定(生成令牌的速度),流出速度不確定,所以它不像漏桶一樣可以均衡的處理請求,但是由于有令牌桶這個緩沖,一旦有突增的流量,令牌桶里已有的令牌可以短暫的應對突發流量。

由于流出速度是不限制的,此時桶中已有的令牌都可以被申請到,請求一下子就會到我們的服務,給系統帶來一定的壓力,所以桶的大小需要合適,不宜過大。

舉個例子:令牌桶的大小是 1000,每秒放 100 個令牌,經過一段時間后,請求有空閑時,桶里的令牌就會積壓,最終保存了滿 1000 個令牌,由于某刻流量突增,有 1000 個請求到來,此時能申請到 1000 個令牌,所有請求都會放行,最終達到我們的系統,如果令牌桶過大,系統可能會承受不了這波請求。

令牌桶算法可以說是對漏桶算法的改進。漏桶算法能限制請求的速率。而令牌桶算法在限制請求速率的同時還允許一定程度的突發調用。

過程如下:

一直放令牌,如果令牌桶達到上限則丟棄令牌,假設每秒放 10 個,可以應對一定程度的流量激增,如此時令牌桶有 100 個令牌,突然發生 200 次調用,則此時最開始的 100 次請求可以正常調用,后續的請求才會以 10個/s 的速率來調用。

Go代碼示例:

package main

import (
    "sync"
    "time"
)

type TokenBucket struct {
    mu       sync.Mutex
    capacity int
    tokens   int
    rate     time.Duration
    lastTime time.Time
}

func NewTokenBucket(capacity int, rate time.Duration) *TokenBucket {
    return &TokenBucket{
        capacity: capacity,
        tokens:   capacity,
        rate:     rate,
        lastTime: time.Now(),
    }
}

func (tb *TokenBucket) Allow() bool {
    tb.mu.Lock()
    defer tb.mu.Unlock()

    now := time.Now()
    elapsed := now.Sub(tb.lastTime)

    // 計算可用令牌數
    tb.tokens += int(elapsed / tb.rate)
    if tb.tokens > tb.capacity {
        tb.tokens = tb.capacity
    }
    tb.lastTime = now

    if tb.tokens > 0 {
        tb.tokens--
        return true
    }
    
    return false
}

5. 基于用戶的限流

基于用戶的限流策略允許對不同用戶設置不同的請求頻率限制??梢允褂蒙鲜鋈我馑惴ㄗ鳛榛A,根據用戶身份進行控制。

Go代碼示例:

package main

import (
    "sync"
    "time"
)

type UserRateLimiter struct {
    mu         sync.Mutex
    userLimits map[string]int
    userCounts map[string]int
    limit      int
    window     time.Duration
    resetTime  map[string]time.Time
}

func NewUserRateLimiter(limit int, window time.Duration) *UserRateLimiter {
    return &UserRateLimiter{
        userLimits: make(map[string]int),
        userCounts: make(map[string]int),
        limit:      limit,
        window:     window,
        resetTime:  make(map[string]time.Time),
    }
}

func (url *UserRateLimiter) Allow(userId string) bool {
    url.mu.Lock()
    defer url.mu.Unlock()

    now := time.Now()
    if _, exists := url.resetTime[userId]; !exists {
        url.resetTime[userId] = now
    }

    if now.Sub(url.resetTime[userId]) >= url.window {
        url.userCounts[userId] = 0
        url.resetTime[userId] = now
    }

    if url.userCounts[userId] < url.limit {
        url.userCounts[userId]++
        return true
    }
    
    return false
}

6. 動態限流

動態限流算法根據系統的實時性能和負載情況動態調整限流策略。具體實現可以結合上述算法,尤其是令牌桶算法。

Go代碼示例:

package main

import (
    "sync"
    "time"
)

type DynamicRateLimiter struct {
    mu         sync.Mutex
    currentRate int
    maxRate    int
    minRate    int
    rateChange time.Duration
    lastChange time.Time
}

func NewDynamicRateLimiter(maxRate, minRate int, rateChange time.Duration) *DynamicRateLimiter {
    return &DynamicRateLimiter{
        currentRate: maxRate,
        maxRate:     maxRate,
        minRate:     minRate,
        rateChange:  rateChange,
        lastChange:  time.Now(),
    }
}

func (dr *DynamicRateLimiter) AdjustRate(load int) {
    dr.mu.Lock()
    defer dr.mu.Unlock()

    now := time.Now()
    if now.Sub(dr.lastChange) < dr.rateChange {
        return
    }

    if load > dr.currentRate {
        dr.currentRate--
        if dr.currentRate < dr.minRate {
            dr.currentRate = dr.minRate
        }
    } else {
        dr.currentRate++
        if dr.currentRate > dr.maxRate {
            dr.currentRate = dr.maxRate
        }
    }

    dr.lastChange = now
}

func (dr *DynamicRateLimiter) Allow() bool {
    // 這里可以使用任意一種算法實現,根據dr.currentRate來限制請求
    // 簡單示例,返回 true 表示請求被允許
    return true
}

總結

盡管限流算法在實現上各有不同,但它們的核心目標是確保系統在高并發情況下能夠高效、穩定地運行。選擇合適的限流算法需要根據具體業務需求、流量特征及系統架構來進行相應評估。

責任編輯:趙寧寧 來源: 令飛編程
相關推薦

2020-10-16 09:34:39

漏桶令牌桶限流

2023-02-20 08:08:48

限流算法計數器算法令牌桶算法

2021-10-12 10:00:25

架構運維技術

2021-05-25 08:01:55

SentinelRedis 流控算法

2021-03-30 10:46:42

SpringBoot計數器漏桶算法

2025-08-27 02:15:00

2023-11-07 08:18:35

漏桶算法限流算法

2023-10-16 16:00:27

Redis限流

2022-01-12 12:46:32

Go限流保障

2023-08-10 08:00:42

令牌限流器計數器

2025-01-21 08:31:12

2023-08-08 08:01:22

微服務架構服務

2023-11-15 07:40:40

2024-07-05 16:47:46

2021-05-31 07:01:46

限流算法令牌

2023-05-16 08:01:26

限流算法滑動窗口

2023-09-06 15:22:26

限流Java

2025-07-01 02:00:00

Spring接口限流高并發

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行
點贊
收藏

51CTO技術棧公眾號

xx欧美视频| 黄网在线免费| 亚洲先锋成人| 亚洲精品狠狠操| 久久精品影视大全| 91cn在线观看| 久久在线观看免费| 国产精品一区二区久久国产| 中文字幕另类日韩欧美亚洲嫩草| 精品久久ai电影| 欧美写真视频网站| 屁屁影院ccyy国产第一页| 久久视频www| 国产99久久久国产精品潘金| 国产成人av在线| 久久黄色免费网站| 欧美日韩在线网站| 亚洲国产精品国自产拍av秋霞| 91热这里只有精品| 岛国毛片av在线| 亚洲欧美综合色| 欧美精品一区二区三区久久| 国内精品久久久久久久久久久 | 18禁男女爽爽爽午夜网站免费| 91大神在线网站| 久久综合久久综合九色| 亚洲精品免费在线视频| 亚洲第一网站在线观看| 黄色精品网站| 久久人体大胆视频| 蜜桃久久精品成人无码av| 91国内精品白嫩初高生| 777欧美精品| 国产嫩草在线观看| 欧美gv在线观看| 午夜伊人狠狠久久| 欧美日韩激情四射| 激情视频在线观看| 国产欧美精品在线观看| 久久综合精品一区| 四虎在线视频免费观看| 大陆成人av片| 91一区二区三区| 99热这里只有精| 久久99最新地址| 成人精品久久一区二区三区| 亚洲中文无码av在线| 久久aⅴ国产紧身牛仔裤| 欧美交受高潮1| 久久综合色综合| 欧美国产先锋| 久久99久久99精品免观看粉嫩| www.av免费| 亚洲国产精品91| 久久精品视频网站| 午夜激情福利网| 亚洲天天影视网| 久久手机精品视频| 免费一级片在线观看| 欧美成人高清| 久久久中文字幕| 日本在线视频免费观看| 日韩午夜激情| 91成人在线播放| 久久久久久久极品| 中文在线不卡| 国产91九色视频| 亚洲av综合一区| 久久精品国产99| 91在线色戒在线| 黄色成人一级片| 久久午夜羞羞影院免费观看| 日韩av高清| 欧美高清视频| 亚洲午夜羞羞片| 91专区在线观看| 免费在线观看一区| 欧美三区在线观看| av噜噜在线观看| xxxxxhd亚洲人hd| 精品视频偷偷看在线观看| 少妇久久久久久久久久| 亚欧美无遮挡hd高清在线视频| 久久av.com| 日韩精品乱码久久久久久| 国产精品久久久一区二区| 日本精品视频在线播放| 一级做a爱片性色毛片| 国产一区二区三区香蕉| 国产欧美欧洲| yiren22亚洲综合伊人22| 一区二区视频在线| www国产黄色| 国产精品视频一区二区三区| 亚洲第一精品夜夜躁人人爽| 亚洲毛片亚洲毛片亚洲毛片| 国内揄拍国内精品久久| 国产成人亚洲综合| 99久久国产热无码精品免费| 91麻豆成人久久精品二区三区| 午夜精品区一区二区三| 欧美xxx黑人xxx水蜜桃| 一本一道久久a久久精品| 欧美色图校园春色| 免费看成人哺乳视频网站| 久久精品视频播放| 国产91精品看黄网站在线观看| 国产乱子伦一区二区三区国色天香| 久久99久久99精品蜜柚传媒| 色哟哟免费在线观看| 婷婷成人激情在线网| 大肉大捧一进一出好爽视频| 国产精品亚洲欧美一级在线| 亚洲人午夜精品免费| 久久黄色免费网站| 精彩视频一区二区| 欧美第一黄网| 蜜桃传媒在线观看免费进入 | 国产高清在线免费| 久久精品免费在线观看| 97干在线视频| 高清精品久久| 在线观看亚洲区| 国产一级片毛片| 国产成人精品三级| 亚洲日本欧美在线| 日韩一区二区三区在线免费观看| 亚洲国产精品久久91精品| 国产精品白丝喷水在线观看| 日本aⅴ精品一区二区三区| 国产一区福利视频| 丝袜在线视频| 欧美一区日韩一区| 1024在线看片| 日韩黄色小视频| 免费毛片一区二区三区久久久| av电影在线免费| 欧美tk丨vk视频| 美女的奶胸大爽爽大片| 九九在线精品视频| 亚洲欧洲一区二区福利| 国模一区二区| 一区二区在线视频播放| 免费视频网站在线观看入口| 久久综合色8888| 欧美啪啪免费视频| 精品国产一区二区三区成人影院 | 日产中文字幕在线精品一区| 午夜影院在线播放| 日韩激情在线视频| 日韩欧美三级视频| 99久久亚洲一区二区三区青草| 欧美一二三不卡| 伊人久久亚洲| 久久免费视频网| 色婷婷av一区二区三| 亚洲电影在线播放| 熟女人妻在线视频| 国产亚洲精品v| 蜜桃麻豆91| 台湾佬中文娱乐久久久| 一本色道久久综合亚洲精品小说| 欧美特级黄色片| 欧美国产精品中文字幕| 亚洲一级片网站| 午夜精品视频一区二区三区在线看| 国产噜噜噜噜噜久久久久久久久| 日本视频在线播放| 日韩一区二区免费在线观看| 久草视频免费播放| 97精品国产露脸对白| 日本熟妇人妻xxxxx| 日韩一区二区在线| 亚洲最大福利网| 无码小电影在线观看网站免费| 亚洲天堂av网| 国产精品高潮呻吟AV无码| 亚洲女子a中天字幕| 俄罗斯黄色录像| 香蕉国产精品偷在线观看不卡| 奇米精品在线| 美女精品视频在线| 97久久精品国产| 成人三级黄色免费网站| 欧美一区二区在线看| 久久久久噜噜噜亚洲熟女综合| 26uuu欧美| 最新免费av网址| 在线观看视频日韩| 亚洲精品国产精品国自产观看 | 337p亚洲精品色噜噜| 久草免费在线观看视频| 久久精品男人天堂av| 先锋资源在线视频| 性欧美xxxx大乳国产app| 亚洲一区二区三区精品视频| 国产ts一区| 国产精品视频一区国模私拍 | 亚洲制服中文字幕| 国产模特精品视频久久久久| 中文一区一区三区免费| 久久影视三级福利片| 国产日韩在线视频| 成人性生活av| 欧美丰满片xxx777| 337p日本欧洲亚洲大胆鲁鲁| 日韩成人xxxx| 精品国产亚洲AV| 欧美午夜电影一区| 国产尤物在线视频| 亚洲精品福利视频网站| 成年人在线免费看片| www.成人网.com| 一区二区三区人妻| 毛片不卡一区二区| 欧美日韩在线视频一区二区三区| 欧美成人一品| 亚洲精品在线免费看| 色婷婷久久久| 国产日韩一区欧美| 玖玖玖电影综合影院| 国产精品久久久久久久av电影| 日本在线播放一二三区| 欧美黑人国产人伦爽爽爽| a√资源在线| 亚洲女同性videos| 无码国产精品一区二区色情男同 | 91精品国产自产拍在线观看蜜| 欧美一级爽aaaaa大片| 粉嫩精品导航导航| 亚洲一区二区三区久久| 成人国产激情在线| 日韩美女视频在线观看| 男人久久天堂| 久久人人爽人人| 成人av影院在线观看| 九九热最新视频//这里只有精品 | 亚洲乱码中文字幕| 九九热视频在线免费观看| 中文字幕国产一区二区| 国产精品久久免费观看| 国产视频一区在线观看| 少妇真人直播免费视频| 26uuu国产在线精品一区二区| 免费日本黄色网址| av激情综合网| 中国美女乱淫免费看视频| 99re66热这里只有精品3直播| 国产激情视频网站| 99久久久国产精品免费蜜臀| 熟妇人妻久久中文字幕| 99久久婷婷国产综合精品电影 | 欧美日韩国产123| 日本片在线看| 久久青草福利网站| 亚洲欧美se| 国产精品99久久久久久人| 第四色男人最爱上成人网| 国产精品一区二区久久国产| 日韩欧国产精品一区综合无码| 成人看片人aa| 在这里有精品| 麻豆蜜桃91| 精品久久久久中文字幕小说| 亚洲欧洲一二三| 欧美激情无毛| 男人添女人下部高潮视频在观看 | 中文字幕亚洲乱码| 精品一区二区三区久久久| 亚洲天堂小视频| aaa亚洲精品| 中文字幕在线观看免费高清| 国产精品视频一二三区| 国产精品九九九九九九| 香蕉加勒比综合久久| 日本中文字幕久久| 欧美伦理视频网站| 亚洲免费国产视频| 亚洲免费电影一区| 日韩在线资源| 欧美国产日本在线| 韩日精品一区二区| 91精品在线影院| 美女av一区| 一级二级三级欧美| 在线观看亚洲| 亚洲一级片网站| 99免费精品在线| 顶级黑人搡bbw搡bbbb搡| 亚洲午夜私人影院| 欧美性受xxx黑人xyx性爽| 欧美一卡二卡在线观看| 奇米影视888狠狠狠777不卡| 久久精品国产欧美激情| 国产传媒在线| 成人亚洲欧美一区二区三区| 任你躁在线精品免费| 潘金莲一级淫片aaaaaa播放1| 亚洲深夜影院| 超碰在线超碰在线| 久久精品一区四区| 日本伦理一区二区三区| 香蕉成人啪国产精品视频综合网| 伊人久久成人网| 欧美一区二区精品久久911| 欧美日韩激情视频一区二区三区| 欧美成人免费在线观看| 韩国美女久久| 国产伦精品一区二区三区视频免费| 欧美xxxx中国| 日韩欧美国产免费| 国产精品1区2区| jizzjizz日本少妇| 色域天天综合网| 无码h黄肉3d动漫在线观看| 久久亚洲精品中文字幕冲田杏梨| 欧美电影免费观看| 国产精品视频免费一区| 亚洲精品a级片| 国产喷水theporn| 久久久三级国产网站| 国产一级av毛片| 日韩午夜电影av| 日本在线观看www| 国产精品久久久久久影视| 欧美三级电影在线| 农民人伦一区二区三区| 国产成人aaaa| 国产乱国产乱老熟300| 91精品国产综合久久香蕉的特点 | 国产精品久久久久久久久快鸭| 91美女免费看| 亚洲第一福利网| 黑人玩欧美人三根一起进| 96sao精品视频在线观看| 香蕉精品视频在线观看| av亚洲天堂网| 国产精品欧美极品| 亚洲天天综合网| 日韩最新在线视频| 欧美97人人模人人爽人人喊视频| 日韩精品电影网站| 久久久久久夜| 91视频免费在观看| 在线观看日韩av先锋影音电影院| 毛片免费在线观看| 国产精品极品美女粉嫩高清在线| 一区二区三区四区在线看| 黑鬼大战白妞高潮喷白浆| 久久久久久电影| 国产三级av片| 亚洲日韩中文字幕| 国产一区二区精品调教| 亚洲图片都市激情| 久久超级碰视频| 久久久久亚洲av片无码| 日韩欧美一二三区| 欧美xxxx免费虐| 国产一区免费在线观看| 一区二区国产精品| 亚洲第一香蕉网| 在线免费观看日韩欧美| 天堂地址在线www| 91视频国产精品| 韩日视频一区| 好吊日免费视频| 欧美日韩国产精品成人| 日本在线观看大片免费视频| 国产三区精品| 日本在线观看不卡视频| 成人自拍小视频| 精品久久久久久久久久久院品网| 国产免费拔擦拔擦8x高清在线人| 欧美日韩亚洲综合一区二区三区激情在线| 久久国产日韩| 性欧美videos| 精品对白一区国产伦| 免费看av不卡| 综合操久久久| fc2成人免费人成在线观看播放| 亚洲精品成人在线视频| 久久激情视频免费观看| 国产精品久av福利在线观看| 日av中文字幕| 一区二区三区四区在线免费观看| 外国精品视频在线观看 | 精品精品国产国产自在线| 日韩视频一二区| 无遮挡又爽又刺激的视频| 亚洲天堂精品视频| 日夜干在线视频| 亚洲va国产va天堂va久久| 国产精品日韩欧美一区| 国产中文字幕久久| 欧美精品一区二区久久婷婷| 国产成人精品一区二三区在线观看| 成人毛片100部免费看| 国产日韩欧美不卡在线| 亚洲黄色小说网址| 国产精品亚洲视频在线观看|