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

SpringCloud全鏈路灰色具體發(fā)布!

開發(fā) 架構(gòu)
在傳統(tǒng)的全量發(fā)布中,新版本的功能會(huì)一次性全部部署到所有的用戶或節(jié)點(diǎn)上。然而,這種方式潛在的風(fēng)險(xiǎn)是,如果新版本存在缺陷或問題,可能會(huì)對(duì)所有用戶或節(jié)點(diǎn)產(chǎn)生嚴(yán)重的影響,導(dǎo)致系統(tǒng)崩潰或服務(wù)不可用。

灰度發(fā)布(Gray Release,也稱為灰度發(fā)布或金絲雀發(fā)布)是指在軟件或服務(wù)發(fā)布過程中,將新版本的功能或服務(wù)以較小的比例引入到生產(chǎn)環(huán)境中,僅向部分用戶或節(jié)點(diǎn)提供新功能的一種發(fā)布策略。

在傳統(tǒng)的全量發(fā)布中,新版本的功能會(huì)一次性全部部署到所有的用戶或節(jié)點(diǎn)上。然而,這種方式潛在的風(fēng)險(xiǎn)是,如果新版本存在缺陷或問題,可能會(huì)對(duì)所有用戶或節(jié)點(diǎn)產(chǎn)生嚴(yán)重的影響,導(dǎo)致系統(tǒng)崩潰或服務(wù)不可用。

相比之下,灰度發(fā)布采用較小的規(guī)模,并逐步將新版本的功能引入到生產(chǎn)環(huán)境中,僅向一小部分用戶或節(jié)點(diǎn)提供新功能。通過持續(xù)監(jiān)測(cè)和評(píng)估,可以在發(fā)現(xiàn)問題時(shí)及時(shí)回滾或修復(fù)。這種逐步引入新版本的方式可以降低風(fēng)險(xiǎn),并提高系統(tǒng)的穩(wěn)定性和可靠性。

1、實(shí)現(xiàn)思路

灰色發(fā)布的常見實(shí)現(xiàn)思路有以下幾種:

  • 根據(jù)用戶劃分:根據(jù)用戶標(biāo)識(shí)或用戶組進(jìn)行劃分,在整個(gè)用戶群體中只選擇一小部分用戶獲得新功能。
  • 根據(jù)地域劃分:在不同地區(qū)或不同節(jié)點(diǎn)上進(jìn)行劃分,在其中的一小部分地區(qū)或節(jié)點(diǎn)進(jìn)行新功能的發(fā)布。
  • 根據(jù)流量劃分:根據(jù)流量的百分比或請(qǐng)求次數(shù)進(jìn)行劃分,只將一部分請(qǐng)求流量引導(dǎo)到新功能上。

而在生產(chǎn)環(huán)境中,比較常用的是根據(jù)用戶標(biāo)識(shí)來實(shí)現(xiàn)灰色發(fā)布,也就是說先讓一小部分用戶體驗(yàn)新功能,以發(fā)現(xiàn)新服務(wù)中可能存在的某種缺陷或不足。

2、具體實(shí)現(xiàn)

Spring Cloud 全鏈路灰色發(fā)布的關(guān)鍵實(shí)現(xiàn)思路如下圖所示:

灰度發(fā)布的具體實(shí)現(xiàn)步驟如下:

  • 前端程序在灰度測(cè)試的用戶 Header 頭中打上標(biāo)簽,例如在 Header 中添加“grap-tag: true”,其表示要進(jìn)行灰常測(cè)試(訪問灰度服務(wù)),而其他則為訪問正式服務(wù)。
  • 在負(fù)載均衡器 Spring Cloud LoadBalancer 中,拿到 Header 中的“grap-tag”進(jìn)行判斷,如果此標(biāo)簽不為空,并等于“true”的話,表示要訪問灰度發(fā)布的服務(wù),否則只訪問正式的服務(wù)。
  • 在網(wǎng)關(guān) Spring Cloud Gateway 中,將 Header 標(biāo)簽“grap-tag: true”繼續(xù)往下一個(gè)調(diào)用服務(wù)中傳遞。
  • 在后續(xù)的調(diào)用服務(wù)中,需要實(shí)現(xiàn)以下兩個(gè)關(guān)鍵功能:
  1. 在負(fù)載均衡器 Spring Cloud LoadBalancer 中,判斷灰度發(fā)布標(biāo)簽,將請(qǐng)求分發(fā)到對(duì)應(yīng)服務(wù)。
  2. 將灰度發(fā)布標(biāo)簽(如果存在),繼續(xù)傳遞給下一個(gè)調(diào)用的服務(wù)。

經(jīng)過第四步的反復(fù)傳遞之后,整個(gè) Spring Cloud 全鏈路的灰度發(fā)布就完成了。

3、核心實(shí)現(xiàn)思路和代碼

灰度發(fā)布的關(guān)鍵實(shí)現(xiàn)技術(shù)和代碼如下。

(1)區(qū)分正式服務(wù)和灰度服務(wù)

在灰度發(fā)布的執(zhí)行流程中,有一個(gè)核心的問題,如果在 Spring Cloud LoadBalancer 進(jìn)行服務(wù)調(diào)用時(shí),區(qū)分正式服務(wù)和灰度服務(wù)呢?

這個(gè)問題的解決方案是:在灰度服務(wù)既注冊(cè)中心的 MetaData(元數(shù)據(jù))中標(biāo)識(shí)自己為灰度服務(wù)即可,而元數(shù)據(jù)中沒有標(biāo)識(shí)(灰度服務(wù))的則為正式服務(wù),以 Nacos 為例,它的設(shè)置如下:

spring:
  application:
    name: canary-user-service
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos
        server-addr: localhost:8848
        namespace: public
        register-enabled: true 
        metadata: { "grap-tag":"true" } # 標(biāo)識(shí)自己為灰度服務(wù)

(2)負(fù)載均衡調(diào)用灰度服務(wù)

Spring Cloud LoadBalancer 判斷并調(diào)用灰度服務(wù)的關(guān)鍵實(shí)現(xiàn)代碼如下:

private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances,
                                                          Request request) {
        // 實(shí)例為空
        if (instances.isEmpty()) {
            if (log.isWarnEnabled()) {
                log.warn("No servers available for service: " + this.serviceId);
            }
            return new EmptyResponse();
        } else { // 服務(wù)不為空
            RequestDataContext dataContext = (RequestDataContext) request.getContext();
            HttpHeaders headers = dataContext.getClientRequest().getHeaders();
            // 判斷是否為灰度發(fā)布(請(qǐng)求)
            if (headers.get(GlobalVariables.GRAY_KEY) != null &&
                    headers.get(GlobalVariables.GRAY_KEY).get(0).equals("true")) {
                // 灰度發(fā)布請(qǐng)求,得到新服務(wù)實(shí)例列表
                List<ServiceInstance> findInstances = instances.stream().
                        filter(s -> s.getMetadata().get(GlobalVariables.GRAY_KEY) != null &&
                                s.getMetadata().get(GlobalVariables.GRAY_KEY).equals("true"))
                        .toList();
                if (findInstances.size() > 0) { // 存在灰度發(fā)布節(jié)點(diǎn)
                    instances = findInstances;
                }
            } else { // 查詢非灰度發(fā)布節(jié)點(diǎn)
                // 灰度發(fā)布測(cè)試請(qǐng)求,得到新服務(wù)實(shí)例列表
                instances = instances.stream().
                        filter(s -> s.getMetadata().get(GlobalVariables.GRAY_KEY) == null ||
                                !s.getMetadata().get(GlobalVariables.GRAY_KEY).equals("true"))
                        .toList();
            }
            // 隨機(jī)正數(shù)值 ++i( & 去負(fù)數(shù))
            int pos = this.position.incrementAndGet() & Integer.MAX_VALUE;
            // ++i 數(shù)值 % 實(shí)例數(shù) 取模 -> 輪詢算法
            int index = pos % instances.size();
            // 得到服務(wù)實(shí)例方法
            ServiceInstance instance = (ServiceInstance) instances.get(index);
            return new DefaultResponse(instance);
        }
    }

以上代碼為自定義負(fù)載均衡器,并使用了輪詢算法。如果 Header 中有灰度標(biāo)簽,則只查詢灰度服務(wù)的節(jié)點(diǎn)實(shí)例,否則則查詢出所有的正式節(jié)點(diǎn)實(shí)例(以供服務(wù)調(diào)用或服務(wù)轉(zhuǎn)發(fā))。

(3)網(wǎng)關(guān)傳遞灰度標(biāo)識(shí)

要在網(wǎng)關(guān) Spring Cloud Gateway 中傳遞灰度標(biāo)識(shí),只需要在 Gateway 的全局自定義過濾器中設(shè)置 Response 的 Header 即可,具體實(shí)現(xiàn)代碼如下:

package com.example.gateway.config;

import com.loadbalancer.canary.common.GlobalVariables;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

@Component
public class LoadBalancerFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 得到 request、response 對(duì)象
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpResponse response = exchange.getResponse();
        if (request.getQueryParams().getFirst(GlobalVariables.GRAY_KEY) != null) {
            // 設(shè)置金絲雀標(biāo)識(shí)
            response.getHeaders().set(GlobalVariables.GRAY_KEY,
                    "true");
        }
        // 此步驟正常,執(zhí)行下一步
        return chain.filter(exchange);
    }
}

(4)Openfeign 傳遞灰度標(biāo)簽

HTTP 調(diào)用工具 Openfeign 傳遞灰度標(biāo)簽的實(shí)現(xiàn)代碼如下:

import feign.RequestInterceptor;
import feign.RequestTemplate;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;

@Component
public class FeignRequestInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        // 從 RequestContextHolder 中獲取 HttpServletRequest
        ServletRequestAttributes attributes = (ServletRequestAttributes)
                RequestContextHolder.getRequestAttributes();
        // 獲取 RequestContextHolder 中的信息
        Map<String, String> headers = getHeaders(attributes.getRequest());
        // 放入 openfeign 的 RequestTemplate 中
        for (Map.Entry<String, String> entry : headers.entrySet()) {
            template.header(entry.getKey(), entry.getValue());
        }
    }

    /**
     * 獲取原請(qǐng)求頭
     */
    private Map<String, String> getHeaders(HttpServletRequest request) {
        Map<String, String> map = new LinkedHashMap<>();
        Enumeration<String> enumeration = request.getHeaderNames();
        if (enumeration != null) {
            while (enumeration.hasMoreElements()) {
                String key = enumeration.nextElement();
                String value = request.getHeader(key);
                map.put(key, value);
            }
        }
        return map;
    }
}

小結(jié)

灰度發(fā)布是微服務(wù)時(shí)代保證生產(chǎn)環(huán)境安全的必備措施,而其關(guān)鍵實(shí)現(xiàn)思路是:

  • 注冊(cè)中心區(qū)分正常服務(wù)和灰度服務(wù);
  • 負(fù)載均衡正確轉(zhuǎn)發(fā)正常服務(wù)和灰度服務(wù);
  • 網(wǎng)關(guān)和 HTTP 工具傳遞灰度標(biāo)簽。

這樣,我們就完整的實(shí)現(xiàn) Spring Cloud 全鏈路灰度發(fā)布功能了。

責(zé)任編輯:姜華 來源: Java中文社群
相關(guān)推薦

2023-11-14 09:04:15

用戶節(jié)點(diǎn)不可用

2024-01-05 00:29:36

全鏈路灰度發(fā)布云原生

2024-12-16 13:34:35

2025-03-04 08:53:10

2023-01-30 22:34:44

Node.js前端

2023-11-21 09:35:49

全量部署微服務(wù)

2023-10-16 23:43:52

云原生可觀測(cè)性

2024-03-13 08:56:17

全鏈路壓力測(cè)試

2022-01-04 17:08:02

全鏈路觀測(cè)平臺(tái)

2022-04-27 10:53:34

web優(yōu)化性能

2022-07-22 07:59:17

日志方案

2023-10-30 07:25:37

數(shù)據(jù)湖數(shù)據(jù)處理

2022-07-19 14:14:45

數(shù)字化服務(wù)

2025-10-10 08:58:13

2024-10-23 12:50:13

數(shù)據(jù)飛輪數(shù)字化

2022-08-31 22:25:53

微服務(wù)架構(gòu)DevOPs

2018-07-03 15:56:59

騰訊

2019-12-10 09:54:20

高德APP架構(gòu)全鏈路
點(diǎn)贊
收藏

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

一级片久久久久| 清纯唯美一区二区三区| 国产亚洲精品久久久久久打不开 | 日韩三级电影网| 日韩av网站在线观看| 久热国产精品视频| 中国xxxx性xxxx产国| 三级成人黄色影院| 亚洲女同一区二区| 欧美精品123| 国产黄色片av| 日韩精品久久理论片| 久久国产精品久久久久| 中文字幕一区二区三区人妻不卡| 亚洲电影二区| 色香蕉久久蜜桃| 国产一区 在线播放| 国产三级电影在线| 成av人片一区二区| 成人亲热视频网站| 免费观看日批视频| 亚洲精品在线二区| 久久电影一区二区| 人妻精品久久久久中文| 国产香蕉精品| 日韩亚洲欧美成人一区| 日日摸天天爽天天爽视频| 日本h片在线观看| 国产精品麻豆一区二区| 美女亚洲精品| 欧洲精品久久一区二区| 国产一本一道久久香蕉| 国产精品高清在线| 国产又黄又猛又粗又爽| 黄色成人在线网站| 另类天堂视频在线观看| 蜜乳av中文字幕| 亚洲精品无吗| 日韩福利视频在线观看| 中文字幕乱视频| 一区二区中文字幕在线观看| 91精品国产91久久久久久最新毛片| 激情综合网俺也去| 欧美aaaaa性bbbbb小妇| 亚洲一区在线播放| 日本一区二区三区四区五区六区| 日本在线免费看| 国产欧美一区二区精品仙草咪| 国产伦理一区二区三区| 丰满少妇一级片| 国产成人免费在线观看不卡| 91久久国产精品91久久性色| 中国女人一级一次看片| 久久久久久夜| 欧美综合第一页| 国产精品999在线观看| 欧美精品导航| 久久乐国产精品| 日韩和一区二区| 亚洲激情偷拍| 国产91|九色| 亚洲AV无码成人精品区东京热| 999亚洲国产精| 97在线视频观看| 久久国产视频播放| 久久婷婷一区| 国产精品一二三视频| 91无套直看片红桃| 国产毛片精品视频| 99久久久精品免费观看国产 | 欧美国产日韩综合| 影音先锋中文字幕一区二区| 91地址最新发布| 色老头在线视频| 精品一区二区三区在线播放 | 国产又爽又黄网站亚洲视频123| 97久久精品人人澡人人爽| 久久久久无码国产精品一区| 国产在线91| 最新国产成人在线观看| av 日韩 人妻 黑人 综合 无码| 888av在线视频| 91福利社在线观看| 深夜福利网站在线观看| 麻豆成人入口| 日韩在线视频网站| 国产一级特黄a高潮片| 国产精品外国| 成人福利在线观看| 日本人妻丰满熟妇久久久久久| 久久欧美一区二区| 日本一级淫片演员| 亚洲精品88| 在线成人免费观看| 日本黄色动态图| 久久精品99久久无色码中文字幕| 久久99久久99精品免观看粉嫩 | 国产91丝袜美女在线播放| 99精品视频在线| 91极品视频在线| 夜夜躁很很躁日日躁麻豆| 成人不卡免费av| 中文字幕不卡每日更新1区2区| 7777kkk亚洲综合欧美网站| 欧美伊人久久久久久午夜久久久久| 免费黄视频在线观看| 国产成人av| 久久久久这里只有精品| 国产三级理论片| 99在线视频精品| 色婷婷777777仙踪林| 欧美片第1页| 欧美精品一区二区三区四区| 99自拍偷拍视频| 美女久久一区| 国内成+人亚洲| 在线中文字幕视频观看| 欧美亚洲国产一卡| 国产ts丝袜人妖系列视频| 自拍视频亚洲| 国产日韩在线一区| 黄色免费在线播放| 亚洲成a人片综合在线| 天天色天天综合网| 成人激情电影在线| 欧美中文在线免费| 天天操天天操天天干| 亚洲精品视频在线| 91福利免费观看| 日韩在线视屏| 国产精品日韩在线观看| 欧美偷拍视频| 精品欧美aⅴ在线网站| 黄色av电影网站| 欧美黄在线观看| 91免费看网站| 亚洲资源一区| 日韩午夜av一区| 日本一级二级视频| 国产精品一区二区久久精品爱涩| 亚洲激情电影在线| 成人免费黄色| 中文字幕无线精品亚洲乱码一区 | 日本一区二区三区播放| 色午夜这里只有精品| 中文字幕一区二区在线视频| 欧美激情在线看| 午夜视频你懂的| 日本激情一区| 成人国产精品一区二区| www黄在线观看| 精品视频在线看| 国产破处视频在线观看| 美女网站一区二区| 综合视频在线观看| 精品视频在线观看免费观看| 久久综合亚洲社区| 亚洲AV无码一区二区三区性| 亚洲成人高清在线| 国产精品无码网站| 首页欧美精品中文字幕| 天堂精品视频| 韩国三级成人在线| 国自产精品手机在线观看视频| 男人天堂手机在线观看| 亚洲一二三级电影| 亚洲av无码一区二区三区网址| 国产精品一卡| 亚洲国产一区在线| 精品国产第一国产综合精品| 久久久久久久激情视频| 性插视频在线观看| 欧美专区在线观看一区| 伊人久久久久久久久久久久久久| 国产一区二区三区精品欧美日韩一区二区三区 | 超碰97免费在线| 亚洲欧美综合区自拍另类| 糖心vlog精品一区二区| 亚洲视频一二三| 亚洲av永久无码精品| 久久综合九色| 一道本在线观看视频| 久久97久久97精品免视看秋霞| 日本亚洲欧美成人| 午夜不卡视频| 亚洲电影免费观看| 中文字幕乱码中文字幕| 一区二区三区在线影院| 丰满少妇一区二区三区| 精品一区二区久久久| 美女黄色免费看| 青青草成人影院| 国产免费一区二区三区| 8av国产精品爽爽ⅴa在线观看| 欧美成人午夜剧场免费观看| 三区在线视频| 欧美一区二区三区免费视频| 亚洲天堂一区在线| 亚洲日本丝袜连裤袜办公室| 成年人在线观看av| 国产一区二区不卡在线| 日韩一级在线免费观看| 欧美成人高清| 亚洲欧洲国产日韩精品| 四虎5151久久欧美毛片| 亚洲jizzjizz日本少妇| 欧美亚洲韩国| 欧美精品激情视频| 欧美jizzhd69巨大| 亚洲美女在线视频| 亚洲精品综合网| 欧美日韩高清一区二区三区| 四虎成人永久免费视频| 一区二区在线看| 午夜精品久久久久久久99热| 少妇的滋味中文字幕bd| 国产精品18久久久久久vr| 别急慢慢来1978如如2| 亚洲视频久久| 美国av在线播放| 精品国产欧美日韩| 九九九九精品| 国产一区二区三区免费在线| 亚洲国产精品中文| 午夜久久久久久久久久影院| 亚洲成人中文在线| 99视频只有精品| 国产精品免费精品自在线观看| 久久久999精品| av在线资源网| 亚洲人午夜精品免费| 人妻丰满熟妇av无码区hd| 日韩三级视频在线看| 97在线视频人妻无码| 欧美最新大片在线看| 人人爽人人爽人人片av| 精品国产乱码久久久久久虫虫漫画| 精品国产乱码久久久久久鸭王1| 国产女主播视频一区二区| 毛片网站免费观看| 91亚洲国产成人精品一区二三| 久久久久久久久久影视| 高清不卡在线观看av| 亚洲美女精品视频| 国产jizzjizz一区二区| 黄页网站在线看| 国产99久久久国产精品潘金| 初高中福利视频网站| 国产一区亚洲一区| 婷婷激情小说网| 国产精品77777| 制服.丝袜.亚洲.中文.综合懂| 国产一区二区三区四区在线观看| 成人av毛片在线观看| 国产在线精品不卡| 永久免费看片在线观看| 丁香六月综合激情| 国产xxxx视频| 久久婷婷一区二区三区| 欧美 日韩 成人| 一区精品在线播放| 欧美黄片一区二区三区| 午夜精品免费在线| 亚洲天堂一区在线| 欧美性一区二区| 97视频免费在线| 日韩欧美国产不卡| 天天干天天摸天天操| 亚洲精品一区中文字幕乱码| 黄色大片在线免费观看| 最近中文字幕mv在线一区二区三区四区 | 蜜臀av在线| 91极品女神在线| 久久电影天堂| 国产欧美日韩一区二区三区| 久久最新网址| 日日噜噜夜夜狠狠久久丁香五月| 伊人久久大香线蕉综合热线| 日本黄色三级大片| 久国产精品韩国三级视频| 涩视频在线观看| 久久久久国产精品麻豆ai换脸| 国产wwwwxxxx| 精品欧美激情精品一区| 中文字幕免费高清在线观看| 日韩欧美亚洲一区二区| 日韩美女一级视频| 久久精品视频中文字幕| 九九精品调教| 国产精品久久久久久久午夜| 2021年精品国产福利在线| 久久国产精品-国产精品| 国产精品伦理久久久久久| 日本www在线视频| 国产又黄又大久久| 无码熟妇人妻av| 一区二区三区四区激情| 国产午夜无码视频在线观看| 日韩欧美高清在线| 在线观看麻豆| 国产999在线观看| 亚洲专区**| 亚洲一区二区三区精品在线观看| 极品裸体白嫩激情啪啪国产精品| 色www免费视频| 91女人视频在线观看| 国产极品国产极品| 色欧美片视频在线观看 | 亚洲国产精品中文| av片在线观看永久免费| 国产成人一区二区三区电影| 国产精品网在线观看| 中国一区二区三区| 日本成人在线不卡视频| 91黄色免费视频| 一区二区三区在线免费视频| 影音先锋国产资源| 亚洲免费一级电影| 黄频免费在线观看| 99国产超薄丝袜足j在线观看| 成人精品视频| www.99av.com| 久久久91精品国产一区二区三区| 三级黄色在线视频| 欧美sm美女调教| 性欧美ⅴideo另类hd| 国产日韩欧美在线播放| 精品国产1区| 日韩一级在线免费观看| 久久综合九色综合97_久久久| 亚州国产精品视频| 亚洲国产精品资源| 国产夫妻在线| 国产综合欧美在线看| 在线播放亚洲| 日本黄色免费观看| 午夜精品爽啪视频| 三级视频在线播放| **欧美日韩vr在线| 日韩理论电影中文字幕| 又粗又黑又大的吊av| 99久久99久久精品国产片果冻| 日韩男人的天堂| 日韩精品在线免费观看视频| 天堂√中文最新版在线| 麻豆精品蜜桃一区二区三区| 久久久久.com| 娇妻被老王脔到高潮失禁视频| 欧美在线看片a免费观看| 国产在线91| 国产乱人伦真实精品视频| 色综合蜜月久久综合网| 6080国产精品| 亚洲高清免费观看| 天天操天天干天天操| 欧美亚洲另类激情另类| 国产一区二区三区不卡视频网站| 97公开免费视频| 国产精品剧情在线亚洲| 国产又黄又粗又长| 色综合视频一区中文字幕| 91麻豆精品国产91久久久久推荐资源| 99国产精品白浆在线观看免费| 不卡免费追剧大全电视剧网站| 男人的天堂一区二区| 亚洲欧美日韩网| 日韩黄色碟片| 日韩一区二区高清视频| 91视频免费看| 夜夜骚av一区二区三区| 久久久久久91| 国产一区二区三区电影在线观看 | 欧美电影免费网站| 无遮挡又爽又刺激的视频| 国产精品久久久久永久免费观看| 国产av无码专区亚洲av| 国语自产精品视频在线看抢先版图片| 亚洲毛片免费看| 人人爽人人爽av| 午夜精品久久久久久久久| www在线免费观看| 成人欧美一区二区三区视频| 久久久久久9| 精品国产精品国产精品| 日韩成人在线网站| 欧美aaaaaaaa| 黄色一级在线视频| 国产精品久久久久久久久搜平片 | 日韩在线麻豆| 福利视频999| 日韩欧美国产网站| 国产精品久久久久久福利| 狠狠久久综合婷婷不卡| 麻豆精品新av中文字幕| 日韩网红少妇无码视频香港| 日韩亚洲一区二区| 人妖一区二区三区| 婷婷激情小说网| 欧美视频中文字幕| 黄色污网站在线观看|