精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲天堂一区二区| www.com国产| 亚洲精品一区二区三区中文字幕| 亚洲一区二区三区四区的| 国产综合av一区二区三区| 无码人妻丰满熟妇区五十路 | 在线黄色的网站| 国产欧美日本一区二区三区| 99精品国产一区二区| 成人午夜视频精品一区| 97精品国产一区二区三区| 亚洲国产精品va在线观看黑人| 中文字幕第21页| 四虎影视成人| 中文字幕第一区综合| 国产乱子伦精品| 国产影视一区二区| 久久黄色网页| 欧美疯狂做受xxxx高潮| 1024手机在线观看你懂的| 日韩欧美中文字幕一区二区三区| 欧美性猛交xxx| 国产一区二区片| 日本视频在线观看| 26uuu另类欧美| 不卡的av一区| 国产一区二区小视频| 久久久久久一区二区| 久久久久久久激情视频| 911国产在线| 成人免费电影网址| 日韩av在线免费观看一区| 欧美色图校园春色| 日韩一级视频| 精品视频一区二区三区免费| 黄色国产精品视频| 欧美日韩在线观看首页| 亚洲综合在线观看视频| 潘金莲一级淫片aaaaa免费看| 黄色大片在线看| 91在线观看污| 国产麻豆乱码精品一区二区三区 | 国内激情视频在线观看| 三级在线看中文字幕完整版| 久久精品女人| 欧美精品videosex性欧美| www.99re6| 成人精品天堂一区二区三区| 日韩精品福利网站| 91丝袜在线观看| 国产精品网址| 精品av综合导航| 一二三区视频在线观看| 国产亚洲观看| 欧美精选午夜久久久乱码6080| 欧美精品第三页| 欧美xxxx做受欧美护士| 色婷婷国产精品综合在线观看| 欧美 日本 亚洲| 一根才成人网| 91福利在线导航| 另类小说第一页| 国产精品久久久久久久久久齐齐| 91国模大尺度私拍在线视频| 噼里啪啦国语在线观看免费版高清版| 精品国产免费人成网站| 91久久免费观看| 向日葵污视频在线观看| 91精品视频一区二区| 偷拍自拍亚洲色图| 精品av在线播放| 九色在线视频观看| 欧美成人资源| 欧美午夜片在线看| 中文字幕在线视频精品| 亚洲日本视频在线| 日韩大陆欧美高清视频区| 欧美丰满少妇人妻精品| 精品一区二区三| 久久久精品999| 久久伊人成人网| 美日韩精品视频| 国产美女主播一区| 午夜精品久久久久久久99热黄桃 | 国产综合在线观看| 中文字幕欧美三区| 久久国产精品免费观看| 国产美女情趣调教h一区二区| 精品久久久久久久久久ntr影视| 日韩在线xxx| 国产不卡精品| 日韩欧美影院| 亚洲日本欧美日韩高观看| jizzjizzjizz国产| 黑人一区二区| 国产精品青青在线观看爽香蕉 | 激情六月婷婷综合| 国产九区一区在线| 1024视频在线| 亚洲成人中文在线| 欧美三级午夜理伦三级富婆| 国产精品2023| www.久久久久久.com| 久久狠狠高潮亚洲精品| 久久成人免费电影| 久久综合中文色婷婷| 黄色网在线看| 日韩一级特黄| 日韩欧美综合在线视频| 久久出品必属精品| 欧洲精品一区| 九九热最新视频//这里只有精品| 天堂网视频在线| 高清不卡在线观看av| 一区二区精品免费视频| 黑人巨大精品| www.久久.com| 欧美videossexotv100| 亚洲AV无码成人精品区明星换面| 欧美99在线视频观看| 国产精品久久久久影院日本| 欧美特级特黄aaaaaa在线看| 亚洲欧洲色图综合| 国产激情在线观看视频| 久久黄色影视| 欧美黄色成人网| 国产又大又黄的视频| 国产区在线观看成人精品| 久久亚洲中文字幕无码| 最新国产精品精品视频| 欧美xxxx18国产| 亚洲午夜激情视频| 国产日韩亚洲欧美综合| 成人毛片视频网站| 国产精品传媒| 欧美极品少妇xxxxⅹ免费视频| 一级全黄裸体免费视频| 欧美激情中文字幕一区二区| 免费观看日韩毛片| 任我爽精品视频在线播放| 久久久中文字幕| 亚洲精品一区二区三区不卡| 亚洲免费看黄网站| 亚洲精品国产一区二区三区| 久久看人人摘| 国产精品视频xxxx| 3d动漫精品啪啪一区二区三区免费| 免费看黄网站在线观看| 亚洲日本在线视频观看| 狠狠操精品视频| 国产一区二区三区网| 日韩女在线观看| 精品999视频| 狠狠操狠狠色综合网| 超碰男人的天堂| 国产精品一页| 欧美极品色图| 欧洲av一区二区| 中文字幕日韩在线播放| 亚洲图片小说视频| 亚洲乱码中文字幕| 国产情侣久久久久aⅴ免费| 在线欧美亚洲| 九色一区二区| 成人在线黄色| 久久精品成人一区二区三区 | 国产欧美日韩一级| 日本福利一区二区三区| 欧洲精品一区二区三区| 自拍亚洲一区欧美另类| 国产精品久久久久久久成人午夜| 自拍偷在线精品自拍偷无码专区 | 日韩中文字幕在线视频播放| 国产精品国产三级国产普通话对白| 中文字幕亚洲电影| 涩视频在线观看| 销魂美女一区二区三区视频在线| 欧美区高清在线| 成人精品国产亚洲| 欧美大片免费观看在线观看网站推荐| www.成人在线观看| 欧美性xxxxx极品娇小| 欧美一区二区三区粗大| 国产乱码精品一品二品| 午夜免费福利小电影| 精品国产一区二区三区| 亚洲综合最新在线| 咪咪网在线视频| 久久精品国产亚洲精品| 国产综合在线播放| 欧美伊人久久久久久午夜久久久久| 国产免费一区二区三区四区| av一区二区三区四区| 妞干网在线免费视频| 91精品成人| 久久久久免费网| 国产精品一区免费在线| 日韩av免费在线观看| 瑟瑟视频在线| 亚洲精品网站在线播放gif| 国产喷水吹潮视频www| 欧美日韩亚洲一区二区三区| 波多野结衣亚洲一区二区| 国产精品中文| 一个色综合av| 中文字幕 自拍| 国产ts人妖一区二区| 91av俱乐部| 精品不卡视频| 天堂v在线视频| 欧美精品尤物在线观看| 国产欧美日韩伦理| 精品欧美视频| 国产精品一区二区3区| 国产传媒在线观看| 久久夜色精品亚洲噜噜国产mv| 欧美在线一卡| 欧美精品一区二区在线观看| 亚洲中文一区二区三区| 日韩欧美在线免费| 久久精品国产亚洲av香蕉| 国产精品毛片a∨一区二区三区| 中文字幕免费在线播放| 国产在线一区观看| 特级丰满少妇一级| 亚洲在线黄色| 国产九九九九九| 午夜精品视频在线观看一区二区| 欧美巨大xxxx| 国内精品二区| 中文字幕一区二区三区日韩精品 | 日本少妇高潮喷水视频| 欧美日本一区| 大桥未久一区二区| 久久在线视频免费观看| 婷婷久久伊人| 欧美日韩一区二区三区视频播放| 久久久www成人免费无遮挡大片| 一区二区三区四区五区精品| 久久综合亚洲| 麻豆成人小视频| 欧美日韩导航| 精品一区二区国产| 欧美美女黄色| 精品国产乱码久久久久久久软件 | 亚洲三区四区| 天天av综合| 在线播放 亚洲| 羞羞色午夜精品一区二区三区| 亚洲丰满在线| 欧美成人milf| japanese在线视频| 欧美一区二区三区另类 | 九一在线免费观看| 国产精品视频看| 免费精品在线视频| 亚洲日本一区二区三区| 国产精品1000部啪视频| 久久久国产午夜精品| 摸摸摸bbb毛毛毛片| 中文一区一区三区高中清不卡| 国产激情av在线| 自拍偷拍欧美精品| 欧美三级在线免费观看| 亚洲国产精品一区二区久久| 日本三级免费看| 日本免费精品| 色偷偷偷综合中文字幕;dd| 淫片在线观看| 九九久久国产精品| caoprom在线| 国产精品99免视看9| 亚洲一区二区三区久久久| 99久久一区三区四区免费| 你懂的在线观看一区二区| 茄子视频成人在线观看| 97国产成人高清在线观看| 国产亚洲精品久久久久久久| 在线综合欧美| 天天爽天天爽夜夜爽| 国产精品亚洲а∨天堂免在线| 国产吃瓜黑料一区二区| 久久久777精品电影网影网| 熟女av一区二区| 香蕉久久一区二区不卡无毒影院 | 在线h片观看| 4438全国成人免费| 91精品一区| 久久大片网站| 外国成人激情视频| 欧美精品一区免费| 国产乱码精品一区二区三区av| avtt香蕉久久| 1000精品久久久久久久久| 香蕉视频一区二区| 欧美日韩精品免费观看视频| 亚洲成人黄色片| 中文字幕精品av| 黑森林国产精品av| 91日韩在线视频| 漂亮人妻被中出中文字幕| 亚洲黄色免费| 欧美成人福利在线观看| 91在线精品一区二区三区| 黄色香蕉视频在线观看| 色综合久久九月婷婷色综合| 精品国产九九九| 在线视频精品一| 国产亚洲成av人片在线观看| 成人中文字幕在线观看| 久久不见久久见国语| av动漫在线免费观看| 男人操女人的视频在线观看欧美| 久久久久无码国产精品一区李宗瑞| 国产欧美日产一区| 免费黄色网址在线| 精品久久五月天| 亚洲综合伊人久久大杳蕉| 国产精品日日做人人爱| 亚洲自拍电影| 午夜免费福利小电影| 福利一区在线观看| 成年人午夜剧场| 3d动漫精品啪啪1区2区免费| 国产黄在线观看免费观看不卡| 久久久久久久久久久免费精品 | 国产精品成人观看视频免费| 日韩电影免费网站| 毛葺葺老太做受视频| 91麻豆swag| www.伊人久久| 日韩av中文在线| 国产美女一区视频| 国产精品国产三级国产专区53 | 欧美理论电影在线观看| 在线视频成人| 中文字幕一区二区三区精彩视频 | 亚洲91久久| 色噜噜狠狠永久免费| 欧美国产禁国产网站cc| 国产精品高清无码| 精品制服美女丁香| 天天干在线影院| 国产无人区一区二区三区| 久久久精品视频网站| 亚洲免费高清视频| 欧美三级网址| 神马影院午夜我不卡影院| 人人精品人人爱| 毛片视频免费播放| 56国语精品自产拍在线观看| 日本不卡三区| 亚洲影院在线看| 欧美日韩一卡| 日本黄色录像片| 一本一道久久a久久精品| 蜜桃免费在线| 国产精品揄拍500视频| 国产高清久久| 伊人影院在线观看视频| 亚洲成人av一区二区三区| 姝姝窝人体www聚色窝| 国产aⅴ夜夜欢一区二区三区| 国产最新精品| 最近中文字幕一区二区| 亚洲欧美综合在线精品| 99免费在线视频| 午夜精品理论片| 精品国产乱码久久久久久1区2匹| www.国产视频.com| 一二三区精品视频| 日韩大片b站免费观看直播| 国产精品男人的天堂| 亚洲精品电影| 一区二区三区少妇| 欧美视频一区二区三区四区| 麻豆av在线免费看| 国产伦精品一区二区三区高清 | 97精品国产91久久久久久| 免费观看久久av| 中文字幕亚洲影院| 精品国产999| 欧美三级黄网| 国产欧美日本在线| 蜜桃视频一区二区三区在线观看| 丝袜 亚洲 另类 欧美 重口| 欧美精品一区二区三区一线天视频 | 自拍偷拍色综合| 欧美韩国理论所午夜片917电影| 欧美1区二区| 嫩草视频免费在线观看| 亚洲va在线va天堂| 尤物网址在线观看| 国产欧美欧洲| 国产综合久久久久久鬼色| 女人十八岁毛片| 欧美尺度大的性做爰视频| 亚洲精品国产动漫| 91人妻一区二区三区| 91黄色在线观看|