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

快速入門 | 輕松掌握Hystrix實現資源隔離保護系統穩定

開發 前端
當有大量的請求調用時我們的所有線程都會被阻塞T的時間。本身Tomcat線程池的線程數量是有限的,這就會造成很多的客戶端只能等待,尤其是越是后來的請求等待的時間會越長,同時由于這一個接口把所有的tomcat線程全部占用完,導致了其他的所有服務不可用全部處于等待狀態,從而會拖垮整個tomcat,而這種現象我們稱誒雪崩效應。

先看下如下圖,兩個服務之間的調用 A服務調用另外一個B服務。

圖片圖片

在這個圖當中有個接口A需要調用另外一個服務的接口B。這里看似沒有什么問題。

例如,本身A服務接口執行邏輯需要5ms執行完后再調用B服務接口的,調用B接口執行完成需要4s,比如下面的下定單扣庫存的流程:

圖片圖片

這里整個接口調用鏈執行完成需要實際T=4s+5ms;

當有大量的請求調用時我們的所有線程都會被阻塞T的時間。本身Tomcat線程池的線程數量是有限的,這就會造成很多的客戶端只能等待,尤其是越是后來的請求等待的時間會越長,同時由于這一個接口把所有的tomcat線程全部占用完,導致了其他的所有服務不可用全部處于等待狀態,從而會拖垮整個tomcat,而這種現象我們稱誒雪崩效應。

對于服務之間的調用我們也應該能夠設置一個超時時間,不能讓其一直等待下去。當超過了給定的時間后我們也能夠給予用戶一個響應,通過這種方式來避免這種級聯的故障。如上所述,當整個A服務不可用的時候 這時候的B服務也就不可用了,這種現象被稱為雪崩效應。

雪崩效應常見場景

  • 硬件故障:如服務器宕機,機房斷電,光纖被挖斷等。
  • 流量激增:如異常流量,重試加大流量等。
  • 緩存穿透:一般發生在應用重啟,所有緩存失效時,以及短時間內大量緩存失效時。大量的緩存不命中,使請求直擊后端服務,造成服務提供者超負荷運行,引起服務不可用。
  • 程序BUG:如程序邏輯導致內存泄漏,JVM長時間FullGC等。
  • 同步等待:服務間采用同步調用模式,同步等待造成的資源耗盡。

雪崩效應應對策略

針對造成雪崩效應的不同場景,可以使用不同的應對策略,沒有一種通用所有場景的策略,參考如下:

  • 硬件故障:多機房容災、異地多活等。
  • 流量激增:服務自動擴容、流量控制(限流、關閉重試)等。
  • 緩存穿透:緩存預加載、緩存異步加載等。
  • 程序BUG:修改程序bug、及時釋放資源等。
  • 同步等待:資源隔離、MQ解耦、不可用服務調用快速失敗等。資源隔離通常指不同服務調用采用不同的線程池;不可用服務調用快速失敗一般通過熔斷器模式結合超時機制實現。

在程序中我們能通過Hystrix來實現資源的隔離,保護我們的服務,不至于導致整個tomcat服務不可用。

Hystrix是Netflix開源的一款針對分布式系統的延遲和容錯庫,目的是用來隔離分布式服務故障。它提供線程和信號量隔離,以減少不同服務之間資源競爭帶來的相互影響;提供優雅降級機制;提供熔斷機制使得服務可以快速失敗,而不是一直阻塞等待服務響應,并能從中快速恢復。Hystrix通過這些機制來阻止級聯失敗并保證系統彈性、可用。通過下圖來理解:

圖片圖片

也就是在調用B服務接口的時候我們放到另外的一個線程中去執行,防止出現上面說的問題。

接下來我們來通過程序代碼來看看如何使用hystrix。

這里我們以調用訂單服務為例

pom.xml加入依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

方式1:

通過繼承HystrixCommand

public class OrdersCommand extends HystrixCommand<Orders> {


  private RestTemplate restTemplate ;
  private Long id ;


  public OrdersCommand(RestTemplate restTemplate, Long id) {
    super(buildSetter()) ;
    this.restTemplate = restTemplate ;
    this.id = id ;
  }
  private static Setter buildSetter() {
    com.netflix.hystrix.HystrixThreadPoolProperties.Setter threadPoolProp = com.netflix.hystrix.HystrixThreadPoolProperties.Setter() ;
    threadPoolProp.withCoreSize(5)
      .withKeepAliveTimeMinutes(5)
      .withMaxQueueSize(Integer.MAX_VALUE)
      .withQueueSizeRejectionThreshold(1000) ;


    com.netflix.hystrix.HystrixCommandProperties.Setter commandProp = com.netflix.hystrix.HystrixCommandProperties.Setter() ;
    commandProp.withCircuitBreakerEnabled(true)
      .withExecutionTimeoutInMilliseconds(6000)
      .withRequestCacheEnabled(true)
      .withExecutionIsolationStrategy(ExecutionIsolationStrategy.THREAD);


    return Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("orders"))
           .andCommandKey(HystrixCommandKey.Factory.asKey("getOrder"))
           .andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("order-pool"))
           .andThreadPoolPropertiesDefaults(threadPoolProp)
           .andCommandPropertiesDefaults(commandProp) ;
  }


  @Override
  protected Orders run() throws Exception {
    return restTemplate.getForObject("http://localhost:9810/orders/queryOrder/{1}", Orders.class, id);
  }


  @Override
  protected Orders getFallback() {
    return new Orders() ;
  }
  @Override
  protected String getCacheKey() {
    return "order-" + this.id ;
  }


}

這里我們實現了父類的getFallback方法

該方法為當服務調用失敗或者超時會被調用。

這里通過buildSetter方法來構建hystrix相關的配置。說明:

threadPoolProp.withCoreSize(5)
      .withKeepAliveTimeMinutes(5)
      .withMaxQueueSize(Integer.MAX_VALUE)
      .withQueueSizeRejectionThreshold(1000) ;

以上是對線程池的配置。

其它設置:

RequestVolumeThreshold

HystrixCommandProperties.Setter().withCircuitBreakerRequestVolumeThreshold(int)表示在滑動窗口中,至少有多少個請求,才可能觸發斷路。Hystrix 經過斷路器的流量超過了一定的閾值,才有可能觸發斷路。比如說,要求在 10s 內經過斷路器的流量必須達到 20 個,而實際經過斷路器的流量才 10 個,那么根本不會去判斷要不要斷路。

ErrorThresholdPercentage

HystrixCommandProperties.Setter().withCircuitBreakerErrorThresholdPercentage(int)表示異常比例達到多少,才會觸發斷路,默認值是 50(%)。如果斷路器統計到的異常調用的占比超過了一定的閾值,比如說在 10s 內,經過斷路器的流量達到了 30 個,同時其中異常訪問的數量也達到了一定的比例,比如 60% 的請求都是異常(報錯 / 超時 / reject),就會開啟斷路。

SleepWindowInMilliseconds

HystrixCommandProperties.Setter().withCircuitBreakerSleepWindowInMilliseconds(int)斷路開啟,也就是由 close 轉換到 open 狀態(close -> open)。那么之后在 SleepWindowInMilliseconds 時間內,所有經過該斷路器的請求全部都會被斷路,不調用后端服務,直接走 fallback 降級機制。而在該參數時間過后,斷路器會變為 half-open 半開閉狀態,嘗試讓一條請求經過斷路器,看能不能正常調用。如果調用成功了,那么就自動恢復,斷路器轉為 close 狀態。

EnabledHystrixCommandProperties.Setter().withCircuitBreakerEnabled(boolean)控制是否允許斷路器工作,包括跟蹤依賴服務調用的健康狀況,以及對異常情況過多時是否允許觸發斷路。默認值是 true。

ForceOpen

HystrixCommandProperties.Setter().withCircuitBreakerForceOpen(boolean)如果設置為 true 的話,直接強迫打開斷路器,相當于是手動斷路了,手動降級,默認值是 false。

ForceClosedHystrixCommandProperties.Setter().withCircuitBreakerForceClosed(boolean)

如果設置為 true,直接強迫關閉斷路器,相當于手動停止斷路了,手動升級,默認值是 false。

參考:

圖片圖片

com.netflix.hystrix.HystrixCommandProperties.Setter commandProp = com.netflix.hystrix.HystrixCommandProperties.Setter() ;
    commandProp.withCircuitBreakerEnabled(true)
      .withExecutionTimeoutInMilliseconds(6000)
      .withRequestCacheEnabled(true)
      .withExecutionIsolationStrategy(ExecutionIsolationStrategy.THREAD);

以上是對命令屬性的配置。

withCircuitBreakerEnabled:控制是否允許斷路器工作,包括跟蹤依賴服務調用的健康狀況,以及對異常情況過多時是否允許觸發斷路。默認值是 true。

withExecutionTimeoutInMilliseconds:執行超時時間的設置。如果一個 command 運行時間超過了設定的時長,那么就被認為是 timeout,然后 Hystrix command 標識為 timeout,同時執行 fallback 降級邏輯。

withExecutionIsolationStrategy:執行隔離的策略,這里設置為線程。還可以設置為基于信號量的

ExecutionIsolationStrategy.SEMAPHORE:一般如果并發量比較大的情況下我們用信號量,性能要好。如果并發量大你還用線程池,那么你該創建多少的線程呢?而過多的線程帶來了更多線程的切換而影響性能。

return Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("orders"))
   .andCommandKey(HystrixCommandKey.Factory.asKey("getOrder"))
   .andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("order-pool"))
   .andThreadPoolPropertiesDefaults(threadPoolProp)
   .andCommandPropertiesDefaults(commandProp) ;

withGroupKey:服務分組;比如這里調用訂單系統就是一個服務分組。模塊;

andCommandKey:服務標識;比如這里訂單系統有一個獲取訂單信息服務。子模塊;

andThreadPoolKey:線程池名稱;

andThreadPoolPropertiesDefaults:線程池配置;

andCommandPropertiesDefaults:命令屬性配置;

示例:

@GetMapping("/custom/{id}")
public Object custom(@PathVariable Long id) {
  HystrixRequestContext ctx = HystrixRequestContext.initializeContext() ;
  try {
    OrdersCommand command = new OrdersCommand(restTemplate, id) ;
    System.out.println(Thread.currentThread().getName() + ": " + System.currentTimeMillis()) ;
    Orders res = command.execute() ;
  } finally {
    ctx.shutdown() ;
  }
  return null ;
}

注意:HystrixRequestContext ctx =HystrixRequestContext.initializeContext() ;這行代碼必須調用。

方式2:

通過注解的方式。

@Service
public class RemoteHystrixService {
  @Resource
  private RestTemplate restTemplate ;
  /**
   *  <p>
   *    groupKey: 服務分組;比如這里調用訂單系統就是一個服務分組。模塊
   *    commandKey: 服務標識;比如這里訂單系統有一個獲取訂單信息服務。子模塊
   *    threadPoolKey: 線程池名稱;
   *    threadPoolProperties:線程池配置
   *  </p>
   * @author 爺爺
   * @param id
   * @return Orders
   */
  @HystrixCommand(fallbackMethod = "defaultOrder", 
      groupKey = "orders", 
      commandKey = "getOrder",
      threadPoolKey = "order-pool",
      threadPoolProperties = {
          @HystrixProperty(name = "coreSize", value = "10"),
          @HystrixProperty(name = "keepAliveTimeMinutes", value = "5"),
          @HystrixProperty(name = "maxQueueSize", value = "1000000"),
          @HystrixProperty(name = "queueSizeRejectionThreshold", value = "1000")
      },
      commandProperties = {
          @HystrixProperty(name = "execution.isolation.strategy", value = "THREAD"),
          @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "6000")
      }
    )
  public Orders getOrder(Long id) {
    System.out.println(Thread.currentThread() + ", start") ;
    Orders res = restTemplate.getForObject("http://localhost:9810/orders/queryOrder/{1}", Orders.class, id);
    System.out.println(Thread.currentThread() + ", end") ;
    return res ;
  }


  public Orders defaultOrder(Long id) {
    return new Orders() ;
  }


}

這里具體注解屬性的說明與方式1中 一一對應。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2020-01-10 11:18:17

Hystrix架構系統

2017-04-03 21:52:30

隔離線程池分布式

2017-07-04 17:35:46

微服務架構Spring Clou

2024-04-16 00:00:00

Spring微服務架構

2011-04-14 10:18:20

數據遷移

2024-02-27 08:22:56

2013-02-18 08:36:51

powershell

2009-12-17 14:36:57

Ruby on Rai

2010-01-13 17:47:59

VB.NET拖放

2023-06-29 07:55:52

Quartz.Net開源

2020-10-09 07:56:52

Linux

2010-01-07 13:53:43

Linux入門

2023-10-20 08:01:08

2010-08-05 16:08:12

輕松掌握DB2 9.5

2010-01-18 19:36:52

VB.NET調整控件

2024-02-28 10:20:08

2024-06-12 00:00:01

Java函數式接口

2023-08-31 08:34:07

Users對象序列化

2009-11-02 11:37:37

2025-08-12 00:22:00

Spring監控Hystrix
點贊
收藏

51CTO技術棧公眾號

欧美日韩一区二区三区四区五区| 国产视频一区二区在线观看| 九色成人免费视频| 少妇一级淫片免费放播放| 不卡一二三区| 亚洲欧洲成人精品av97| 国产伦精品一区二区三区在线 | 国产三级在线免费| 国产乱对白刺激视频不卡| 国产91精品久久久久久| 久久久久久久麻豆| 日韩母乳在线| 欧美一区二区三区爱爱| 国产又黄又猛视频| 老司机免费在线视频| 久久众筹精品私拍模特| 999在线免费观看视频| 精品免费囯产一区二区三区| 欧美国产日本| 最新69国产成人精品视频免费| 国产精品亚洲一区二区无码| 欧美美女福利视频| 欧美日韩一区二区三区| 亚洲色婷婷久久精品av蜜桃| 东热在线免费视频| 99热在这里有精品免费| 91原创国产| 在线视频 中文字幕| 亚洲一卡久久| 久久久久久九九九| 亚洲色图27p| 精品美女久久久| 日韩高清免费观看| 国产日韩视频一区| 日韩三级成人| 欧美日本在线视频| 五月天婷婷激情视频| 欧亚av在线| 亚洲午夜羞羞片| 超碰97免费观看| 爱久久·www| 久久久久国产精品厨房| 久久av一区二区三区亚洲| www.麻豆av| 国内精品免费**视频| 国产精品视频xxx| 国产在线一级片| 久久亚洲精选| 欧美与黑人午夜性猛交久久久| 久久精品波多野结衣| 在线精品国产| 久久在精品线影院精品国产| 国产性生活大片| 亚洲最新av| 欧美大奶子在线| 一区二区在线观看免费视频| 中文字幕免费一区二区三区| 欧美成人午夜免费视在线看片| 91高清免费观看| 亚洲女同中文字幕| 欧美美女18p| 精品无码免费视频| 亚洲黄色三级| 欧美又大又硬又粗bbbbb| 手机在线看片1024| 日韩精品五月天| 国产日韩av高清| av在线资源观看| 国产成人日日夜夜| 国产亚洲一区在线播放| 亚洲色欧美另类| 国产欧美视频一区二区| 欧美日韩视频免费在线观看| 中文国产字幕在线观看| 偷窥少妇高潮呻吟av久久免费| 欧美变态另类刺激| 三级成人黄色影院| 欧美日韩亚洲不卡| 特级黄色片视频| jizz18欧美18| 美女久久网站| 你懂的国产精品| 中文字幕免费国产精品| 日韩三级久久久| 欧美日韩精品| 欧美一级视频一区二区| 国产一级片一区二区| 国内不卡的二区三区中文字幕| 不卡一卡2卡3卡4卡精品在| 欧美一区二区公司| 久久精品一二三| 日本xxxxx18| 国产免费拔擦拔擦8x在线播放| 色婷婷综合久久久| 欧美日韩久久婷婷| 久久99国产精品久久99大师| 在线视频欧美性高潮| 疯狂试爱三2浴室激情视频| 日韩视频不卡| 国产精品专区第二| 日本波多野结衣在线| 国产欧美日韩在线| 国产aaa免费视频| 国产国产一区| 亚洲国产欧美自拍| 老熟妇高潮一区二区三区| 国产亚洲福利| 亚洲综合最新在线| 国产高清在线观看| 亚洲国产中文字幕| 亚洲天堂网2018| 亚洲精品进入| 欧美精品www| 伊人网视频在线| 91麻豆.com| 成人午夜免费在线视频| 欧美爱爱视频| 亚洲欧洲午夜一线一品| 国产精品111| 国产在线一区二区| 色综合视频二区偷拍在线| 9765激情中文在线| 日韩欧美一卡二卡| 人成免费在线视频| 香蕉成人久久| 国产精品久久久久久免费观看| 九色porny在线| 欧美性猛片xxxx免费看久爱| 毛茸茸多毛bbb毛多视频| 欧美国产先锋| 91精品免费视频| 69视频在线| 欧美色精品天天在线观看视频| 99久久免费看精品国产一区| 欧美涩涩视频| 亚洲最大福利网站| 中文在线观看免费| 日韩视频一区二区在线观看| www欧美com| 国产麻豆视频一区| 欧美日韩亚洲国产成人| 91精品一久久香蕉国产线看观看| 在线视频欧美日韩精品| 这里只有精品国产| 中文欧美字幕免费| 黄色手机在线视频| 日韩在线观看一区| 国产精品永久免费| 日本在线视频观看| 在线不卡免费欧美| 一区二区国产精品精华液| 韩国一区二区视频| 亚洲免费视频播放| 久久伊人精品| 欧美黄色三级网站| 欧美 日韩 中文字幕| 亚洲综合色自拍一区| 成人做爰69片免费| 亚洲激情专区| 麻豆av一区二区三区久久| 麻豆视频在线看| 亚洲图中文字幕| 中文在线资源天堂| 国产精品美女www爽爽爽| 亚洲天堂2018av| 欧美有码视频| 国产视频一区二区三区四区| 中文字幕乱码中文乱码51精品| 精品亚洲一区二区三区在线播放| 中文字幕在线观看视频免费| 综合久久给合久久狠狠狠97色 | 日韩乱码人妻无码中文字幕| av在线这里只有精品| 日韩av资源在线| 成人精品影院| 成人毛片网站| 26uuu亚洲电影| 中文字幕av一区二区| 国产男女无套免费网站| 午夜精品福利一区二区三区av| 在线免费观看日韩av| 精品制服美女久久| 妞干网在线观看视频| 欧美精品一区二区久久| 97超级在线观看免费高清完整版电视剧| 国产91足控脚交在线观看| 亚洲色图综合久久| www.97超碰| 欧美网站在线观看| 久久国产美女视频| 91免费在线播放| 国产精欧美一区二区三区白种人| 亚洲国产专区校园欧美| 亚洲欧洲一区二区福利| 国产精品xxxav免费视频| 国产精品视频资源| 91制片在线观看| 最近2019中文字幕在线高清| 熟妇人妻系列aⅴ无码专区友真希| 色老汉一区二区三区| 久青草免费视频| 国产精品久久久久久久蜜臀 | 秋霞蜜臀av久久电影网免费| 国产日产久久高清欧美一区| 亚洲美女炮图| 欧美黑人性猛交| 永久免费av在线| 国产视频精品免费播放| www.国产免费| 欧美日韩在线播放一区| 特级西西444www大精品视频免费看 | 97超级碰碰| 日韩电影免费观看高清完整版在线观看| 91tv亚洲精品香蕉国产一区7ujn| av免费看在线| 久久精品人人做人人爽| 黄色网址在线播放| 亚洲第一视频网| 午夜精品久久久久久久99老熟妇| 欧美中文字幕一区二区三区亚洲| 久久久国产高清| 亚洲一区二区三区激情| 老熟妇高潮一区二区三区| 亚洲国产精品黑人久久久| free性中国hd国语露脸| 粉嫩蜜臀av国产精品网站| 亚洲无在线观看| 老司机一区二区| 国产免费999| 老妇喷水一区二区三区| 97超碰在线人人| 亚洲高清二区| 国产精品久久久久久久乖乖| 欧美高清不卡| 成人短视频在线观看免费| 天天综合国产| 精品国产无码在线| 91精品国产91久久久久久黑人| 视频一区免费观看| 欧美精品一二| 亚洲一区二区精品在线| 日韩夫妻性生活xx| 偷拍视频一区二区| 成人aaaa| 亚洲精品在线免费| 97偷自拍亚洲综合二区| 中文字幕中文字幕在线中心一区 | 日韩精品视频一区二区三区| 91精品在线观看视频| 国产aⅴ精品一区二区四区| 91在线精品播放| 亚洲精品观看| 国产乱人伦精品一区二区| 狠狠一区二区三区| 国产综合第一页| 天天久久夜夜| 日本日本精品二区免费| 日本一区二区在线看| 伊人av成人| 我不卡伦不卡影院| 欧美一级爱爱视频| 日韩午夜免费| 国产三级三级三级看三级| 久久精品国产77777蜜臀| 亚洲黄色片免费看| www.激情成人| 国产真实乱人偷精品人妻| 亚洲欧洲日产国码二区| 免费在线观看国产精品| 欧美日韩另类视频| www.久久久久久久| 欧美猛男gaygay网站| www.成人精品| 国产视频久久久久| 天天在线视频色| 欧美大片在线看免费观看| 三妻四妾的电影电视剧在线观看| 日韩av电影免费观看高清| 日韩伦理一区二区| 激情视频一区二区| 超碰成人久久| www.射射射| 蜜臀国产一区二区三区在线播放| 男人操女人下面视频| 91麻豆福利精品推荐| 在线看的片片片免费| 黑人狂躁日本妞一区二区三区| 国产精品嫩草影院桃色| 亚洲电影av在线| 中文日本在线观看| 久久久影视精品| 成人精品国产亚洲| 懂色中文一区二区三区在线视频| 精品视频亚洲| 九九热只有这里有精品| 人禽交欧美网站| 久久精品女同亚洲女同13| 中文字幕乱码日本亚洲一区二区| 国产精久久久久久| 欧美片在线播放| 四虎影视在线播放| 精品视频9999| 久久爱.com| 欧美xxxx黑人又粗又长密月| 欧美在线亚洲综合一区| 天天色综合天天色| wwwwxxxxx欧美| 久久香蕉精品视频| 欧美日本国产视频| 国产69精品久久app免费版| 久久久影视精品| 日韩有吗在线观看| 亚洲欧洲三级| 日本午夜精品视频在线观看| yy1111111| 亚洲精品国产一区二区精华液 | 久草视频免费播放| 欧美二区乱c少妇| 超碰国产在线| 日韩av手机在线观看| 久久a爱视频| 国产美女永久无遮挡| 国精产品一区一区三区mba视频| 免费污网站在线观看| 岛国av一区二区| 天天综合网在线| 欧美精品videosex极品1| 日韩免费成人| 无码日本精品xxxxxxxxx| 国产一区二区三区四| 一区二区国产精品精华液| 欧美色倩网站大全免费| 9色在线视频网站| 国产精品久久久久久久7电影| 羞羞色国产精品网站| 国产69精品久久久久久久| 不卡的av中国片| 国产在线视频第一页| 欧美v日韩v国产v| 婷婷丁香在线| 国产精品果冻传媒潘| 欧美午夜不卡| 国产日韩视频一区| 精品国产成人在线| 色猫av在线| 日韩女优人人人人射在线视频| 影视先锋久久| 欧美亚洲日本在线观看| 国产拍揄自揄精品视频麻豆| 在线观看国产区| 日韩在线观看精品| 综合久久伊人| 久久这里只有精品8| 国产91精品免费| 精品91久久久| 亚洲免费视频在线观看| 欧美理论影院| 亚洲精品成人久久久998| 久久成人av少妇免费| 99热精品免费| 欧美精品一区二区三区一线天视频| 99爱在线视频| 欧美精品一区在线发布| 蜜桃一区二区三区四区| 日韩av手机在线免费观看| 日韩午夜激情电影| 国产理论在线| 亚洲精品中文字幕乱码三区不卡| 狠狠v欧美v日韩v亚洲ⅴ| 劲爆欧美第一页| 日韩电影网在线| 97精品国产99久久久久久免费| 这里只有精品66| 成人黄页毛片网站| 成年人晚上看的视频| 久久精品国产亚洲精品| 超碰97久久国产精品牛牛| 欧美极品欧美精品欧美图片| 中文字幕乱码久久午夜不卡| 午夜精品久久久久久久爽| …久久精品99久久香蕉国产| 成人中文视频| 亚洲色偷偷色噜噜狠狠99网| 91国产丝袜在线播放| av网址在线| 欧美不卡在线一区二区三区| 国产精品一区二区免费在线观看| 中文一区二区在线观看| 后进极品白嫩翘臀在线视频| 国产精品扒开腿爽爽爽视频| 亚洲人成免费网站| 最近中文字幕无免费| 欧美日韩美女一区二区| 爱啪视频在线观看视频免费| 亚洲精品一区二区三| av电影天堂一区二区在线观看| 中文av免费观看| 97精品免费视频| 婷婷色综合网| 中文幕无线码中文字蜜桃|