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

面試官:說說微服務(wù)灰度發(fā)布的底層實現(xiàn)?

開發(fā) 架構(gòu)
通過 Spring Cloud 的擴展組件和自定義路由策略,開發(fā)人員可以輕松實現(xiàn)灰度發(fā)布功能,確保在微服務(wù)架構(gòu)中安全、平滑地進行版本迭代升級。

微服務(wù)中的灰度發(fā)布(又稱為金絲雀發(fā)布)是一種持續(xù)部署策略,它允許在正式環(huán)境的小部分用戶群體上先部署新版本的應(yīng)用程序或服務(wù),而不是一次性對所有用戶同時發(fā)布全新的版本。

這種方式有助于在生產(chǎn)環(huán)境中逐步驗證新版本的穩(wěn)定性和兼容性,同時最小化潛在風(fēng)險,不影響大部分用戶的正常使用。

1.灰度發(fā)布關(guān)鍵步驟

在 Spring Cloud 微服務(wù)架構(gòu)中,實現(xiàn)灰度發(fā)布通常涉及到以下幾個方面:

流量分割:

  • 根據(jù)一定的策略(如用戶 ID、請求頭信息、IP 地址等)將流入的請求分配給不同版本的服務(wù)實例。
  • 使用 Spring Cloud Gateway、Zuul 等 API 網(wǎng)關(guān)組件實現(xiàn)路由規(guī)則,將部分請求定向至新版本的服務(wù)節(jié)點。

版本標(biāo)識:

  • 新版本服務(wù)啟動時會注冊帶有特定版本標(biāo)簽的服務(wù)實例到服務(wù)注冊中心(如 Eureka 或 Nacos)。
  • 請求在路由時可以根據(jù)版本標(biāo)簽選擇相應(yīng)版本的服務(wù)實例。

監(jiān)控與評估:

  • 在灰度發(fā)布的階段,運維團隊會對新版本服務(wù)的性能、穩(wěn)定性以及用戶體驗等方面進行實時監(jiān)控和評估。
  • 如果新版本表現(xiàn)良好,則可以逐漸擴大灰度范圍直至全面替換舊版本。

故障恢復(fù)與回滾:若新版本出現(xiàn)問題,可通過快速撤銷灰度發(fā)布策略,使所有流量恢復(fù)到舊版本服務(wù),實現(xiàn)快速回滾,確保服務(wù)整體可用性。

通過 Spring Cloud 的擴展組件和自定義路由策略,開發(fā)人員可以輕松實現(xiàn)灰度發(fā)布功能,確保在微服務(wù)架構(gòu)中安全、平滑地進行版本迭代升級。

2.實現(xiàn)思路

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

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

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

3.底層實現(xiàn)

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

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

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

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

4.具體實現(xiàn)

(1)版本標(biāo)識

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

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

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

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

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

private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances,
                                                          Request request) {
        // 實例為空
        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ā)布(請求)
            if (headers.get(GlobalVariables.GRAY_KEY) != null &&
                    headers.get(GlobalVariables.GRAY_KEY).get(0).equals("true")) {
                // 灰度發(fā)布請求,得到新服務(wù)實例列表
                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é)點
                    instances = findInstances;
                }
            } else { // 查詢非灰度發(fā)布節(jié)點
                // 灰度發(fā)布測試請求,得到新服務(wù)實例列表
                instances = instances.stream().
                        filter(s -> s.getMetadata().get(GlobalVariables.GRAY_KEY) == null ||
                                !s.getMetadata().get(GlobalVariables.GRAY_KEY).equals("true"))
                        .toList();
            }
            // 隨機正數(shù)值 ++i( & 去負數(shù))
            int pos = this.position.incrementAndGet() & Integer.MAX_VALUE;
            // ++i 數(shù)值 % 實例數(shù) 取模 -> 輪詢算法
            int index = pos % instances.size();
            // 得到服務(wù)實例方法
            ServiceInstance instance = (ServiceInstance) instances.get(index);
            return new DefaultResponse(instance);
        }
    }

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

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

要在網(wǎng)關(guān) Spring Cloud Gateway 中傳遞灰度標(biāo)識,只需要在 Gateway 的全局自定義過濾器中設(shè)置 Response 的 Header 即可,具體實現(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 對象
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpResponse response = exchange.getResponse();
        if (request.getQueryParams().getFirst(GlobalVariables.GRAY_KEY) != null) {
            // 設(shè)置金絲雀標(biāo)識
            response.getHeaders().set(GlobalVariables.GRAY_KEY,
                    "true");
        }
        // 此步驟正常,執(zhí)行下一步
        return chain.filter(exchange);
    }
}

(4)微服務(wù)中傳遞灰度標(biāo)簽

HTTP 調(diào)用工具 Openfeign,我們需要在微服務(wù)間繼續(xù)傳遞灰度標(biāo)簽,它的實現(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());
        }
    }

    /**
     * 獲取原請求頭
     */
    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;
    }
}

課后思考

說說負載均衡的底層實現(xiàn)?為什么在網(wǎng)關(guān)和 Openfeign 中要傳遞灰度標(biāo)簽?

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

2025-04-08 00:00:00

@AsyncSpring異步

2023-11-21 09:35:49

全量部署微服務(wù)

2024-02-29 16:49:20

volatileJava并發(fā)編程

2024-08-29 16:30:27

2024-03-14 14:56:22

反射Java數(shù)據(jù)庫連接

2020-07-02 07:52:11

RedisHash映射

2024-08-22 10:39:50

@Async注解代理

2024-03-05 10:33:39

AOPSpring編程

2024-09-04 17:35:09

2024-07-31 08:28:37

DMAIOMMap

2024-12-06 07:00:00

2024-09-20 08:36:43

零拷貝數(shù)據(jù)傳輸DMA

2024-03-22 06:56:24

零拷貝技術(shù)數(shù)據(jù)傳輸數(shù)據(jù)拷貝

2024-08-12 17:36:54

2022-12-05 10:47:08

RocketMQ灰度消息

2022-06-15 15:14:17

Java公平鎖非公平鎖

2021-10-27 10:27:36

微信小程序流程

2025-02-28 00:00:00

2024-06-04 09:02:03

2021-06-07 17:12:22

線程安全Atomic
點贊
收藏

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

国产精品亚洲精品| 中文字幕九色91在线| 婷婷五月综合缴情在线视频| 亚洲欧洲精品视频| 日韩高清在线一区| 欧美日韩爱爱视频| 国产女主播喷水高潮网红在线| 久久91超碰青草在哪里看| 有坂深雪av一区二区精品| 久久精品日产第一区二区三区精品版 | 国产亚洲日本欧美韩国| 免费不卡av网站| 欧美激情20| 亚洲精品视频在线看| 你懂的视频在线一区二区| 91精品视频免费在线观看| 亚洲国内欧美| 久久久精品一区二区三区| 四虎永久免费影院| 麻豆精品一区| 欧美色图片你懂的| 美女日批免费视频| 2024最新电影在线免费观看| 国产天堂亚洲国产碰碰| 国产欧美一区二区三区另类精品| 中文字幕码精品视频网站| 亚洲国产专区校园欧美| 久久国产视频网站| 极品蜜桃臀肥臀-x88av| 亚洲免费福利一区| 日韩女优电影在线观看| 伊人网在线综合| 日本在线中文字幕一区二区三区 | 青草网在线观看| 欧美另类极品| 久久久精品免费免费| 国产日韩欧美综合精品| hs视频在线观看| 激情久久久久久久久久久久久久久久| 欧美一区二区.| 日韩精品一区二区av| 欧美~级网站不卡| www.日韩.com| 天堂av免费在线| 99re久久最新地址获取| 亚洲午夜色婷婷在线| 国产精品第七页| 伦理一区二区| 日韩av在线高清| 在线免费观看污视频| 成人av综合网| 亚洲成av人乱码色午夜| 亚洲欧洲日韩综合| 亚洲亚洲一区二区三区| 日韩免费成人网| 岛国av免费观看| 精品欠久久久中文字幕加勒比| 精品久久免费看| 国产一级黄色录像| 亚洲欧美成人vr| 亚洲欧美中文字幕在线一区| 国产手机在线观看| 精品久久久久中文字幕小说| 国产亚洲成精品久久| 中文字幕在线观看免费高清| 成人在线视频免费观看| 社区色欧美激情 | 永久免费看片视频教学| 欧美激情在线| 91国产在线精品| 亚洲 日本 欧美 中文幕| 蜜桃视频一区二区三区| 国产主播在线一区| 性中国xxx极品hd| 91污在线观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 毛片网站在线| 综合欧美亚洲日本| 欧美成人三级在线视频| 91久久国产综合久久91猫猫| 欧美午夜电影一区| 日韩高清在线一区二区| 欧美性生活一级片| 中文字幕亚洲自拍| 精品爆乳一区二区三区无码av| av不卡免费看| 国产日韩一区在线| 国产综合在线播放| 国产亚洲欧美一区在线观看| 青少年xxxxx性开放hg| 免费在线观看av电影| 日韩欧美亚洲一二三区| 欧美性受xxxxxx黑人xyx性爽| 91精品啪在线观看国产爱臀| 亚洲日本aⅴ片在线观看香蕉| 国产探花在线视频| 国产精品亚洲综合久久| 成人网在线免费观看| 亚洲欧洲精品视频| 亚洲免费伊人电影| 97公开免费视频| 91蜜桃臀久久一区二区| 在线观看不卡av| 日本一级黄色录像| 久久66热re国产| 免费亚洲精品视频| av大大超碰在线| 欧洲亚洲精品在线| www.四虎在线| 亚洲v在线看| 国产www精品| 亚洲欧美另类日韩| 成人欧美一区二区三区黑人麻豆 | 日韩av在线网站| 97在线观看视频免费| 国产日韩1区| 114国产精品久久免费观看| 极品白浆推特女神在线观看 | 亚洲天堂五月天| 成人午夜私人影院| 超碰在线免费观看97| 欧美暴力调教| 国产视频欧美视频| 亚洲国产精一区二区三区性色| 麻豆精品在线播放| 日韩av电影免费观看| 天堂√中文最新版在线| 欧美一区二区三区播放老司机| 91精品久久久久久久久久久久| 亚洲东热激情| 国产三区精品| 黑人精品视频| 精品国产一区二区精华| 91插插插插插插| 亚洲天堂中文在线| 国产一区亚洲一区| 亚洲最新免费视频| 日本黄色一区| 一本一本久久a久久精品牛牛影视| www成人在线| 99精品视频在线免费观看| 黄色成人在线看| 成人香蕉社区| 韩国国内大量揄拍精品视频| 亚洲精品久久久久久动漫器材一区| 中文字幕一区二区三中文字幕| 亚洲三级视频网站| 日韩精品午夜| 国产主播欧美精品| 国产福利视频在线| 欧美一区二区三区在线观看| 亚洲最大的黄色网址| 久久99精品久久久| 男同互操gay射视频在线看| 日韩护士脚交太爽了| 久久在线免费视频| 亚洲av无码乱码国产精品| 一区二区国产视频| 波多野结衣办公室双飞 | 国产调教视频一区| 一级黄色香蕉视频| 色乱码一区二区三区网站| 国产一区玩具在线观看| 婷婷色在线资源| 亚洲第一精品福利| 中文字幕免费在线观看视频| 久久亚洲免费视频| 天天干在线影院| 91久久久精品国产| 国产免费高清一区| 美女一区网站| 久久精品中文字幕电影| 亚洲av永久纯肉无码精品动漫| 亚洲444eee在线观看| 午夜理伦三级做爰电影| 免费人成在线不卡| 国产美女作爱全过程免费视频| 国产乱人伦精品一区| 国产成人福利视频| 国产在线更新| 亚洲精品小视频| 中文字幕在线观看你懂的| 亚洲精品免费在线观看| 亚洲少妇中文字幕| 久久深夜福利| 欧美在线观看黄| 日韩伦理一区二区三区| 国产精品视频播放| 丁香影院在线| 日韩在线视频网站| 黄频在线免费观看| 欧美在线你懂得| 久久国产精品二区| 国产欧美精品在线观看| 中文写幕一区二区三区免费观成熟| 999亚洲国产精| 中文字幕一区二区三区精彩视频 | 亚洲精品美女久久7777777| 国产一区二区久久久久| 青青草成人在线| 成人午夜在线影视| 亚洲天堂免费在线| 丰满肥臀噗嗤啊x99av| 在线亚洲精品福利网址导航| 久久午夜鲁丝片午夜精品| 国产精品午夜春色av| 中文字幕在线国产| 久久99国产乱子伦精品免费| av之家在线观看| 欧美成人亚洲| 在线不卡日本| 国产麻豆精品久久| 国产精品美女诱惑| 爱情电影网av一区二区| 国产精品白嫩美女在线观看| а√在线中文网新版地址在线| 另类视频在线观看| 亚洲精品传媒| 中文字幕久精品免费视频| 天堂成人在线| 亚洲成人亚洲激情| 国产黄色av片| 欧美一区二区精品在线| 中文字幕视频在线播放| 日韩欧美a级成人黄色| 日本少妇吞精囗交| 亚洲地区一二三色| 久久久久久久蜜桃| 亚洲另类在线一区| 国产精品久久久免费看| 国产日本亚洲高清| 右手影院亚洲欧美| 99视频超级精品| 亚洲成av人片在线观看无| 国产成人免费网站| 中文字幕久久久久久久| 韩国三级中文字幕hd久久精品| 中文字幕国产传媒| 日韩国产精品久久久久久亚洲| 日本精品www| 模特精品在线| 熟女人妇 成熟妇女系列视频| av不卡免费看| 亚洲熟妇av一区二区三区| 日韩午夜精品| 97成人在线观看视频| 亚洲欧美激情诱惑| wwwxxx黄色片| 日韩在线一二三区| 99热这里只有精品在线播放| 麻豆久久久久久| 日本黄色一级网站| 国产盗摄视频一区二区三区| 成人做爰69片免费| 成人av在线播放网站| av无码一区二区三区| 26uuu国产日韩综合| 精品人妻无码一区| 国产精品人妖ts系列视频| 国产精品国产三级国产传播| 亚洲少妇最新在线视频| 国产亚洲欧美精品久久久www| 亚洲成人资源在线| 久久久久99精品成人片我成大片| 欧美午夜xxx| 久久午夜鲁丝片| 宅男在线国产精品| 女人18毛片一区二区三区| 日韩av网址在线| 国产1区2区3区在线| 久久精品国产成人| 岛国毛片av在线| 日本欧美精品在线| 国产精久久久| 黑人另类av| 欧美丰满日韩| 可以看毛片的网址| 日韩av电影天堂| av不卡中文字幕| 国产三级三级三级精品8ⅰ区| www.97视频| 黑人精品xxx一区| ,亚洲人成毛片在线播放| 亚洲第一区第二区| 超碰在线国产| 久久久久久成人| 成人在线免费av| 成人在线视频电影| 欧美日韩精品在线一区| 男女裸体影院高潮| 日本午夜一本久久久综合| 国产成人av片| 欧美国产视频在线| 久久精品视频8| 欧美性极品少妇| 婷婷色在线观看| 蜜臀久久99精品久久久久久宅男| 日韩激情电影免费看| 成人黄色短视频在线观看| 欧美精品中文| 国产视频在线观看网站| 蜜臀久久99精品久久久久久9| 国产免费a级片| 亚洲男同1069视频| 亚洲av无码精品一区二区| 精品国产乱码久久久久久1区2区 | 欧美成人免费va影院高清| 91精品xxx在线观看| 国产伦精品一区二区三毛| 99久久99久久精品国产片桃花| 大肉大捧一进一出好爽视频| 国产精品一区二区在线观看网站 | 四虎影视精品成人| 蜜臀久久99精品久久久久久宅男| 成人高清一区| 蜜桃91精品入口| 亚洲国产美女| 中文字幕av一区二区三区人妻少妇| 亚洲国产精品成人综合 | 久久国产精品一区二区三区四区| 中文字幕亚洲精品乱码| www.se五月| 国产精品视频在线看| 伊人久久久久久久久久久久| 亚洲国产日韩欧美在线图片| 丝袜中文在线| 亚洲在线观看视频网站| 91麻豆国产自产在线观看亚洲| 日本黄网站免费| 久久亚洲影视婷婷| www.伊人久久| 国产午夜精品麻豆| 妞干网免费在线视频| 韩国成人一区| 亚洲欧洲日本mm| 日韩无码精品一区二区| 亚洲成人在线网站| 天堂网在线观看视频| 隔壁老王国产在线精品| 国产欧美一区二区三区米奇| 狠狠噜天天噜日日噜| 国产传媒久久文化传媒| 欧美极品aaaaabbbbb| 精品国产一区二区三区久久久蜜月| 怡红院红怡院欧美aⅴ怡春院| 91中文在线视频| 中文字幕人成人乱码| 一级黄色大片免费看| 亚洲一级二级三级| 亚洲女人18毛片水真多| 97视频在线观看成人| 最新亚洲精品| 欧美黑人又粗又大又爽免费| 久久综合一区二区| 精品久久久久久久久久久国产字幕| 国产一区二区三区日韩欧美| 国产极品嫩模在线观看91精品| 在线电影看在线一区二区三区| 狠狠色伊人亚洲综合成人| 污软件在线观看| 亚洲白拍色综合图区| gay欧美网站| 亚洲日本精品国产第一区| 激情五月激情综合网| 国产精品第108页| 亚洲人成网站777色婷婷| 成人高清一区| 欧美这里只有精品| 久久亚区不卡日本| 中文字幕在线观看欧美| 欧美人与性动交a欧美精品| 日韩在线麻豆| 日本中文字幕二区| 亚洲一区二区精品视频| 青青草免费观看免费视频在线| 国产精品美女免费看| 欧美日本不卡| 人妻视频一区二区| 日韩一区二区在线免费观看| 国产理论在线| 在线一区亚洲| 99精品视频一区| 国产一区二区三区成人| 992tv成人免费视频| 波多野结衣一区| 在线视频日韩欧美| 欧美性开放视频| 国产91在线视频蝌蚪| 欧美第一黄网| 国产精品一区在线观看乱码 | 国产中文在线播放| 日韩欧美激情一区二区| 大白屁股一区二区视频| 国产乱码在线观看| 国产综合在线看| 欧美丰满老妇| 国精产品一区二区三区| 日韩精品中文字幕一区二区三区| 国产韩日精品| 国产成人无码a区在线观看视频|