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

Resilience4j 深度揭秘:如何在 Spring Boot 中實現容錯機制

開發 架構
本文將詳細介紹如何在 Spring Boot 項目中整合 Resilience4j,使你的應用更具彈性和可靠性。

在現代微服務架構中,服務之間的調用可能會因網絡延遲、服務故障等原因導致失敗。為了解決這些問題,Resilience4j 提供了一套可靠的容錯機制。本文將詳細介紹如何在 Spring Boot 項目中整合 Resilience4j,使你的應用更具彈性和可靠性。

一、Resilience4j 簡介

什么是 Resilience4j

Resilience4j 是一個輕量級的容錯庫,專為 Java 8 及以上版本設計。它提供了一組強大的容錯機制,包括斷路器(Circuit Breaker)、限流器(Rate Limiter)、艙壁隔離(Bulkhead)、重試(Retry)和時間限制器(Time Limiter)。

主要特性

  • 斷路器(Circuit Breaker):防止一個服務的故障蔓延到整個系統。
  • 限流器(Rate Limiter):限制特定時間內的請求數量,防止過載。
  • 艙壁隔離(Bulkhead):隔離系統的不同部分,防止故障蔓延。
  • 重試(Retry):在請求失敗時自動重試。
  • 時間限制器(Time Limiter):為請求設置時間限制,防止長時間等待。

與 Hystrix 的對比

Resilience4j 旨在取代 Netflix Hystrix,提供更輕量和現代的解決方案。與 Hystrix 相比,Resilience4j 的主要優勢在于它的依賴更少、性能更好,并且完全支持 Java 8 以上的函數式編程特性。

二、環境準備

項目初始化

使用 Spring Initializr 創建一個新的 Spring Boot 項目,并添加以下依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>2.1.0</version>
</dependency>

三、配置 Resilience4j

基本配置

在 application.yml 文件中添加基本配置:

resilience4j:
  circuitbreaker:
    configs:
      default:
        registerHealthIndicator: true
        slidingWindowSize: 100
        minimumNumberOfCalls: 10
        failureRateThreshold: 50
        waitDurationInOpenState: 10000
        permittedNumberOfCallsInHalfOpenState: 3

配置項解釋:

  • registerHealthIndicator: 是否注冊 Circuit Breaker 的健康指標,默認為 false。設置為 true 可以通過 Actuator 端點監控 Circuit Breaker 的狀態。
  • slidingWindowSize: 滑動窗口的大小,用于計算失敗率。這里設置為 100,表示最近 100 個請求會被用來計算失敗率。
  • minimumNumberOfCalls: 在滑動窗口內,至少需要有這么多請求才能開始計算失敗率。這里設置為 10,表示至少需要 10 個請求后才會開始計算失敗率。
  • failureRateThreshold: 失敗率閾值,當失敗率超過這個值時,Circuit Breaker 會進入 OPEN 狀態。這里設置為 50,表示當失敗率超過 50% 時,Circuit Breaker 會打開。
  • waitDurationInOpenState: Circuit Breaker 處于 OPEN 狀態時的等待時間,單位毫秒。這里設置為 10000,表示 Circuit Breaker 打開后會等待 10 秒鐘。
  • permittedNumberOfCallsInHalfOpenState: Circuit Breaker 處于 HALF_OPEN 狀態時允許的請求數。這里設置為 3,表示 Circuit Breaker 半開狀態時允許 3 個請求通過。

這段配置定義了一個基本的 Circuit Breaker 行為,可以保護系統免受頻繁失敗的服務的影響。通過調整這些參數,可以根據具體應用場景來優化 Circuit Breaker 的行為。

注意: 這只是默認配置,可以在創建 Circuit Breaker 實例時覆蓋這些配置。

配置 Circuit Breaker

配置斷路器:

resilience4j:
  circuitbreaker:
    instances:
      backendA:
        registerHealthIndicator: true
        slidingWindowSize: 100
        minimumNumberOfCalls: 10
        failureRateThreshold: 50
        waitDurationInOpenState: 10000
        permittedNumberOfCallsInHalfOpenState: 3

不同于之前的默認配置,這里明確定義了一個名為 backendA 的 Circuit Breaker 實例,并為其指定了具體的配置參數。這意味著,這個配置只適用于名為 backendA 的 Circuit Breaker 實例,而其他 Circuit Breaker 實例將使用默認配置(如果存在)。

配置 Rate Limiter

配置限流器:

resilience4j:
  ratelimiter:
    instances:
      backendA:
        limitForPeriod: 10
        limitRefreshPeriod: 5000

配置項解釋:

  • limitForPeriod: 在限流周期內允許的最大請求數。這里設置為 10,表示在 5 秒內最多允許 10 個請求。
  • limitRefreshPeriod: 限流周期的持續時間,單位毫秒。這里設置為 5000,表示限流周期為 5 秒。

配置含義:

這段配置定義了一個名為 backendA 的 RateLimiter 實例,用于控制對 backendA 服務或資源的訪問速率。

(1)限流策略: Resilience4j 使用令牌桶算法實現限流。RateLimiter 會維護一個固定數量的令牌,每個令牌代表一個請求的許可。當請求到達時,RateLimiter 會嘗試獲取令牌。如果獲取成功,則允許請求繼續執行;如果獲取失敗,則請求會被拒絕或延遲處理。

(2) 限流配置: 本段配置中的 limitForPeriod 和 limitRefreshPeriod 參數定義了 RateLimiter 的限流策略。

  • limitForPeriod 規定了限流周期內允許的最大請求數。例如,本例中設置為 10,表示在 5 秒內最多允許 10 個請求。
  • limitRefreshPeriod 規定了限流周期的持續時間。例如,本例中設置為 5000,表示限流周期為 5 秒。這意味著,RateLimiter 會每隔 5 秒重新計算可用的令牌數。

限流效果:

假設 limitForPeriod 為 10,limitRefreshPeriod 為 5000。那么,在任意的 5 秒內,系統最多只會處理 10 個請求。如果在 5 秒內收到超過 10 個請求,則后面的請求會被拒絕或延遲處理。

配置 Bulkhead

配置艙壁隔離:

resilience4j:
  bulkhead:
    instances:
      backendA:
        maxConcurrentCalls: 25
        maxWaitDuration: 100

配置項解釋:

  • maxConcurrentCalls: 同時允許的最大并發調用數。這里設置為 25,表示 backendA 服務最多可以同時處理 25 個并發請求。
  • maxWaitDuration: 當并發請求超過 maxConcurrentCalls 限制時,新請求最長等待時間,單位毫秒。這里設置為 100,表示新請求最多等待 100 毫秒,如果仍然無法獲得處理資源,則會被拒絕或拋出異常。

配置含義:

這段配置定義了一個名為 backendA 的 Bulkhead 實例,用于控制對 backendA 服務或資源的并發訪問。

(1)隔離策略: Resilience4j 使用令牌桶算法實現對并發請求的隔離。Bulkhead 會維護一個固定數量的令牌,每個令牌代表一個處理資源的許可。當請求到達時,Bulkhead 會嘗試獲取令牌。如果獲取成功,則允許請求繼續執行;如果獲取失敗,則請求會被拒絕或延遲處理。

(2)并發控制: 本段配置中的 maxConcurrentCalls 和 maxWaitDuration 參數定義了 Bulkhead 的并發控制策略。

  • maxConcurrentCalls 規定了同時允許的最大并發調用數。例如,本例中設置為 25,表示 backendA 服務最多可以同時處理 25 個并發請求。
  • maxWaitDuration 規定了當并發請求超過 maxConcurrentCalls 限制時,新請求最長等待時間。例如,本例中設置為 100,表示新請求最多等待 100 毫秒,如果仍然無法獲得處理資源,則會被拒絕或拋出異常。

限流效果:

假設 maxConcurrentCalls 為 25,maxWaitDuration 為 100。那么,backendA 服務最多可以同時處理 25 個并發請求。如果在同一時刻收到超過 25 個請求,則后面的請求會嘗試等待 100 毫秒。如果在 100 毫秒內仍然無法獲得處理資源,則會被拒絕或拋出異常。

配置 Retry

配置重試:

resilience4j:
  retry:
    instances:
      backendA:
        maxAttempts: 3
        waitDuration: 500

配置項解釋:

  • maxAttempts: 最大重試次數,包括第一次調用在內。這里設置為 3,表示當 backendA 服務調用失敗時,最多會重試 2 次。
  • waitDuration: 重試間隔時間,單位毫秒。這里設置為 500,表示每次重試之前會等待 500 毫秒。

配置含義:

這段配置定義了一個名為 backendA 的 Retry 實例,用于對 backendA 服務或資源的調用進行重試操作。

重試策略: 當 backendA 服務調用失敗時,Retry 實例會根據配置的重試策略進行重試。

  • maxAttempts 規定了最大重試次數。例如,本例中設置為 3,表示當 backendA 服務調用失敗時,最多會重試 2 次。
  • waitDuration 規定了重試間隔時間。例如,本例中設置為 500,表示每次重試之前會等待 500 毫秒。

重試流程:

  • 當調用 backendA 服務發生異常時,Retry 實例會進行重試。
  • 重試之前,會等待 waitDuration 指定的時間。
  • 重試時,會再次調用 backendA 服務。
  • 如果重試成功,則返回結果并結束。
  • 如果重試 maxAttempts 次后仍然失敗,則拋出異常。

通過這種方式,你可以為不同的服務或資源創建 Retry 實例,并根據它們的具體需求進行配置,以提高服務的容錯性和可用性。

配置 Time Limiter

配置時間限制器:

resilience4j:
  timelimiter:
    instances:
      backendA:
        timeoutDuration: 1000

配置項解釋:

timeoutDuration: 操作的超時時間,單位毫秒。這里設置為 1000,表示 backendA 服務的調用必須在 1 秒內完成,否則會被視為超時。

配置含義:

這段配置定義了一個名為 backendA 的 TimeLimiter 實例,用于對 backendA 服務或資源的調用進行超時控制。

超時策略: 當 backendA 服務調用超過 timeoutDuration 指定的時間時,TimeLimiter 實例會認為其超時,并拋出 TimeoutException 異常。

超時效果:

假設 timeoutDuration 為 1000。那么,當調用 backendA 服務時,如果超過 1 秒仍然沒有完成,則會被 TimeLimiter 實例視為超時,并拋出 TimeoutException 異常。

四、、實現功能

實現 Circuit Breaker

在 backendA 服務中使用斷路器:

import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class BackendAService {

    private final RestTemplate restTemplate;

    public BackendAService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @CircuitBreaker(name = "backendA", fallbackMethod = "fallback")
    public String callExternalService() {
        return restTemplate.getForObject("http://external-service/api", String.class);
    }

    public String fallback(Exception e) {
        return "外部服務不可用";
    }
}

實現 Rate Limiter

在 backendA 服務中使用限流器:

import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
import org.springframework.stereotype.Service;

@Service
public class BackendAService {

    @RateLimiter(name = "backendA")
    public String callExternalService() {
        // 外部服務調用邏輯
        return "外部服務的響應";
    }
}

實現 Bulkhead

在 backendA 服務中使用艙壁隔離:

import io.github.resilience4j.bulkhead.annotation.Bulkhead;
import org.springframework.stereotype.Service;

@Service
public class BackendAService {

    @Bulkhead(name = "backendA")
    public String callExternalService() {
        // 外部服務調用邏輯
        return "外部服務的響應";
    }
}

實現 Retry

在 backendA 服務中使用重試:

import io.github.resilience4j.retry.annotation.Retry;
import org.springframework.stereotype.Service;

@Service
public class BackendAService {

    @Retry(name = "backendA")
    public String callExternalService() {
        // 外部服務調用邏輯
        return "外部服務的響應";
    }

實現 Time Limiter

在 backendA 服務中使用時間限制器:

import io.github.resilience4j.timelimiter.annotation.TimeLimiter;
import org.springframework.stereotype.Service;

import java.util.concurrent.CompletableFuture;

@Service
public class BackendAService {

    @TimeLimiter(name = "backendA")
    public CompletableFuture<String> callExternalService() {
        return CompletableFuture.supplyAsync(() -> {
            // 外部服務調用邏輯
            return "外部服務的響應";
        });
    }
}

五、高級主題

自定義配置

如何進行 Resilience4j 的自定義配置:

resilience4j:
  circuitbreaker:
    configs:
      custom:
        slidingWindowSize: 50
        minimumNumberOfCalls: 5

要使用自定義 Circuit Breaker 配置,您需要用 @CircuitBreaker(name = "custom") 注解你的方法。這將指定配置應用于方法的 Circuit Breaker 實例。

性能優化

優化 Resilience4j 在生產環境中的性能:

  • 調整配置參數以平衡性能和穩定性
  • 使用異步調用減少阻塞

問題排查

常見問題及其解決方案:

  • 問題:Circuit Breaker 不工作

解決方案:檢查配置是否正確,確保服務調用符合觸發條件。

六、結語

Resilience4j 提供了一套強大的工具,使你的 Spring Boot 應用更具彈性和可靠性。通過整合 Resilience4j,可以有效地應對各種服務故障和過載情況。隨著 Resilience4j 的不斷發展,我們可以期待更多功能和優化,使其在微服務架構中發揮更大的作用。

責任編輯:趙寧寧 來源: 源話編程
相關推薦

2022-11-16 17:16:41

spring限流

2024-10-06 08:35:44

2023-06-27 07:31:59

微服務容錯庫重試

2025-04-09 11:15:00

服務熔斷服務降分布式系統

2023-03-13 08:02:55

斷路器應用API

2022-04-27 08:55:01

Spring外部化配置

2025-03-26 03:00:00

2025-11-21 08:08:57

2025-03-11 08:20:58

2025-09-08 01:00:00

SpringRestClient架構

2025-02-13 07:45:26

APISpringHTTP

2025-04-01 08:08:29

2025-05-14 04:00:00

2022-03-07 07:33:24

Spring自定義機制線程池

2020-05-25 07:00:00

雙因素認證身份認證密碼

2021-06-15 07:33:13

Java函數式編程

2022-02-15 08:22:28

Neo4jSpring數據庫

2025-08-28 07:13:17

2024-12-03 08:00:00

2022-07-26 16:54:08

QuartzJava
點贊
收藏

51CTO技術棧公眾號

久久精品中文字幕电影| 亚洲激情图片一区| 国产精品1区2区在线观看| 亚洲黄色小说视频| а天堂中文最新一区二区三区| 亚洲六月丁香色婷婷综合久久 | av成人福利| 久久精品欧美日韩精品 | 日韩三级av高清片| 精品毛片三在线观看| 亚洲高清乱码| 亚洲国产精品国自产拍久久| 久久激情网站| 色综合视频网站| 欧美另类z0zx974| 视频二区欧美毛片免费观看| 欧美天天综合色影久久精品| 日韩第一页在线观看| 色一情一乱一乱一区91av| 秋霞成人午夜伦在线观看| 九九热精品视频| 精品无码人妻一区二区免费蜜桃| 69精品国产久热在线观看| 欧美午夜激情在线| 亚洲乱码日产精品bd在线观看| 久久久资源网| 成人精品gif动图一区| 国产精品亚洲美女av网站| 欧美日韩在线观看一区| 亚洲免费久久| 在线性视频日韩欧美| 国产天堂在线播放| 免费在线国产视频| 国产精品久久久久影院亚瑟| 国产在线一区二| 97在线视频人妻无码| 久久av在线| 色综合男人天堂| 无码人妻精品中文字幕| 久久av中文| 亚洲精品美女在线观看播放| 亚洲在线观看网站| av一区在线播放| 岛国av一区二区三区| 穿情趣内衣被c到高潮视频| 国内精品在线视频| 97国产一区二区| 成人资源视频网站免费| 99热这里精品| 国产米奇在线777精品观看| 国产精品第三页| 国产高清中文字幕| 在线综合视频| 欧美一区二区.| 日本中文字幕在线免费观看| 欧美~级网站不卡| 日日噜噜噜夜夜爽亚洲精品| 精品人妻一区二区三区四区| 综合国产视频| 亚洲欧美福利视频| 免费看黄色的视频| 蜜桃一区二区| 亚洲另类图片色| 玖玖爱在线观看| 亚洲品质自拍| 国产午夜精品一区二区三区 | 91久久久久久白丝白浆欲热蜜臀| 日韩欧美福利视频| 日本老熟妇毛茸茸| 精品成人免费一区二区在线播放| 在线视频你懂得一区| 一本色道无码道dvd在线观看| 国偷自产一区二区免费视频| 在线视频一区二区免费| 黄色三级视频在线| 日韩午夜电影免费看| 欧美丰满一区二区免费视频| 992kp免费看片| 亚洲五码在线| 亚洲第一福利在线观看| 91玉足脚交白嫩脚丫| 亚洲免费成人av在线| 在线观看精品自拍私拍| 日韩一卡二卡在线观看| 欧美激情aⅴ一区二区三区| 欧美激情极品视频| 国产无遮挡呻吟娇喘视频| 日本中文字幕一区| 91沈先生在线观看| 日本高清视频免费看| 久久这里只有精品视频网| 日韩成人av电影在线| 黄色网页在线免费看| 亚洲一区影音先锋| 免费观看成人网| 久久视频免费| 日韩av在线网页| 中文字幕一区二区三区人妻| 手机亚洲手机国产手机日韩| 欧美美最猛性xxxxxx| 国产 日韩 欧美 在线| 青青国产91久久久久久| 91丨九色丨国产| 你懂的视频在线播放| 中文字幕一区免费在线观看 | 麻豆传媒视频在线观看免费| 亚洲一区二区三区四区五区中文| 日本va中文字幕| 亚洲成人黄色| 一区二区在线视频播放| 精品少妇久久久| 日韩成人一级片| 国产高清在线精品一区二区三区| 国产小视频在线观看| 夜夜嗨av一区二区三区网页| 99热成人精品热久久66| 精品一区二区三区中文字幕| 亚洲人成电影在线播放| 久久久久97国产| 青青草国产精品亚洲专区无| 国产一区二区三区高清| 欧美成年黄网站色视频| 色哟哟精品一区| 国产人成视频在线观看| 天堂美国久久| 国产精品福利片| 少妇无码一区二区三区| 亚洲精品一二三| 久久久精品麻豆| 麻豆精品99| 久久国产精品偷| 中文字幕第三页| 久久综合精品国产一区二区三区 | 成人亚洲综合天堂| 欧美日韩国产一区二区| 手机在线播放av| 大色综合视频网站在线播放| 3344国产精品免费看| 午夜精品久久久久久久99老熟妇| 国产精品福利av| 91蝌蚪视频在线观看| 欧美影院天天5g天天爽| 久久久久九九九九| 国产免费久久久| 国产精品美女久久久久久久 | 日韩免费电影一区| 国产精品视频一区二区在线观看| 日韩精品一二三| 欧美日韩在线一二三| 国产乱码午夜在线视频| 精品国产sm最大网站| 久久99久久久| 懂色av中文一区二区三区| 97精品国产97久久久久久粉红| 欧美xnxx| 亚洲最大中文字幕| 日本一区二区三区久久| 国产精品视频yy9299一区| 免费观看成人网| 欧美午夜精彩| 国产精品一区二区三区久久| 最近高清中文在线字幕在线观看| 欧美性猛交xxxx黑人交| 刘亦菲国产毛片bd| 国产一区二区三区在线观看免费 | 天天色综合久久| 午夜精品久久久久久久| 丰满少妇一区二区三区| 久久精品人人| 色综合视频二区偷拍在线| 国产情侣一区二区三区| 久久好看免费视频| 国产女主播福利| 亚洲综合丝袜美腿| 97人妻精品一区二区三区免费| 亚洲精品字幕| 欧美欧美一区二区| yy6080久久伦理一区二区| y97精品国产97久久久久久| 99国产精品欲| 亚洲国产成人av网| 亚洲 小说 欧美 激情 另类| 蜜臀久久99精品久久久画质超高清| 亚洲午夜精品福利| 亚洲三区欧美一区国产二区| 97国产精品免费视频| 韩日在线视频| 欧美一区二区久久久| 亚洲天堂日韩av| 国产日产精品一区| 日本人dh亚洲人ⅹxx| 亚洲精品综合| 亚洲一区二区三区精品视频| 亚洲一区二区免费在线观看| 2019中文字幕在线| 精品176二区| 亚洲精品国产综合久久| 中文字幕av影视| 亚洲国产精品一区二区尤物区| 受虐m奴xxx在线观看| 韩国三级电影一区二区| 久色视频在线播放| 日本a口亚洲| 国产自产精品| 精品176极品一区| 高清欧美性猛交xxxx| 91在线高清| 亚洲国产一区自拍| 国产孕妇孕交大片孕| 精品电影在线观看| 最新av电影网站| 久久毛片高清国产| wwwww在线观看| 捆绑调教一区二区三区| 国产精品久久中文字幕| 天天射天天综合网| 欧美日韩高清在线一区| 欧美午夜网站| 国产精品视频永久免费播放| 第一福利在线视频| 欧美成年人视频| 在线免费看av| 亚洲片在线资源| 少妇一级淫片免费看| 日韩一区二区三区视频在线| 瑟瑟视频在线免费观看| 欧美视频裸体精品| 国产第一页在线播放| 亚洲视频免费看| 国产又黄又粗又猛又爽的| 91麻豆精品视频| 李丽珍裸体午夜理伦片| 国产乱码精品1区2区3区| 午夜免费福利在线| 丝袜诱惑亚洲看片| 欧美国产亚洲一区| 亚洲美女啪啪| 免费人成在线观看视频播放| 一二三区不卡| 中文字幕一区二区三区乱码| 精品国产一区二区三区av片| 日本精品二区| 国内亚洲精品| 日本欧洲国产一区二区| 自拍欧美一区| 欧美日韩国产综合视频在线| 日韩激情毛片| 鲁丝一区二区三区免费| 日韩欧美四区| 九色91在线视频| 欧美网色网址| 精品在线一区| 亚洲免费观看高清完整版在线观| 久久婷婷人人澡人人喊人人爽| 国产乱论精品| 久久精品国产第一区二区三区最新章节 | av之家在线观看| 91久久亚洲| 少妇无码av无码专区在线观看| 国产欧美丝祙| 日韩毛片在线免费看| 久久蜜桃精品| 天天色综合天天色| 久久精品免费看| 三日本三级少妇三级99| 国产剧情一区二区三区| gogo亚洲国模私拍人体| 成人一级黄色片| 五月天激情小说| 久久综合色一综合色88| 人成免费在线视频| 亚洲精品国产一区二区精华液| 成年人av电影| 香蕉影视欧美成人| 91视频在线视频| 欧美挠脚心视频网站| jlzzjlzzjlzz亚洲人| 亚洲成人a**站| 国产在线观看网站| 久久久www成人免费精品张筱雨| 羞羞视频在线免费国产| 亚洲**2019国产| 国产欧美在线观看免费| 97se国产在线视频| 丝袜久久网站| 亚洲一区综合| 亚洲欧洲一区二区天堂久久| 男女啪啪网站视频| 国产精品系列在线观看| 精品国产人妻一区二区三区| 国产欧美视频一区二区三区| 性欧美videos| 日韩欧美一区二区三区| 一级做a爱片性色毛片| 欧美tk—视频vk| 国产一级在线观看| 欧美成年人视频网站| 男人最爱成人网| 成人精品一区二区三区电影黑人| 加勒比视频一区| 五月天综合网| 亚洲黄色毛片| 超碰成人在线播放| 成人黄色在线看| 一本在线免费视频| 午夜精品国产更新| 国产片在线播放| 亚洲乱码av中文一区二区| 污污视频在线| 国产日韩av在线| 要久久爱电视剧全集完整观看 | 午夜婷婷国产麻豆精品| 在线观看免费黄色小视频| 亚洲国产成人在线视频| 欧美精品videos另类| 91av在线视频观看| 欧美成人精品一级| 亚洲国产精品www| 国产欧美丝祙| 在线观看成人动漫| 椎名由奈av一区二区三区| 亚洲 欧美 日韩 在线| 精品久久国产老人久久综合| 69久久精品| 日av在线播放中文不卡| 国产成人高清精品免费5388| 正在播放久久| 日韩**一区毛片| 伊人网在线视频观看| 婷婷六月综合网| 精品国产九九九| 久久久成人精品视频| 国产精品亲子伦av一区二区三区| 蜜桃999成人看片在线观看| 亚洲大胆av| 亚洲国产精品第一页| 亚洲欧美另类图片小说| 在线视频欧美亚洲| 在线视频欧美性高潮| 亚洲电影有码| 欧美日韩国产综合在线| 米奇777在线欧美播放| 99re久久精品国产| 午夜一区二区三区在线观看| 狠狠人妻久久久久久综合麻豆| 欧美成人精品在线播放| 国产精品一区免费在线| 在线视频不卡一区二区| 久久精品免费看| 日本高清不卡免费| 制服.丝袜.亚洲.中文.综合| 免费看a在线观看| 91久久久亚洲精品| 亚洲高清资源在线观看| 日本高清免费在线视频| 一区二区三区在线观看视频 | 亚洲成av人乱码色午夜| 毛片网站在线看| 国产三区二区一区久久| 99国产精品久久久久久久 | 欧美激情一区二区三区免费观看| 国产一区二区三区丝袜| 超碰这里只有精品| 亚洲国产一区二区精品视频 | 亚洲最好看的视频| 黄色一级一级片| 欧美国产精品一区二区三区| 在线播放一级片| 欧美成人精品h版在线观看| 亚洲图色一区二区三区| 自拍日韩亚洲一区在线| 99精品视频在线观看| 日韩欧美在线观看免费| 色噜噜狠狠狠综合曰曰曰88av| 四虎国产精品免费久久| 亚洲一区 在线播放| 丁香啪啪综合成人亚洲小说 | 欧美亚洲日本国产| 成人免费网站在线观看视频| 成人午夜电影免费在线观看| 国产精品美女| 激情无码人妻又粗又大| 精品少妇一区二区三区在线视频| 日本不卡免费高清视频在线| 色姑娘综合av| 国产美女娇喘av呻吟久久| 日韩精品国产一区二区| 一个人www欧美| 欧美a级大片在线| 欧在线一二三四区| 亚洲美女区一区| 日本天堂影院在线视频| 成人免费高清完整版在线观看| 精品动漫3d一区二区三区免费版 | 国产绿帽一区二区三区| 国语自产在线不卡| 成人羞羞视频播放网站| 在线看黄色的网站| 欧美日韩极品在线观看一区| 国产夫妻在线播放|