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

上線別再“一刀切”!Gateway 做流量染色 + 灰度發(fā)布,告別線上事故

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
很多同學(xué)把 SpringCloud Gateway 當(dāng)成簡(jiǎn)單的轉(zhuǎn)發(fā)工具,只用它做限流、鑒權(quán),其實(shí)它的核心價(jià)值是控制流量的走向,通過(guò)流量染色給流量貼標(biāo)簽,通過(guò)灰度路由讓流量走對(duì)路,這才是線上平穩(wěn)上線的關(guān)鍵。

最近團(tuán)隊(duì)迭代頻繁,連續(xù)幾周都在做新功能上線,從測(cè)試環(huán)境驗(yàn)證到生產(chǎn)環(huán)境放量,全程謹(jǐn)小慎微沒(méi)出一次故障,主要是用好了 Spring Cloud Gateway 的 流量染色 和 灰度發(fā)布。

很多同學(xué)面試時(shí)被問(wèn)用過(guò) SpringCloud Gateway 嗎?,只會(huì)說(shuō)做限流、鑒權(quán),但這些都是網(wǎng)關(guān)的基礎(chǔ)操作。要想出去吹,得說(shuō)用網(wǎng)關(guān)解決線上新版本平穩(wěn)上線的問(wèn)題。比如今天要分享的流量染色 + 灰度發(fā)布,就是我司每次上線必用的核心方案。

什么是流量染色?為什么需要它?

很多同學(xué)聽(tīng)流量染色覺(jué)得抽象,其實(shí)一句話就能說(shuō)透:給請(qǐng)求打身份標(biāo)簽,讓鏈路中所有服務(wù)都能認(rèn)得出它。

比如我們做電商 APP 的新功能上線,想讓 VIP 用戶優(yōu)先試用新版本,但普通用戶繼續(xù)用舊版本。怎么讓訂單、支付、庫(kù)存這些下游服務(wù)知道當(dāng)前請(qǐng)求是 VIP 用戶的?

這時(shí)候就需要染色:請(qǐng)求進(jìn)入網(wǎng)關(guān)時(shí),判斷用戶身份是 VIP,就在請(qǐng)求頭里加一個(gè) X-Traffic-Tag: vip 的標(biāo)識(shí),這個(gè)過(guò)程就是流量染色。

后續(xù)的訂單服務(wù)拿到請(qǐng)求,看到 X-Traffic-Tag: vip,就走新版本的訂單邏輯;支付服務(wù)看到這個(gè)標(biāo)簽,就用新的支付接口;甚至日志系統(tǒng)看到這個(gè)標(biāo)簽,都會(huì)單獨(dú)記錄VIP 新版本的日志,單獨(dú)處理這部分請(qǐng)求。

流量染色的核心價(jià)值在于,打破所有流量無(wú)差別處理的局限。有了染色標(biāo)簽,灰度發(fā)布、A/B 測(cè)試、環(huán)境隔離(比如測(cè)試流量不進(jìn)生產(chǎn)庫(kù))才能落地。

什么是灰度發(fā)布?

搞懂了流量染色,灰度發(fā)布就好理解了,基于染色標(biāo)簽,讓部分流量走新版本,逐步驗(yàn)證穩(wěn)定性。

以前我們沒(méi)做灰度時(shí),上線都是一刀切:凌晨 2 點(diǎn)全量切換新版本,一旦出問(wèn)題,所有用戶都受影響,只能緊急回滾,既狼狽又容易丟數(shù)據(jù)。

現(xiàn)在用灰度發(fā)布,流程變成這樣:

  • 上線前:只讓內(nèi)部測(cè)試賬號(hào)(染色標(biāo)簽 X-Traffic-Tag: test)走新版本,驗(yàn)證功能沒(méi)問(wèn)題;
  • 上線初期:放 5% 的 VIP 用戶(標(biāo)簽 vip)走新版本,觀察日志和監(jiān)控;
  • 上線中期:沒(méi)問(wèn)題就擴(kuò)大到 30%、50% 的 VIP 用戶;
  • 全量:確認(rèn)穩(wěn)定后,所有用戶切換到新版本,灰度結(jié)束。

如果中間發(fā)現(xiàn)問(wèn)題,比如 5% 的 VIP 用戶反饋下單失敗,直接把灰度規(guī)則關(guān)掉,所有流量切回舊版本,影響范圍只有 5%,風(fēng)險(xiǎn)完全可控。

常見(jiàn)的灰度策略除了按用戶標(biāo)簽,還有這些:

  • 按比例:10% 流量走新版本(比如用用戶 ID 取模,ID 尾號(hào)為 0 的用戶);
  • 按業(yè)務(wù)場(chǎng)景:只讓 “新用戶注冊(cè)” 接口走新版本,老用戶接口不變;
  • 按設(shè)備:iOS 用戶先切新版本,Android 用戶后續(xù)再切(避免不同設(shè)備適配問(wèn)題同時(shí)爆發(fā))。

實(shí)現(xiàn)流量染色 + 灰度發(fā)布

接下來(lái)是重點(diǎn):基于 SpringCloud Gateway,如何寫代碼實(shí)現(xiàn)這兩個(gè)功能?整個(gè)流程分幾步:請(qǐng)求染色→灰度路由→效果驗(yàn)證,所有代碼都是生產(chǎn)環(huán)境可直接復(fù)用的。

項(xiàng)目依賴

首先確保引入 Gateway 核心依賴(Spring Boot 2.7.x + Spring Cloud Alibaba 2021.0.4.0 版本):

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<!-- 用于服務(wù)發(fā)現(xiàn)(如果灰度路由到注冊(cè)中心的服務(wù)) -->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

第一步:實(shí)現(xiàn)流量染色

流量染色的核心是攔截所有請(qǐng)求,按規(guī)則打標(biāo)簽,用 Gateway 的 GlobalFilter 就能實(shí)現(xiàn),所有請(qǐng)求都會(huì)經(jīng)過(guò)這個(gè)過(guò)濾器,我們?cè)谶@里判斷用戶身份,注入染色標(biāo)簽。

比如我們的規(guī)則是:

  • 如果請(qǐng)求參數(shù)里有 userType=vip,就給請(qǐng)求頭加 X-Traffic-Tag: vip;
  • 如果請(qǐng)求參數(shù)里有 userType=test,就加 X-Traffic-Tag: test;
  • 其他請(qǐng)求默認(rèn)加 X-Traffic-Tag: normal。

代碼實(shí)現(xiàn):

@Configuration
publicclass TrafficDyeFilterConfig {

    // 定義全局過(guò)濾器,Order設(shè)為-1(確保比其他過(guò)濾器先執(zhí)行,早染色早用)
    @Bean
    @Order(-1)
    public GlobalFilter trafficDyeFilter() {
        return (exchange, chain) -> {
            // 1. 獲取請(qǐng)求中的用戶標(biāo)識(shí)(參數(shù)/Cookie)
            String userType = getUserTypeFromRequest(exchange);

            // 2. 根據(jù)用戶類型設(shè)置染色標(biāo)簽
            String trafficTag = getTrafficTagByUserType(userType);

            // 3. 將染色標(biāo)簽注入請(qǐng)求頭(傳遞給下游服務(wù))
            exchange.getRequest().mutate()
                    .header("X-Traffic-Tag", trafficTag)
                    .build();
            
            // 4. 繼續(xù)執(zhí)行后續(xù)過(guò)濾器鏈
            return chain.filter(exchange);
        };
    }

    // 從請(qǐng)求參數(shù)或Cookie中獲取用戶類型

    private String getUserTypeFromRequest(ServerWebExchange exchange) {
        // 先查請(qǐng)求參數(shù):比如 http://xxx?userType=vip
        List<String> userTypeParams = exchange.getRequest().getQueryParams().get("userType");
        if (userTypeParams != null && !userTypeParams.isEmpty()) {
            return userTypeParams.get(0);
        }
        // 默認(rèn)返回normal
        return"normal";
    }

    // 根據(jù)用戶類型映射染色標(biāo)簽
    private String getTrafficTagByUserType(String userType) {
        switch (userType) {
            case"vip":
                return"vip";
            case"test":
                return"test";
            default:
                return"normal";
        }
    }
}

關(guān)鍵說(shuō)明:

  • Order(-1) 很重要:確保染色過(guò)濾器比鑒權(quán)、限流過(guò)濾器先執(zhí)行,避免后續(xù)邏輯拿不到染色標(biāo)簽;
  • 標(biāo)簽放在請(qǐng)求頭 X-Traffic-Tag:下游服務(wù)(如訂單服務(wù))可以直接通過(guò) request.getHeader("X-Traffic-Tag") 獲取標(biāo)簽,做差異化處理;
  • 擴(kuò)展性:如果需要更復(fù)雜的染色規(guī)則(比如按用戶 ID 取模、按地區(qū)),直接在 getUserTypeFromRequest 里加邏輯即可。

第二步:實(shí)現(xiàn)灰度路由

染色后,下一步就是讓不同標(biāo)簽的流量走不同版本的服務(wù),這需要自定義 RoutePredicateFactory(路由斷言工廠),判斷請(qǐng)求的染色標(biāo)簽,匹配對(duì)應(yīng)的服務(wù)路由。

比如我們的灰度規(guī)則是:

  • 染色標(biāo)簽為 vip 或 test 的請(qǐng)求,路由到新版本服務(wù)(服務(wù)名 order-service-v2);
  • 其他請(qǐng)求(標(biāo)簽 normal),路由到舊版本服務(wù)(服務(wù)名 order-service-v1)。
自定義灰度斷言工廠
// 自定義斷言工廠,命名格式:XXXRoutePredicateFactory(固定后綴)
@Configuration
publicclass GrayRoutePredicateFactory extends AbstractRoutePredicateFactory<GrayRoutePredicateFactory.Config> {

    // 染色標(biāo)簽的請(qǐng)求頭名(和第一步的X-Traffic-Tag對(duì)應(yīng))
    privatestaticfinal String TRAFFIC_TAG_HEADER = "X-Traffic-Tag";

    // 構(gòu)造函數(shù),指定配置類
    public GrayRoutePredicateFactory() {
        super(Config.class);
    }

    // 定義配置類:存儲(chǔ)斷言需要的參數(shù)(比如“需要匹配的染色標(biāo)簽”)
    @Validated
    publicstaticclass Config {
        // 允許的染色標(biāo)簽(比如["vip", "test"])
        @NotEmpty
        private List<String> allowTags;

        public List<String> getAllowTags() {
            return allowTags;
        }

        public void setAllowTags(List<String> allowTags) {
            this.allowTags = allowTags;
        }
    }

    // 讀取配置參數(shù)的順序(和application.yml中配置的順序?qū)?yīng))
    @Override
    public List<String> shortcutFieldOrder() {
        return Collections.singletonList("allowTags");
    }

    // 核心邏輯:判斷請(qǐng)求的染色標(biāo)簽是否在允許的列表中
    @Override
    public GatewayPredicate apply(Config config) {
        returnnew GatewayPredicate() {
            @Override
            public boolean test(ServerWebExchange exchange) {
                // 1. 獲取請(qǐng)求頭中的染色標(biāo)簽
                List<String> trafficTags = exchange.getRequest().getHeaders().get(TRAFFIC_TAG_HEADER);
                if (trafficTags == null || trafficTags.isEmpty()) {
                    returnfalse; // 沒(méi)有標(biāo)簽,不匹配灰度路由
                }

                String trafficTag = trafficTags.get(0);
                // 2. 判斷標(biāo)簽是否在允許的列表中(比如["vip", "test"])
                return config.getAllowTags().contains(trafficTag);
            }

            // 用于日志打印,方便調(diào)試
            @Override
            public String toString() {
                return"GrayRoutePredicate{allowTags=" + config.getAllowTags() + "}";
            }
        };
    }
}
配置網(wǎng)關(guān)路由

在配置文件 application.yml 中,用自定義的 GrayRoutePredicateFactory 配置路由規(guī)則,指定哪些標(biāo)簽的流量走哪個(gè)服務(wù):

spring:
  cloud:
    gateway:
      routes:
        # 路由1:灰度流量(vip/test標(biāo)簽)→ 新版本服務(wù)(order-service-v2)
        -id:gray_route_v2
          uri:lb://order-service-v2# 服務(wù)注冊(cè)中心的新版本服務(wù)名
          predicates:
            # 自定義灰度斷言:允許的標(biāo)簽是["vip", "test"]
            -name:GrayRoute
              args:
                allowTags[0]:vip
                allowTags[1]:test
            # 匹配訂單接口的路徑(比如 /api/order/**)
            -Path=/api/order/**
          filters:
            # 路徑重寫(可選,根據(jù)實(shí)際業(yè)務(wù)調(diào)整)
            -RewritePath=/api/(?<segment>.*),/$\{segment}

        # 路由2:普通流量(normal標(biāo)簽)→ 舊版本服務(wù)(order-service-v1)
        -id:normal_route_v1
          uri:lb://order-service-v1# 舊版本服務(wù)名
          predicates:
            # 普通流量:不滿足灰度斷言,走這條路由
            -Path=/api/order/**
          filters:
            -RewritePath=/api/(?<segment>.*),/$\{segment}

關(guān)鍵說(shuō)明:

  • uri: lb://xxx:用 lb 協(xié)議表示從服務(wù)注冊(cè)中心(如 Nacos)拉取服務(wù)實(shí)例,實(shí)現(xiàn)負(fù)載均衡;
  • 路由順序:Gateway 按路由配置的順序匹配,所以灰度路由(gray_route_v2)要放在普通路由前面,確保灰度流量?jī)?yōu)先匹配;
  • 擴(kuò)展性:如果需要按比例灰度(比如 10% 流量走 v2),可以在 GrayRoutePredicateFactory 里加用戶 ID 取模的邏輯,比如 userID % 10 == 0 才走 v2。

第三步:驗(yàn)證效果

代碼和配置都做好后,驗(yàn)證是否生效,用 Postman 看是否路由到正確的服務(wù):

請(qǐng)求地址:http://網(wǎng)關(guān)IP:網(wǎng)關(guān)端口/api/order/create?userType=vip,請(qǐng)求可以轉(zhuǎn)發(fā)到 order-service-v2

線上環(huán)境要注意

剛才的代碼是基礎(chǔ)版,如果要在生產(chǎn)環(huán)境用還需要做 3 個(gè)優(yōu)化,避免踩坑:

1. 染色標(biāo)簽的透?jìng)鲉?wèn)題

如果下游服務(wù)還有多層調(diào)用(比如網(wǎng)關(guān)→訂單服務(wù)→庫(kù)存服務(wù)),要確保 X-Traffic-Tag 在整個(gè)調(diào)用鏈中傳遞,不能斷。

如果你用 OpenFeign 做服務(wù)間調(diào)用,加一個(gè) Feign 攔截器,自動(dòng)把請(qǐng)求頭中的 X-Traffic-Tag 傳遞下去:

@Component
public class FeignTrafficTagInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        // 從當(dāng)前請(qǐng)求上下文獲取染色標(biāo)簽(需要用ThreadLocal存儲(chǔ))
        String trafficTag = TrafficTagContextHolder.get();
        if (trafficTag != null) {
            template.header("X-Traffic-Tag", trafficTag);
        }
    }
}

如果用 Dubbo,在 Dubbo 過(guò)濾器中做類似的頭傳遞。

2. 灰度規(guī)則的動(dòng)態(tài)調(diào)整

如果每次調(diào)整灰度比例(比如從 5% 到 30%)都要改代碼、重啟網(wǎng)關(guān),效率太低。

把灰度規(guī)則(比如允許的標(biāo)簽、比例)存到 Nacos 配置中心;網(wǎng)關(guān)監(jiān)聽(tīng) Nacos 配置變更,動(dòng)態(tài)更新灰度斷言的規(guī)則,不用重啟服務(wù)。

3. 灰度失敗的快速回滾

如果新版本出問(wèn)題,需要立刻把所有流量切回舊版本。

在 Nacos 中加一個(gè)灰度開(kāi)關(guān)(比如 gray.switch=false);

自定義斷言工廠時(shí),先判斷開(kāi)關(guān)是否開(kāi)啟:如果開(kāi)關(guān)關(guān)閉,直接不匹配灰度路由,所有流量走舊版本。

說(shuō)在最后

網(wǎng)關(guān)不只是轉(zhuǎn)發(fā)工具,更是流量控制中心。

很多同學(xué)把 SpringCloud Gateway 當(dāng)成簡(jiǎn)單的轉(zhuǎn)發(fā)工具,只用它做限流、鑒權(quán),其實(shí)它的核心價(jià)值是控制流量的走向,通過(guò)流量染色給流量貼標(biāo)簽,通過(guò)灰度路由讓流量走對(duì)路,這才是線上平穩(wěn)上線的關(guān)鍵。

看到這說(shuō)明你已經(jīng)掌握了,所以下次面試再被問(wèn) Gateway,知道該怎么說(shuō)了吧!

責(zé)任編輯:武曉燕 來(lái)源: 程序員小富
相關(guān)推薦

2025-09-24 09:32:05

2017-06-01 11:28:11

存儲(chǔ)數(shù)據(jù)全閃存

2017-03-13 09:00:44

互聯(lián)網(wǎng)金融第三方支付P2P

2023-10-19 07:20:22

AMDRX 7000卡頓

2025-11-04 09:31:03

DeepSieveRAG大語(yǔ)言模型

2020-10-14 09:43:39

5G4G技術(shù)

2021-03-11 06:58:12

5G聯(lián)通電信

2024-03-19 14:49:41

云成本云成本管理工具

2021-07-26 16:18:08

Windows 11Windows微軟

2012-08-01 17:20:23

云計(jì)算

2017-11-07 22:19:55

iOS 蘋果App

2012-10-18 10:57:03

2025-08-20 09:02:00

2017-11-13 14:06:56

2021-11-11 13:39:53

存儲(chǔ)數(shù)據(jù)存儲(chǔ)技術(shù)

2024-03-08 08:51:59

Gomain函數(shù)

2015-12-29 10:13:54

2023-02-20 10:13:00

灰度發(fā)布實(shí)現(xiàn)

2022-06-06 14:28:27

零信任零信任架構(gòu)ZTA

2019-10-12 01:10:09

物聯(lián)網(wǎng)無(wú)線技術(shù)IOT
點(diǎn)贊
收藏

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

国产66精品久久久久999小说| 亚洲欧美一区二区三区久久| 日韩一区二区高清视频| 可以免费看毛片的网站| 美女国产一区| 中文字幕少妇一区二区三区| 国产sm在线观看| 中文字幕在线视频网站| 综合色中文字幕| 精品乱码一区二区三区| 中文字幕一区二区三区人妻四季 | 亚洲精品视频在线观看视频| 亚洲天堂2018av| 欧美aaaaaaa| 国产色婷婷亚洲99精品小说| 成人写真福利网| 国产黄色免费观看| 亚洲色图插插| 国产一区二区三区免费视频| 亚洲成人精品在线播放| 精品福利在线| 疯狂做受xxxx欧美肥白少妇| 一卡二卡3卡四卡高清精品视频| 亚洲欧美激情在线观看| 日本成人在线电影网| 久久琪琪电影院| 成人在线观看小视频| 亚洲警察之高压线| 精品国产百合女同互慰| 欧美特级aaa| 亚洲私拍视频| 亚洲一区二区成人在线观看| 做爰高潮hd色即是空| 成人精品一区二区三区校园激情| 成人18精品视频| 91亚洲精品丁香在线观看| 国产偷人爽久久久久久老妇app | 国产成人综合一区二区三区| 久久久久久天堂| 亚洲一区二区三区无吗| 亚洲人成网站999久久久综合| 国产精品亚洲一区二区无码| www.久久99| 欧美丝袜丝交足nylons| 毛片av免费在线观看| 成年女人在线看片| 亚洲丰满少妇videoshd| 波多野结衣av一区二区全免费观看| 在线观看免费版| 国产精品视频一区二区三区不卡| 欧美一区二区三区四区在线观看地址| 欧美自拍第一页| 国产成人亚洲综合a∨婷婷| 91在线免费观看网站| 91精品国产色综合久久不8| 奇米色一区二区三区四区| 国产精品福利观看| 成人免费一级片| 日产国产欧美视频一区精品| 国产精品va在线播放我和闺蜜| 天天干天天干天天| 久久精品人人| 国产成人综合av| 在线观看中文字幕码| 蜜桃精品在线观看| 国产在线观看不卡| 一区二区久久精品66国产精品| 久久91精品国产91久久小草| 成人天堂噜噜噜| hs视频在线观看| 国产suv精品一区二区三区| 国产v亚洲v天堂无码| 天堂在线资源网| 91麻豆精品一区二区三区| 欧美一级二级三级| 午夜不卡视频| 一区二区三区中文字幕电影| 欧美午夜性视频| 成人欧美大片| 欧美日韩在线综合| 欧美污在线观看| 一区二区三区四区高清视频| 亚洲高清久久久久久| 亚洲午夜久久久久久久久红桃 | 女性女同性aⅴ免费观女性恋| 黄页网站大全在线免费观看| 午夜精品福利视频网站| 欧美一级黄色片视频| 91嫩草国产线观看亚洲一区二区 | 中文精品久久| 97国产一区二区精品久久呦| 91porny九色| 国产精品自产自拍| 美女一区视频| 超碰个人在线| 一本到不卡免费一区二区| 思思久久精品视频| 另类尿喷潮videofree| 中文字幕精品久久| 免费在线观看国产精品| 三级久久三级久久| 91传媒免费看| 懂色av中文在线| 亚洲精品精品亚洲| 亚洲成人福利在线观看| 大桥未久女教师av一区二区| 中文字幕在线看视频国产欧美| 精品无码一区二区三区电影桃花| 日韩中文字幕91| 国产精品视频免费一区二区三区| 视频国产一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 岳毛多又紧做起爽| 亚洲视频国产| 日韩在线视频国产| 欧美 日韩 精品| 成人看片黄a免费看在线| 日本成人黄色| 亚洲涩涩在线| 亚洲国产精品va在线观看黑人| 亚洲区一区二区三| 久久综合五月| 久久久久久久有限公司| 男女在线观看视频| 欧美一三区三区四区免费在线看| 国产亚洲精品熟女国产成人| 精品999日本| 国产欧美日韩精品丝袜高跟鞋| 暖暖视频在线免费观看| 亚洲高清免费观看| 91福利视频免费观看| 婷婷亚洲最大| 国产精品午夜一区二区欲梦| 你懂的免费在线观看视频网站| 亚洲观看高清完整版在线观看| 成人性生交视频免费观看| 成人免费av| 国产精品高潮在线| 国产在线日本| 欧美曰成人黄网| 3d动漫精品啪啪一区二区下载| 中文亚洲字幕| 久久精品国产美女| 国产在线美女| 精品亚洲一区二区三区四区五区| 日韩精品――中文字幕| www.在线欧美| 黄网站欧美内射| 女同一区二区三区| 4k岛国日韩精品**专区| 亚洲欧美丝袜中文综合| 亚洲超碰97人人做人人爱| 亚洲一区二区三区四区av| 欧美日本中文| 国产精品一区二区欧美| 国产精品—色呦呦| 精品国产免费人成在线观看| 亚洲一区二区91| proumb性欧美在线观看| 又粗又黑又大的吊av| 日韩有码一区| 国产精品成人aaaaa网站| 8888四色奇米在线观看| 欧美日韩高清不卡| 超碰在线国产97| 国产精品一品视频| 久久人人爽人人爽人人av| 激情小说一区| 国产97人人超碰caoprom| 国产二区在线播放| 欧美精品在线视频| 精国产品一区二区三区a片| 粉嫩一区二区三区在线看| 欧美 日本 亚洲| 激情婷婷综合| 91在线观看欧美日韩| 1区2区在线| 亚洲欧美制服第一页| 国产精品欧美综合| 亚洲免费电影在线| 日本护士做爰视频| 日韩在线一区二区三区| 欧美少妇一区二区三区| 国产伦精品一区二区三区免费优势 | av在线导航| 亚洲国产精品网站| 中文字幕av影视| 亚洲午夜一区二区三区| 瑟瑟视频在线观看| 国产老肥熟一区二区三区| 成熟丰满熟妇高潮xxxxx视频| 精品日产免费二区日产免费二区 | 一区二区导航| 成人免费自拍视频| 综合毛片免费视频| 久久99精品视频一区97| 黄色片在线免费看| 日韩欧美电影在线| 欧美日韩 一区二区三区| 一区二区三区资源| 青青青视频在线播放| 成人久久18免费网站麻豆| 一本岛在线视频| 在线亚洲一区| 六月婷婷激情网| 国产在视频线精品视频www666| 97神马电影| 欧美aaa大片视频一二区| 九九九久久久久久| 在线观看av的网站| 日韩精品视频在线播放| 国产av精国产传媒| 欧美性感一区二区三区| 日本在线小视频| 亚洲色图一区二区| 一二三四国产精品| 91热门视频在线观看| 国产裸体视频网站| 久久精品国产99国产| 成人在线观看黄| 在线观看亚洲| 中文字幕色一区二区| 国产亚洲一卡2卡3卡4卡新区 | 成人福利视频网| **在线精品| 91高清视频免费| 七七成人影院| 美女精品视频一区| 免费黄色在线| 中文字幕视频一区二区在线有码 | 91亚洲国产成人精品一区| 日韩欧美国产中文字幕| 影音先锋亚洲天堂| 亚洲3atv精品一区二区三区| 欧美另类视频在线观看| 综合婷婷亚洲小说| 亚洲伦理一区二区三区| 国产精品久久久久天堂| 亚洲av熟女国产一区二区性色| 久久婷婷成人综合色| 日本japanese极品少妇| av中文字幕一区| 亚洲av综合色区无码另类小说| 毛片av一区二区| 777视频在线| 九色综合国产一区二区三区| 九色porny自拍| 韩日精品视频一区| 国产成人美女视频| 国产一区二区不卡| 一个人看的视频www| 国产激情91久久精品导航| 少妇性l交大片7724com| 福利视频网站一区二区三区| 男人女人拔萝卜视频| 成人av第一页| 精品人妻少妇嫩草av无码| 国产农村妇女毛片精品久久麻豆| 永久免费毛片在线观看| 国产精品久久久一区麻豆最新章节| 激情高潮到大叫狂喷水| 亚洲色欲色欲www在线观看| 久久伊人成人网| 欧美日韩激情视频| 999视频在线| 4hu四虎永久在线影院成人| 性欧美8khd高清极品| 亚洲国产精品福利| 毛片网站在线| 色噜噜国产精品视频一区二区| 久久久久久久久免费视频| 欧美激情久久久久| 性爽视频在线| 91精品免费看| 精品资源在线| 亚洲韩国在线| 国内精品久久久久久久影视蜜臀| 久久久一本二本三本| 久久国产福利国产秒拍| 国产免费无码一区二区| 久久综合国产精品| 99自拍视频在线| 午夜视频久久久久久| 日韩精品在线一区二区三区| 91麻豆精品国产91久久久更新时间| 成人免费观看在线视频| 亚洲欧美综合图区| 超碰caoporn久久| 日韩av手机在线看| 欧美激情精品| 日韩精品一线二线三线| 午夜天堂精品久久久久| 蜜臀久久99精品久久久酒店新书| 九九国产精品视频| 国产熟妇搡bbbb搡bbbb| 亚洲视频狠狠干| 国产成人自拍偷拍| 精品少妇一区二区三区视频免付费 | 亚洲综合一二三| 欧美日韩亚洲综合一区二区三区| 丰满大乳国产精品| 色播久久人人爽人人爽人人片视av| 丁香花视频在线观看| 国产精品午夜国产小视频| 美女视频亚洲色图| 好色先生视频污| 日日摸夜夜添夜夜添精品视频| 又黄又色的网站| 国产精品成人一区二区艾草| 国产日产精品一区二区三区| 欧美一区二区视频网站| 国产大片在线免费观看| 97热在线精品视频在线观看| 国产精品一区二区三区av| 日韩一区二区三区高清| 亚洲国产专区| 精品人妻一区二区乱码| 中文字幕中文乱码欧美一区二区| 国产无遮挡呻吟娇喘视频| 欧美精品一区男女天堂| av在线免费网站| 成人xxxx视频| 日韩精品一区二区三区免费观看| 2022亚洲天堂| 不卡一区二区三区四区| 青娱乐免费在线视频| 欧美日韩成人综合天天影院| 都市激情在线视频| 国产精品aaaa| 免费久久久久久久久| 欧美精品99久久| jlzzjlzz国产精品久久| 国产亚洲精品久久久久久无几年桃| 7777精品伊人久久久大香线蕉的 | 国产三区在线视频| 99视频在线精品| 亚洲国产成人精品激情在线| 亚洲成人免费网站| 大黄网站在线观看| 国产伦精品一区二区三区四区免费| 亚洲国产成人精品女人| 中文字幕亚洲影院| 亚洲欧美在线视频观看| 91久久精品国产91性色69| 精品国产美女在线| 爱情电影网av一区二区| 麻豆映画在线观看| 国产成人精品一区二区三区四区| 中文字幕在线观看成人| 日韩欧美中文一区| free性m.freesex欧美| 久久精品国产精品国产精品污 | 国产伦理精品| 久久国产精品99久久久久久丝袜| 亚洲一区二区三区高清| 亚洲第一香蕉网| 欧美视频一区二区| а√天堂8资源在线官网| yy111111少妇影院日韩夜片| 欧美日本二区| 青青草视频成人| 欧洲精品一区二区| 求av网址在线观看| 99精品99久久久久久宅男| 亚洲精品日韩久久| 麻豆av免费观看| 欧美日韩成人激情| 性欧美1819sex性高清大胸| 国严精品久久久久久亚洲影视 | 神马亚洲视频| 国产精品日韩欧美大师| 欧美一区国产在线| 中文在线永久免费观看| 欧美午夜精品理论片a级按摩| 麻豆传媒在线免费| 国产精品久久久久久久免费大片| 国产日韩精品视频一区二区三区| 一级在线观看视频| 日韩精品在线一区二区| 韩国美女久久| 欧洲xxxxx| 久久老女人爱爱| 国产精品区在线观看| 91国内在线视频| 久久电影院7| 亚洲av成人片无码| 欧美日韩精品综合在线| av中文字幕在线看| 亚洲一区在线免费| 97久久精品人人做人人爽50路| 伊人久久国产精品| 国内精品一区二区三区四区| 国产在视频线精品视频www666| 一起草最新网址| 91福利在线观看| 成人在线高清免费| 26uuu成人| 久久婷婷国产综合精品青草| 午夜精品久久久久久久爽| 国产精品流白浆视频|