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

不當的超時與重試設置:從雪崩到穩定性的藝術

開發 前端
超時(Timeout)與重試(Retry)機制,就像是這個網絡中的交通信號燈和備用路線,它們的設計直接影響著整個系統的通暢與安全。

在分布式系統和微服務架構風靡的今天,服務間的網絡調用如同城市的交通網絡,錯綜復雜且至關重要。超時(Timeout)與重試(Retry)機制,就像是這個網絡中的交通信號燈和備用路線,它們的設計直接影響著整個系統的通暢與安全。一個設計不當的信號燈系統,輕則導致局部擁堵,重則引發全城癱瘓(即“雪崩效應”)。本文將深入探討不當設置的危害,并系統地闡述如何設計一套健壯的超時與重試策略。

第一部分:不當設置的陷阱與連鎖反應

1. 過長的超時時間:資源的慢性殺手

問題場景:
假設服務A調用服務B,服務B因數據庫鎖或死循環而僵死。如果服務A設置了過長的超時(例如60秒),會發生什么?

// 反面案例:過長的超時設置
@RestController
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/order/{id}")
    public String getOrder(@PathVariable String id) {
        // 創建一個60秒超時的RestTemplate(實際中不應這樣配置)
        RestTemplate longTimeoutTemplate = new RestTemplate();
        longTimeoutTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
        ((HttpComponentsClientHttpRequestFactory) longTimeoutTemplate.getRequestFactory()).setConnectTimeout(60000);
        ((HttpComponentsClientHttpRequestFactory) longTimeoutTemplate.getRequestFactory()).setReadTimeout(60000);

        // 調用下游訂單服務
        String result = longTimeoutTemplate.getForObject("http://downstream-service/orders/" + id, String.class);
        return result;
    }
}

引發的后果:

資源耗盡: 服務A的線程(如Tomcat的工作線程)會被這個緩慢的調用長期占用。在并發請求稍高的情況下,所有線程都會被此類慢請求阻塞,導致服務A無法處理任何其他請求,即使這些請求與下游服務B無關。

延遲加劇: 整個服務的響應時間(P99,P999)會被這些“長尾請求”顯著拉高,用戶體驗急劇下降。

故障傳播: 服務B的故障會通過這種“粘性”連接,迅速拖垮服務A。這違背了微服務“隔離故障”的核心原則。

2. 過短的重試間隔與無限制重試:重試風暴

問題場景:
服務A調用一個暫時不可用的服務B(例如正在發布重啟)。如果服務A設置了快速、無限制的重試,會發生什么?

// 反面案例:激進的重試策略
@Service
public class PaymentService {

    @Autowired
    private RestTemplate restTemplate;

    public boolean processPayment(String orderId) {
        int retries = 0;
        int maxRetries = 10; // 最大重試10次
        while (retries < maxRetries) {
            try {
                // 調用支付服務
                ResponseEntity<String> response = restTemplate.postForEntity("http://payment-service/pay", orderId, String.class);
                if (response.getStatusCode().is2xxSuccessful()) {
                    return true;
                }
            } catch (ResourceAccessException ex) {
                // 捕獲超時或連接異常
                System.out.println("Payment service call failed, retrying... " + (++retries));
                // 問題:只有固定的短暫延遲
                try {
                    Thread.sleep(100); // 僅等待100毫秒
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        }
        return false;
        }
}

引發的后果:

放大流量: 下游服務B剛剛重啟成功,正在恢復元氣。此時,服務A及其所有實例的成百上千個重試請求如潮水般涌來,瞬間將服務B再次擊垮。這被稱為“重試風暴”(Retry Storm)。

資源浪費: 服務A和服務B之間的網絡帶寬、CPU周期被大量注定失敗的請求白白消耗。

難以診斷: 監控系統會顯示服務B間歇性可用,但始終無法穩定服務,問題的根源(服務A的重試策略)卻容易被忽略。

3. 在非冪等操作上重試:數據不一致的噩夢

問題場景:
一個創建訂單的請求(HTTP POST)因網絡超時而失敗,但請求實際上已經到達了下游并成功創建了訂單,只是響應在網絡中丟失。如果客戶端盲目重試,會導致創建兩個完全相同的訂單。

// 危險的重試:在非冪等操作上
public class OrderService {

    public String createOrder(Order order) {
        int retries = 0;
        while (retries < 3) {
            try {
                // 這是一個非冪等的POST請求!
                String orderId = restTemplate.postForObject("http://order-service/orders", order, String.class);
                return orderId;
            } catch (ResourceAccessException e) {
                retries++;
                // ... 等待后重試
            }
        }
        throw new RuntimeException("Failed to create order after retries");
    }
}

引發的后果:
直接導致數據重復、狀態不一致等嚴重業務邏輯錯誤。用戶被重復扣款、創建了多個相同訂單等。

第二部分:穩健的超時與重試設計原則

要避免上述問題,我們需要一個多層次、精細化的防御策略。

1. 分層的超時策略

一個外部HTTP請求的生命周期中,會經過多個組件,每個組件都應設置合理的超時。

客戶端超時(Client Timeout): 這是最外層的防御。例如,在API Gateway或前端,設置一個全局的超時(如10秒),保證用戶請求不會無限期等待。

應用間調用超時(Inter-service Timeout): 這是微服務間的超時。它應該遠小于客戶端超時。例如,如果客戶端超時是10秒,那么服務A調用服務B的超時應該設置在1-3秒。

連接超時(Connection Timeout): 建立TCP連接的最大等待時間。通常較短(如1秒)。

讀取超時(Read Timeout/Socket Timeout): 從建立連接到收到完整響應的最大等待時間。這是業務邏輯的主要超時。

最佳實踐: 使用配置中心動態管理這些超時值,以便在故障發生時能快速調整。

代碼示例(使用Spring Boot和配置化RestTemplate):

@Configuration
public class AppConfig {

    @Value("${downstream.service.connect-timeout:1000}")
    private int connectTimeout;

    @Value("${downstream.service.read-timeout:3000}")
    private int readTimeout;

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setConnectTimeout(connectTimeout);
        factory.setReadTimeout(readTimeout);
        restTemplate.setRequestFactory(factory);
        return restTemplate;
    }
}

@Service
public class StableService {
    @Autowired
    private RestTemplate restTemplate; // 注入配置好超時的RestTemplate

    public String reliableCall() {
        return restTemplate.getForObject("http://stable-downstream-service/api", String.class);
    }
}

2. 智能的重試策略

一個健壯的重試機制必須包含以下幾個要素:

指數退避(Exponential Backoff): 重試的間隔時間應隨著重試次數的增加而指數級增長。例如,第一次重試等待100ms,第二次200ms,第三次400ms……這給了下游服務足夠的恢復時間。

抖動(Jitter): 在退避時間上增加一個隨機值。這是為了避免在重試時,多個客戶端在同一時刻發起請求,形成“同步重試”的波峰。抖動能將請求打散,平滑流量。

限制最大重試次數: 必須設置一個上限,避免無限重試。

僅對特定錯誤重試: 只對可能由瞬時故障引起的錯誤(如網絡超時、5xx服務器錯誤)進行重試。對于4xx客戶端錯誤(如400 Bad Request404 Not Found)絕不應重試,因為這些錯誤不會因重試而改變。

代碼示例(使用Resilience4j實現帶退避和抖動的重試):

Resilience4j是一個優秀的輕量級容錯庫,它完美地實現了這些模式。

首先,添加依賴:

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>2.0.2</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

然后,配置并使用重試器:

import io.github.resilience4j.retry.Retry;
import io.github.resilience4j.retry.RetryConfig;
import io.github.resilience4j.retry.RetryRegistry;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.function.Supplier;

@Component
public class ResilientService {

    private final Retry retry;

    public ResilientService() {
        // 1. 定義重試配置
        RetryConfig config = RetryConfig.custom()
                .maxAttempts(3) // 最大嘗試3次(初始1次 + 重試2次)
                .waitDuration(Duration.ofMillis(200)) // 初始等待時間
                .exponentialBackoff(200, 2, Duration.ofSeconds(2)) // 指數退避:基礎200ms,乘數2,最大等待2秒
                .retryOnException(throwable -> {
                    // 僅對超時和5xx錯誤重試
                    return throwable instanceof org.springframework.web.client.ResourceAccessException // 通常是超時
                            || (throwable instanceof org.springframework.web.client.HttpServerErrorException);
                })
                .build();

        // 2. 創建重試器實例
        this.retry = Retry.of("paymentServiceRetry", config);
    }

    public String callWithRetry() {
        // 3. 使用重試器裝飾業務邏輯
        Supplier<String> decoratedSupplier = Retry.decorateSupplier(retry, () -> {
            // 這是你的業務調用
            RestTemplate template = new RestTemplate();
            return template.getForObject("http://unstable-service/api", String.class);
        });

        try {
            return decoratedSupplier.get();
        } catch (Exception e) {
            // 處理在經過所有重試后仍然失敗的情況
            return "Fallback response after all retries failed";
        }
    }
}

3. 與非冪等操作相關的設計

黃金法則: 默認情況下,只對冪等的HTTP方法(GET, PUT, DELETE, HEAD, OPTIONS)進行重試。對于非冪等方法(POST),除非服務端提供了某種去重機制,否則應極其謹慎,或者不重試。

解決方案:

設計冪等API: 讓客戶端傳遞一個唯一的請求ID(如Idempotency-Key頭)。

@PostMapping("/orders")
public ResponseEntity createOrder(@RequestBody Order order, @RequestHeader("Idempotency-Key") String idempotencyKey) {
    // 服務端檢查是否已處理過這個Key
    if (orderService.isDuplicate(idempotencyKey)) {
        // 返回已創建的訂單,而不是重新創建
        return ResponseEntity.ok().body(existingOrder);
    }
    // ... 正常處理訂單創建
    Order newOrder = orderService.create(order, idempotencyKey);
    return ResponseEntity.ok().body(newOrder);
}

客戶端使用唯一鍵: 客戶端在重試非冪等操作時,必須攜帶相同的Idempotency-Key

4. 引入熔斷器模式

重試和超時是處理瞬時故障的好方法,但對于持續故障,我們需要一個更強的機制來防止系統被拖垮——這就是熔斷器(Circuit Breaker)。

熔斷器有三種狀態:

關閉(Closed): 請求正常通過,同時統計失敗率。

打開(Open): 當失敗率達到閾值,熔斷器打開,所有請求立即失敗,不再調用下游服務。

半開(Half-Open): 經過一段時間后,熔斷器允許少量請求通過。如果這些請求成功,則熔斷器關閉,恢復正常;如果仍然失敗,則繼續保持打開。

Resilience4j也提供了熔斷器的實現,它可以與重試器組合使用,形成強大的彈性防線。

import io.github.resilience4j.circuitbreaker.CircuitBreaker;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry;

@Component
public class SuperResilientService {

    private final CircuitBreaker circuitBreaker;
    private final Retry retry;

    public SuperResilientService() {
        // 配置熔斷器
        CircuitBreakerConfig cbConfig = CircuitBreakerConfig.custom()
                .failureRateThreshold(50) // 失敗率閾值50%
                .waitDurationInOpenState(Duration.ofSeconds(10)) // 在Open狀態等待10秒
                .slidingWindowSize(5) // 基于最近5次調用計算失敗率
                .build();

        this.circuitBreaker = CircuitBreaker.of("myServiceCB", cbConfig);

        // 配置重試(同上)
        RetryConfig retryConfig = ...;
        this.retry = Retry.of("myServiceRetry", retryConfig);
    }

    public String callWithRetryAndCircuitBreaker() {
        // 組合裝飾:先經過熔斷器,再經過重試器
        Supplier<String> decoratedSupplier = CircuitBreaker.decorateSupplier(circuitBreaker,
                Retry.decorateSupplier(retry, this::doBusinessCall)
        );

        try {
            return decoratedSupplier.get();
        } catch (Exception e) {
            return "Fallback due to: " + e.getMessage();
        }
    }

    private String doBusinessCall() {
        // 實際的業務調用
        RestTemplate template = new RestTemplate();
        return template.getForObject("http://critical-service/api", String.class);
    }
}

總結

超時與重試絕非簡單的“設個值”或“加個循環”那么簡單。它們是一個系統性工程,需要深刻理解其背后的分布式系統原理。

核心設計要點總結:

1. 超時是底線: 設置一個短于上游的超時,保護自身資源,實現快速失敗。

2. 重試要智能: 必須結合指數退避抖動有限次數,避免重試風暴。

3. 冪等是前提: 重試非冪等操作是危險的,必須通過業務設計(如冪等鍵)來保障安全。

4. 熔斷是保障: 將重試/超時與熔斷器結合,為系統提供多層防護,徹底隔離持續故障。

通過遵循這些原則,并利用成熟的庫(如Resilience4j, Hystrix等),我們可以將脆弱的分布式系統,轉變為一個具有彈性、能夠自我修復的健壯架構,從容應對云原生世界中不可避免的網絡波動和局部故障。

責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2023-02-27 18:31:20

架構服務監控

2023-04-26 18:36:13

2025-11-18 01:55:00

2011-12-21 09:46:46

程序員

2009-07-27 10:08:14

2020-07-28 08:07:14

ElasticSear

2020-07-13 08:10:13

軟件設計系統

2022-02-24 08:18:12

穩定性高可用可用性

2022-06-14 14:57:47

穩定性高可用流程

2009-12-23 18:18:04

2022-05-12 18:09:18

Kubernetes公有云

2022-10-20 12:04:08

2022-09-15 08:33:27

安全生產系統Review

2023-06-30 08:43:36

2010-05-12 11:24:16

2016-10-18 13:31:23

CronPaxos服務

2016-12-21 09:33:40

2011-08-01 11:03:15

2009-07-01 18:01:20

JSP代碼塊緩沖OSCache

2011-07-28 16:17:10

點贊
收藏

51CTO技術棧公眾號

女同视频在线观看| 国产深喉视频一区二区| 精品国产欧美日韩| 欧美亚洲一区三区| 一区二区三区精品视频在线| 国产精品日韩精品| 在线免费日韩av| 首页亚洲中字| 91精品久久久久久久91蜜桃| 国产无限制自拍| 电影av一区| 福利一区二区在线观看| 国产999精品久久久| 成人免费精品动漫网站| 精品淫伦v久久水蜜桃| 欧美影院一区二区三区| 福利视频免费在线观看| 黄色美女网站在线观看| 国产综合色产在线精品| 97高清免费视频| 国产3级在线观看| 亚洲春色h网| 日韩欧美三级在线| 冲田杏梨av在线| 欧美寡妇性猛交xxx免费| 国产视频在线观看一区二区三区| 91精品黄色| 97超碰人人看人人| 看黄色录像一级片| 香蕉久久99| 精品国产乱码久久| mm131亚洲精品| 欧美天堂视频| 五月婷婷综合激情| 免费国产成人看片在线| eeuss影院www在线播放| 久久嫩草精品久久久精品| 99在线视频免费观看| 一本色道久久综合亚洲| 久久精品系列| 97精品视频在线播放| 我要看一级黄色录像| 不卡在线一区| 日韩精品欧美激情| 丝袜熟女一区二区三区 | 国产精品91久久久| 午夜毛片在线观看| 日韩一级欧洲| 久久久日本电影| 欧美国产在线看| 欧美永久精品| 欧美成人小视频| 日本黄色小说视频| 午夜激情一区| 久久99视频精品| 青青草手机在线观看| 国产精品国产三级国产在线观看 | 黄色网址在线免费| 亚洲欧美怡红院| 伊人久久av导航| 毛片激情在线观看| 最新国产精品久久精品| 黄色网址在线免费看| 黄色网址免费在线观看| 亚洲色欲色欲www| 浴室偷拍美女洗澡456在线| 亚洲成a人v欧美综合天堂麻豆| 国产精品人妖ts系列视频| 水蜜桃一区二区| 看黄网站在线| 一区二区在线免费| 亚洲色成人www永久在线观看| 色呦呦在线视频| 亚洲第一狼人社区| 欧美亚洲国产成人| 成人在线高清| 欧美一区二区精品| 9.1成人看片| 国产综合久久久| www.欧美免费| 久久久久亚洲天堂| 一本久道久久综合狠狠爱| 欧美性视频在线| 中文字幕在线观看高清| 国产一区二区导航在线播放| 成人免费视频网站入口| 久久久久久女乱国产| 国产精品国产自产拍高清av王其| 国产人妻互换一区二区| 青青在线视频| 色婷婷精品久久二区二区蜜臂av| 在线观看国产一级片| 欧美在线在线| 日韩精品极品在线观看| 后入内射无码人妻一区| 狠狠综合久久| 国产精品27p| 亚洲欧美强伦一区二区| 国产午夜亚洲精品午夜鲁丝片 | 欧美在线观看18| 国产精品探花在线播放| 美女一区2区| 丝袜美腿亚洲一区二区| 日韩成人免费在线观看| 六月丁香婷婷久久| 久久99导航| 午夜成年人在线免费视频| 欧美日韩中文在线| 超碰91在线播放| 国产免费久久| 久久久久久久久网站| 国产一区二区在线播放视频| 99riav久久精品riav| 天天综合中文字幕| 日韩不卡免费高清视频| 日韩欧美一卡二卡| 一区二区三区在线观看免费视频| 亚洲午夜极品| 成人国产在线激情| 风间由美一区| 欧美性少妇18aaaa视频| 催眠调教后宫乱淫校园| 中出一区二区| 成人福利免费观看| 国产对白叫床清晰在线播放| 欧美日韩国产中文精品字幕自在自线 | 五月香视频在线观看| 精品久久久中文| 激情av中文字幕| 先锋资源久久| 国产精品视频免费观看www| 欧美孕妇性xxxⅹ精品hd| 亚洲国产成人av网| 91精品人妻一区二区三区四区| 91亚洲国产成人久久精品| 国产97在线视频| 日本福利片在线| 精品久久久久久久久久久久久| 亚洲熟妇一区二区| 午夜久久美女| 999热视频| 91亚洲天堂| 欧美一级片在线| 国产第一页浮力| 国产精品自产自拍| 亚洲小视频在线播放| 国产精品va视频| 久久天天躁狠狠躁夜夜躁| 这里只有精品9| 国产精品日韩成人| 亚洲xxxx2d动漫1| 成人在线亚洲| 国产欧美精品一区二区三区-老狼| 国产午夜在线视频| 91黄色小视频| 蜜桃视频最新网址| 国产九色精品成人porny| 伊人久久在线观看| 8x国产一区二区三区精品推荐| 欧美激情中文字幕乱码免费| 人妻91麻豆一区二区三区| 欧美日韩国产精品| 成人精品999| 日本免费在线视频不卡一不卡二| 亚洲aⅴ天堂av在线电影软件| 欧美日韩va| 欧美成人亚洲成人| 蜜桃视频污在线观看| 欧美日韩美女在线| 永久免费av无码网站性色av| 麻豆视频观看网址久久| 韩国黄色一级大片| 成人爽a毛片| 欧美综合在线第二页| yjizz视频网站在线播放| 在线播放中文字幕一区| 九九视频在线免费观看| 26uuu欧美日本| 日韩一级片播放| 无需播放器亚洲| 国产福利久久精品| 免费观看亚洲| 精品国产拍在线观看| 欧美一级在线免费观看| 91国在线观看| 亚洲av鲁丝一区二区三区| 成人av中文字幕| 青青草精品视频在线观看| 亚洲女同中文字幕| 久久av免费一区| 欧美视频免费看| 久久免费国产视频| jizz视频在线观看| 亚洲成人av片在线观看| 国产精品国产精品国产| 一区二区国产视频| 男人舔女人下部高潮全视频| 国产真实精品久久二三区| 无码专区aaaaaa免费视频| 日韩中文字幕高清在线观看| 国产精品一区二区在线观看| 国产成人福利夜色影视| 欧美精品久久久久久久久| fc2在线中文字幕| 亚洲国产精品一区二区三区| 亚洲中文字幕一区二区| 精品国产999| 日韩视频中文字幕在线观看| 久久久久国产成人精品亚洲午夜| 精品国产乱码久久久久久1区二区| 国产免费成人| 麻豆视频传媒入口| 日韩精品电影| 欧美另类一区| www国产精品| 成人在线一区二区| 丝袜美腿一区| 国模极品一区二区三区| 超碰在线caoporn| 一区二区在线视频| 欧美美乳在线| 亚洲国产精品va在线观看黑人| 91国在线视频| 在线视频国产一区| 草久视频在线观看| 亚洲午夜精品一区二区三区他趣| 日本成人免费在线观看| 久久午夜电影网| 无码国产69精品久久久久网站| 国产精品自拍三区| 99九九精品视频| 久久99日本精品| 天堂av在线网站| 美女视频一区免费观看| 亚洲 欧美 日韩 国产综合 在线| 亚洲夜间福利| 成年人视频大全| 欧美日韩亚洲三区| 日韩中文在线字幕| 888久久久| 男女爱爱视频网站| 一本精品一区二区三区| 一区二区三区四区视频在线| 日韩电影免费网址| 亚洲国产欧洲综合997久久| 欧美日韩国产高清电影| 日韩不卡av| 欧洲激情综合| 亚洲视频sss| 99久久婷婷国产综合精品电影√| 日本在线视频不卡| 日韩不卡一区| 黄色网址在线免费看| 午夜精品久久99蜜桃的功能介绍| 欧美三级午夜理伦三级老人| 国产综合激情| 僵尸世界大战2 在线播放| 欧美成人手机视频| 91在线你懂得| 伊人网在线视频观看| 久久久精品黄色| 美女100%露胸无遮挡| 国产精品久久久久久久裸模| 日韩成人短视频| 亚洲午夜免费电影| www五月天com| 欧美视频一二三区| 国产精品一区二区av白丝下载 | 亚洲日穴在线视频| 亚洲国产成人精品综合99| 亚洲综合一区二区三区| 五月天婷婷综合网| 在线观看网站黄不卡| 国产精品视频一区二区三区,| 精品久久久久久亚洲综合网| 天天干天天做天天操| 国产亚洲欧洲黄色| 18+视频在线观看| 4p变态网欧美系列| 亚洲图片小说区| 国产精品一区视频网站| 欧美日韩在线观看视频小说| 日本丰满少妇黄大片在线观看| 伊人久久综合| 制服丝袜综合网| 成人成人成人在线视频| 手机毛片在线观看| 亚洲一区二区三区四区中文字幕| 亚洲不卡在线视频| 欧美一区二区在线播放| 肉丝一区二区| 久久中文字幕一区| 中国字幕a在线看韩国电影| 成人天堂噜噜噜| 精品一区在线| 日韩亚洲欧美一区二区| 日本特黄久久久高潮| 中文字幕在线播放一区二区| 国产欧美一区二区精品性色超碰| 一级黄色录像视频| 欧美日韩高清影院| 亚洲人在线观看视频| 久久综合久久88| 深夜视频一区二区| 精品国产一区二区三区麻豆免费观看完整版| 日本大胆欧美| 亚洲乱码中文字幕久久孕妇黑人| 国产在线视频一区二区| a级在线免费观看| 亚洲成人午夜影院| 91久久精品国产91性色69| 亚洲精品永久免费| 国产精品69xx| 成人自拍性视频| 清纯唯美亚洲综合一区| 国产精品亚洲αv天堂无码| 国产精品一品视频| 日日操免费视频| 日本韩国精品在线| 亚洲 欧美 激情 小说 另类| 九九久久久久99精品| 少妇精品视频在线观看| 日韩不卡av| 日韩激情中文字幕| 精品无码人妻一区| 婷婷成人激情在线网| 亚洲黄色a级片| 久久伊人色综合| 国产不卡精品在线| 在线免费观看成人网| 麻豆成人免费电影| av手机在线播放| 在线免费不卡视频| 欧美色18zzzzxxxxx| 欧美亚洲在线播放| 欧美18xxxx| 怡红院av亚洲一区二区三区h| 丁香婷婷综合五月| 欧美日韩中文视频| 精品动漫一区二区三区在线观看| 青草在线视频| 国产精品二区二区三区| 精品69视频一区二区三区Q| 性猛交╳xxx乱大交| 亚洲一区二区三区四区五区黄| 不卡av中文字幕| 九色精品免费永久在线| 日本一区二区三区电影免费观看| 永久免费网站视频在线观看| 国产精品77777| 麻豆chinese极品少妇| 精品国产3级a| 蜜桃在线视频| 欧美精品二区三区四区免费看视频 | 亚洲系列在线观看| 日日摸夜夜添一区| 国产精品麻豆| 九九热只有这里有精品| av一区二区三区黑人| 伦av综合一区| 中文字幕亚洲专区| 日本精品在线播放| 久久久久久久久久久99| 久久久国际精品| 亚洲无码精品国产| 欧美国产日产韩国视频| 欧美日韩精品一区二区三区在线观看| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产亚洲成aⅴ人片在线观看| 亚洲一区二区人妻| 欧美黄色小视频| 亚洲三级网页| 亚洲一区二区在线视频观看| 一区二区三区在线高清| 日本aaa在线观看| 国产主播精品在线| 黄色成人在线网址| 蜜桃久久精品成人无码av| 91精品国产色综合久久ai换脸| heyzo高清在线| 台湾成人av| 国产成人午夜视频| 中文字幕xxxx| 欧美日韩成人在线播放| 国产成人精品三级高清久久91| 亚洲a级黄色片| 黑人巨大精品欧美一区二区一视频 | 精品一区二区三区四区五区| 久久久久久久久久久视频| 中文字幕亚洲在| 日韩精品一二| 亚洲专区国产精品| 久久天堂成人| 久久久精品一区二区涩爱| 亚洲视频axxx| 白白在线精品| 亚洲最大天堂网| 91极品视觉盛宴| av影片在线| 国产日韩欧美大片|