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

Spring Cloud 中斷路器 Circuit Breaker 的應用

開發 前端
SpringCloud Circuit breaker(斷路器)提供了跨不同斷路器實現的抽象。它提供了在應用程序中使用的一致API,允許開發人員選擇最適合應用程序需要的斷路器實現。

[[439483]]

環境:Springboot2.3.12.RELEASE +

cloud-netflix-hystrix2.2.10.RELEASE

簡介

SpringCloud Circuit breaker(斷路器)提供了跨不同斷路器實現的抽象。它提供了在應用程序中使用的一致API,允許開發人員選擇最適合應用程序需要的斷路器實現。

支持的斷路器類型:

  • Netfix Hystrix
  • Resilience4J
  • Sentinel
  • Spring Retry

核心概念

要在代碼中創建斷路器(circuit breaker),可以使用斷路器工廠API。當您在類路徑中包含Spring Cloud Circuit Breaker starter時,將自動創建一個實現此API的bean。下面給出了使用此API的一個非常簡單的示例:

  1. @Service 
  2. public static class DemoService { 
  3.   private RestTemplate rest; 
  4.   private CircuitBreakerFactory cbFactory; 
  5.  
  6.   public DemoService(RestTemplate rest, CircuitBreakerFactory cbFactory) { 
  7.     this.rest = rest; 
  8.     this.cbFactory = cbFactory; 
  9.   } 
  10.  
  11.   public String slow() { 
  12.     // 通過默認的CircuitBreakerFactory工廠創建一個指定id(名稱)的斷路器 
  13.     // run方法是實際執行你的業務方法,第二個參數throwable 是當發生異常或者是執行超時 
  14.     // 執行的回退(降級)處理 
  15.     return cbFactory.create("slow").run(() -> rest.getForObject("/slow", String.class), throwable -> "fallback"); 
  16.   } 

項目配置

通過引入下面不同依賴來確定使用具體的那個斷路器:

  • Hystrix - org.springframework.cloud:spring-cloud-starter-netflix-hystrix
  • Resilience4J - org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j
  • Reactive Resilience4J - org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j
  • Spring Retry - org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry
  • Sentinal - org.springframework.cloud:spring-cloud-starter-circuitbreaker-sentinal

以上5種斷路器是不同的實現方式,根據需要引入即可。

示例

這里以Hystrix為例來使用

引入依賴

  1. <dependency> 
  2.   <groupId>org.springframework.cloud</groupId> 
  3.   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> 
  4.   <version>2.2.10.RELEASE</version> 
  5. </dependency> 

定義具有熔斷功能的服務

  1. @Service 
  2. public class DemoService { 
  3.  
  4.   private RestTemplate rest; 
  5.   // 注入系統默認的實現 
  6.   private CircuitBreakerFactory cbFactory; 
  7.  
  8.   public DemoService(RestTemplate rest, CircuitBreakerFactory cbFactory) { 
  9.     this.rest = rest; 
  10.     this.cbFactory = cbFactory; 
  11.   } 
  12.  
  13.   public String slow() { 
  14.     // 使用系統默認的實現創建斷路器進行業務的處理 
  15.     return cbFactory.create("slow").run(() -> rest.getForObject("http://localhost:8080/demos/slow", String.class), throwable -> "fallback"); 
  16.   } 
  17.  
  18.   public String slow2() { 
  19.     // 使用自定義的斷路器工廠進行業務的處理 
  20.     return cbf().create("demo-slow").run(() -> rest.getForObject("http://localhost:8080/demos/slow", String.class), throwable -> "fallback"); 
  21.   } 
  22.  
  23.   // 可以將這個定義為Bean來覆蓋系統默認的實現,在系統默認的實現上有條件限定 
  24.   private CircuitBreakerFactory<HystrixCommand.Setter, HystrixCircuitBreakerFactory.HystrixConfigBuilder> cbf() { 
  25.     HystrixCircuitBreakerFactory cbf = new HystrixCircuitBreakerFactory() ; 
  26.     // 配置線程池 
  27.     HystrixThreadPoolProperties.Setter threadPoolProperties = HystrixThreadPoolProperties.Setter() ; 
  28.     threadPoolProperties.withCoreSize(5) 
  29.       .withKeepAliveTimeMinutes(5) 
  30.       .withMaxQueueSize(Integer.MAX_VALUE) 
  31.       .withQueueSizeRejectionThreshold(1000) ; 
  32.     // 配置默認的執行行為屬性 
  33.     HystrixCommandProperties.Setter commandProperties = HystrixCommandProperties.Setter() ; 
  34.     commandProperties.withCircuitBreakerEnabled(true
  35.     // 當請求超過了3s那么斷路器就會工作進行回退(降級處理),執行上面run方法中的第二個參數 
  36.       .withExecutionTimeoutInMilliseconds(3000) 
  37.       .withRequestCacheEnabled(true
  38.       // 隔離策略有兩種THREAD,SEMAPHORE 
  39.       // THREAD: 避免線程被阻塞 
  40.       // SEMAPHORE: 適合高并發限流處理;因為線程池的方式一般不會創建過多的線程 
  41.       // 線程是有限的,在高并發情況下是沒法滿足響應處理的。 
  42.       .withExecutionIsolationStrategy(ExecutionIsolationStrategy.THREAD); 
  43.          
  44.     // 將其加入到集合中,為不同的服務創建不同的配置 
  45.     cbf.configure(builder -> { 
  46.       builder.commandProperties(commandProperties).groupName("demo") ; 
  47.     }, "demo-slow"); 
  48.          
  49.     // 當默認的id不存在時使用這默認的配置 
  50.     cbf.configureDefault(id -> { 
  51.       HystrixCommand.Setter setter = HystrixCommand.Setter 
  52.         .withGroupKey(HystrixCommandGroupKey.Factory.asKey("demo")) // 服務分組,大的模塊 
  53.         .andCommandKey(HystrixCommandKey.Factory.asKey("demo-slow")) // 服務標識(具體服務分組中的某一個子的服務),子模塊 
  54.         .andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("demo-pools")) // 線程池名稱 
  55.         .andThreadPoolPropertiesDefaults(threadPoolProperties) // 線程池相關配置 
  56.         .andCommandPropertiesDefaults(commandProperties) ; // 執行時相關屬性配置  
  57.       return setter ; 
  58.     }); 
  59.     return cbf ; 
  60.   } 
  61.  

Controller接口

  1. @RestController 
  2. @RequestMapping("/demos"
  3. public class DemoController { 
  4.      
  5.   @Resource 
  6.   private DemoService demoService ; 
  7.      
  8.   @GetMapping("/index"
  9.   public Object index() { 
  10.     return demoService.slow2() ; 
  11.   } 
  12.      
  13.   @GetMapping("/slow"
  14.   public Object slow() { 
  15.     try { 
  16.       TimeUnit.SECONDS.sleep(5) ; 
  17.     } catch (InterruptedException e) { 
  18.       e.printStackTrace(); 
  19.     } 
  20.     return "slow" ; 
  21.   } 
  22.      

原理

CircuitBreakerFactory#create方法創建了CircuitBreaker實例。

根據當前的CLASSPATH我們使用的是Hystrix,那么這里使用的工廠就是:

HystrixCircuitBreakerFactory類

  1. public class HystrixCircuitBreakerFactory extends CircuitBreakerFactory<HystrixCommand.Setter, HystrixCircuitBreakerFactory.HystrixConfigBuilder> { 

泛型參數:Setter就是用來配置Hystrix相關配置信息的(這里主要用來CommandKey與Setter進行綁定),HystrixConfigBuilder用來構建 HystrixCommand.Setter對象。

當執行HystrixCircuitBreakerFactory#configure方法時:

  1. public abstract class AbstractCircuitBreakerFactory<CONF, CONFB extends ConfigBuilder<CONF>> { 
  2.   private final ConcurrentHashMap<String, CONF> configurations = new ConcurrentHashMap<>(); 
  3.   public void configure(Consumer<CONFB> consumer, String... ids) { 
  4.     for (String id : ids) { 
  5.       // 構建一個Builder對象 
  6.       CONFB builder = configBuilder(id); 
  7.       // 這里通過builder(HystrixConfigBuilder)對象來應用Consumer中編寫的配置信息 
  8.       consumer.accept(builder); 
  9.       // 構建HystrixCommand.Setter 對象 
  10.       CONF conf = builder.build(); 
  11.       // 最后將通過id 與 Setter對象綁定key=value存入Map集合中 
  12.       getConfigurations().put(id, conf); 
  13.     } 
  14.   } 
  15.   // 該方法在子類HystrixCircuitBreakerFactory中實現 
  16.   protected abstract CONFB configBuilder(String id); 

斷路器具體的子類實現

HystrixCircuitBreakerFactory

  1. // 子類繼承的父類中的泛型:第一個泛型參數:需要構建什么樣的一個配置,第二個泛型參數:通過誰來構建第一個泛型參數配置 
  2. public class HystrixCircuitBreakerFactory extends CircuitBreakerFactory<HystrixCommand.Setter, HystrixCircuitBreakerFactory.HystrixConfigBuilder> { 
  3.   public HystrixConfigBuilder configBuilder(String id) { 
  4.     return new HystrixConfigBuilder(id); 
  5.   } 
  6.   public static class HystrixConfigBuilder extends AbstractHystrixConfigBuilder<HystrixCommand.Setter> { 
  7.     public HystrixConfigBuilder(String id) { 
  8.       super(id); 
  9.     } 
  10.     // 從這里也看出來最終Builder就是用來構建Setter對象用 
  11.     @Override 
  12.     public HystrixCommand.Setter build() { 
  13.       return HystrixCommand.Setter.withGroupKey(getGroupKey()) 
  14.         .andCommandKey(getCommandKey()) 
  15.         .andCommandPropertiesDefaults(getCommandPropertiesSetter()); 
  16.     } 
  17.   } 

斷路器工廠有了,接下來就是通過工廠創建具體的斷路器對象了。

通過上面的代碼執行cbf().create("demo-slow")方法時執行了什么?

  1. public class HystrixCircuitBreakerFactory extends CircuitBreakerFactory<HystrixCommand.Setter, HystrixCircuitBreakerFactory.HystrixConfigBuilder> { 
  2.   private Function<String, HystrixCommand.Setter> defaultConfiguration = id -> HystrixCommand.Setter 
  3.     .withGroupKey(HystrixCommandGroupKey.Factory.asKey(getClass().getSimpleName())) 
  4.     .andCommandKey(HystrixCommandKey.Factory.asKey(id)); 
  5.   public HystrixCircuitBreaker create(String id) { 
  6.     // 通過上面分析最終所有的Hystrix的Setter會與id綁定存入一個Map中 
  7.     // 這里computeIfAbsent方法先從集合中通過id獲取,如果獲取不到則將第二個參數存入集合中返回 
  8.     HystrixCommand.Setter setter = getConfigurations().computeIfAbsent(id, defaultConfiguration); 
  9.     return new HystrixCircuitBreaker(setter); 
  10.   } 

 上面創建的是HystrixCircuitBreaker斷路器,當執行run方法時:

  1. public class HystrixCircuitBreaker implements CircuitBreaker { 
  2.   private HystrixCommand.Setter setter; 
  3.   public HystrixCircuitBreaker(HystrixCommand.Setter setter) { 
  4.     this.setter = setter; 
  5.   } 
  6.   @Override 
  7.   public <T> T run(Supplier<T> toRun, Function<Throwable, T> fallback) { 
  8.     // 最終執行的就是Hystrix的核心 HystrixCommand對象 
  9.     HystrixCommand<T> command = new HystrixCommand<T>(setter) { 
  10.       @Override 
  11.       protected T run() throws Exception { 
  12.         return toRun.get(); 
  13.       } 
  14.       @Override 
  15.       protected T getFallback() { 
  16.         return fallback.apply(getExecutionException()); 
  17.       } 
  18.     }; 
  19.     return command.execute(); 
  20.   } 

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-12-15 08:15:26

Spring Circuit BreSpring Clou

2022-10-08 11:39:56

斷路器Golang項目

2022-09-15 15:25:47

spring-微服務

2023-03-13 08:02:55

斷路器應用API

2024-10-06 08:35:44

2023-11-06 08:25:33

項目遠程接口

2017-09-20 09:46:38

Spring BootSpring Clou內存

2024-04-03 08:58:48

軟件架構隔板

2021-01-14 07:54:19

Spring Clou應用路由

2020-07-03 08:00:11

Spring BootSpring Clou流程

2013-05-23 13:31:38

路由器路由器故障路由器故障排除

2021-11-16 11:45:00

SpringSpring ClouJava

2017-12-01 08:54:18

SpringCloudHystrix
點贊
收藏

51CTO技術棧公眾號

婷婷色在线视频| 欧美国产在线看| 97精品资源在线观看| 亚洲免费观看视频| 噜噜噜噜噜久久久久久91| 国产又粗又猛又爽又| 亚洲成人免费| 亚洲开心激情网| 亚洲无在线观看| 日韩av影片| 亚洲人亚洲人成电影网站色| 久久爱av电影| 国产视频一区二区三| 亚欧美中日韩视频| 欧美精品在线第一页| 国产手机在线观看| 国产欧美三级电影| 欧美久久久久久蜜桃| 无码aⅴ精品一区二区三区浪潮| 黄色在线视频网站| 久久久www免费人成精品| 99在线观看视频网站| 色婷婷久久综合中文久久蜜桃av| 在线日韩电影| 欧美大胆a视频| 国产成人在线网址| 国产一区二区亚洲| 日韩黄色高清视频| a级片在线观看视频| 天天综合91| 在线观看视频91| 日本三级免费网站| 久草在线视频网站| 亚洲人成网站精品片在线观看| 日韩av在线电影观看| 天堂av手机版| 国产xxx精品视频大全| 成人福利在线视频| 一区二区视频网| 日韩高清欧美激情| 国产精品大陆在线观看| 国产99久久久| 性久久久久久| 国产va免费精品高清在线| 国产一级做a爱片久久毛片a| 一区二区亚洲| 久久免费视频在线| 久久99久久98精品免观看软件 | 激情综合一区二区三区| 国产精品视频在线观看| 免费精品一区二区| 日本 国产 欧美色综合| 国产精品热视频| 中文字幕av免费观看| 视频在线观看一区二区三区| 日韩免费在线看| 日本黄色中文字幕| 日本成人中文字幕| 国产女精品视频网站免费| 中文av免费观看| 麻豆91在线看| 成人美女av在线直播| 国产精品人人妻人人爽| 国产精品香蕉一区二区三区| 国产成人精品日本亚洲11 | 成人免费视频caoporn| 99久久99| 婷婷五月综合久久中文字幕| 91亚洲精品久久久蜜桃网站| 蜜桃久久精品乱码一区二区 | 国产精品传媒入口麻豆| 一区二区日本| 女子免费在线观看视频www| 亚洲高清在线视频| 精品一卡二卡三卡| 国产亚洲欧美日韩精品一区二区三区 | 91九色综合| 欧美日韩不卡视频| 亚洲熟女乱综合一区二区| 国产精品极品在线观看| 日韩精品视频免费在线观看| 免费看裸体网站| 91精品久久久久久久蜜月| 久久久天堂国产精品女人| 在线观看免费av片| 久久99国产乱子伦精品免费| 丁香五月网久久综合| 蜜芽tv福利在线视频| 亚洲欧洲另类国产综合| 可以在线看的av网站| 97精品国产综合久久久动漫日韩| 日韩美女一区二区三区四区| 国产av自拍一区| 在线电影一区二区| 日本欧美爱爱爱| www.久久成人| 国产午夜精品福利| 欧美一级欧美一级| 欧美在线se| 日韩精品视频免费专区在线播放 | 国产日韩精品在线播放| 韩国av免费在线观看| 日本一区二区在线不卡| 男人天堂av片| 色综合视频一区二区三区日韩| 亚洲国产精品久久久久秋霞蜜臀| 自拍偷拍第9页| 免费精品视频| 国产福利久久精品| 日韩免费网站| 色噜噜偷拍精品综合在线| 99精品国产高清一区二区| 视频污在线观看| 中文字幕一区二区三区不卡 | 日韩一级视频免费观看在线| 真实乱视频国产免费观看| 综合在线一区| 国产精品主播视频| 四虎精品在线| 亚洲国产一区二区视频| 最新天堂中文在线| 国产精品嫩模av在线| 韩国日本不卡在线| a在线观看视频| 国产精品私人影院| 亚洲 欧美 日韩 国产综合 在线| **国产精品| 在线视频日韩精品| av毛片在线免费观看| 不卡的av网站| 久久综合久久网| 欧美不卡在线观看| www高清在线视频日韩欧美| 天天射天天干天天| 久久精品在这里| 农村妇女精品一二区| 久久动漫网址| 78色国产精品| 天天操天天干天天舔| 亚洲午夜国产一区99re久久| 免费黄色在线播放| 国内激情久久| 国产99视频精品免费视频36| 伊人222成人综合网| 91麻豆精品国产91久久久久久| 我不卡一区二区| 爽好多水快深点欧美视频| 欧洲国产精品| 一二区成人影院电影网| 亚洲天堂免费观看| 亚洲欧美日韩一区二区三区四区| 国产性色一区二区| 亚洲欧美在线精品| 99久久www免费| 成人网页在线免费观看| 自由的xxxx在线视频| 欧美电视剧在线看免费| 日本一区二区网站| 91看片淫黄大片一级在线观看| 欧美网站免费观看| 免费一区二区| 国产日韩精品在线观看| 成a人片在线观看| 日韩一级大片在线| 日本一级片免费看| 久久天堂av综合合色蜜桃网| 日本999视频| 99久久精品费精品国产风间由美| 国产欧美亚洲精品| 午夜dj在线观看高清视频完整版| 精品国产乱码久久久久久久久 | 在线国产视频一区| 蜜桃精品视频在线| 亚洲黄色网址在线观看| 北条麻妃在线一区二区免费播放 | 在线观看国产成人av片| 亚洲综合精品视频| 亚洲一区二区欧美| 久久久久久久久久久久| 激情久久五月天| 免费一级特黄毛片| 欧美xxxx中国| 国产伦精品一区二区三区视频孕妇| 松下纱荣子在线观看| 中文字幕国产日韩| 欧美 日韩 国产 精品| 色先锋久久av资源部| 天天做夜夜爱爱爱| xfplay精品久久| 亚洲成人av免费观看| 久久aⅴ乱码一区二区三区| 一区二区三区国产福利| 丁香综合av| 国产精品自在线| a天堂资源在线| 中文字幕亚洲欧美一区二区三区 | 欧美黑人经典片免费观看 | 日韩有码在线播放| 乱精品一区字幕二区| 欧美乱妇23p| 天天做天天爱夜夜爽| 亚洲久本草在线中文字幕| 人妻少妇精品视频一区二区三区| 国精产品一区一区三区mba视频| 久久久久久久久久久99| 亚洲国产老妈| 日韩国产欧美一区| 欧美美女黄色| 99re视频在线播放| 成人免费一区| 青青草精品毛片| 免费看电影在线| 久久九九免费视频| yjizz视频网站在线播放| 精品久久人人做人人爱| 国产又粗又猛又黄又爽| 色综合天天综合狠狠| 免费观看一级视频| 亚洲色图视频免费播放| 免费观看a级片| 久久久亚洲高清| 国产二级一片内射视频播放| 国产在线麻豆精品观看| 久久精品影视大全| 免费亚洲一区| 国产特级淫片高清视频| 国内自拍一区| 毛片av在线播放| 中文字幕一区二区av | 五月天综合视频| 波多野结衣中文字幕一区| 亚洲男人天堂2021| 六月丁香综合在线视频| 好男人www社区| 视频在线观看一区二区三区| 久久久久久久久久久久久国产精品 | 伊人久久大香伊蕉在人线观看热v| 日韩免费观看在线观看| 黄色在线观看www| 97在线免费视频| 成年人视频免费在线播放| 欧美国产乱视频| 丁香花高清在线观看完整版| 欧美成人一区在线| 色屁屁www国产馆在线观看| 欧美成人免费在线观看| 日本在线视频www鲁啊鲁| 欧美精品videosex极品1| 国产一线二线在线观看| 午夜精品久久久久久99热| 国产h片在线观看| 91超碰caoporn97人人| 一本大道色婷婷在线| 国产精品福利无圣光在线一区| 激情开心成人网| 国产精品视频中文字幕91| 亚洲一区av| 国产精品久久精品国产| 极品一区美女高清| 快播亚洲色图| 成人一区不卡| 神马午夜伦理影院| 黄色综合网站| caopor在线视频| 久久99精品国产.久久久久| av地址在线观看| 波多野结衣精品在线| 国产福利短视频| 中文字幕制服丝袜一区二区三区| 2014亚洲天堂| 亚洲国产精品一区二区www在线| 黑人一级大毛片| 欧美无人高清视频在线观看| 国产女人爽到高潮a毛片| 亚洲成av人片在线观看香蕉| 日本午夜在线| 北条麻妃久久精品| 888av在线视频| 国产精品久久久久久久久免费| 国产精久久一区二区| 久久综合狠狠综合久久综青草| 青草国产精品| 黄色一级片在线看| 免费观看在线综合色| 人妻互换一二三区激情视频| 国产农村妇女精品| 欧美成人手机视频| 欧美性xxxxx极品少妇| 精品人妻一区二区三区四区不卡| 亚洲美女激情视频| 国产福利在线播放麻豆| 欧美在线观看视频| 伊人久久一区| 日本一区二区三区四区高清视频| 亚洲女同中文字幕| 少妇性饥渴无码a区免费| 九九在线精品视频| 97伦伦午夜电影理伦片| 亚洲美女视频在线| 在线观看你懂的网站| 精品盗摄一区二区三区| 91在线免费看| 136fldh精品导航福利| 深夜激情久久| 亚洲一区精品视频| 久久久久久9| 亚洲精品无码一区二区| 国产精品麻豆网站| 国产又大又黄又粗| 精品国产乱码久久久久久闺蜜| 色综合久久影院| 日韩av免费在线| 青青一区二区| 日韩美女爱爱视频| 看片的网站亚洲| 干b视频在线观看| 欧美日韩国产限制| 亚洲卡一卡二卡三| 久久综合久久八八| 亚洲综合视频| 亚洲精品在线视频观看| 久久视频一区| 国产麻豆天美果冻无码视频| 亚洲国产日韩精品| 99精品免费观看| 久久精品美女视频网站| jizz亚洲女人高潮大叫| 日本视频一区在线观看| 亚洲国产一区二区精品专区| 亚洲熟女乱综合一区二区| 亚洲欧洲综合另类在线| 亚洲综合精品在线| 自拍视频国产精品| 成人在线视频观看| 亚洲a∨一区二区三区| 日韩和欧美一区二区三区| 91精彩刺激对白露脸偷拍| 欧美性极品xxxx做受| 午夜激情在线视频| 2019中文字幕免费视频| 青青一区二区| 男女视频一区二区三区| 国产日韩欧美a| 亚洲一区二区激情| www.日韩av.com| 国产精品久久久久久av公交车| 夜夜爽99久久国产综合精品女不卡 | 日本激情综合网| 国产精品亲子伦对白| 中文字幕日日夜夜| 精品国产一区二区三区久久| 四虎精品永久免费| 青青视频免费在线观看| 高清国产午夜精品久久久久久| 久久久国产精华液| 亚洲第一男人av| 在线天堂新版最新版在线8| 美国av一区二区三区| 日本午夜一区二区| 激情无码人妻又粗又大| 日韩你懂的在线播放| av福利在线导航| 欧美人与物videos另类| 日韩av二区在线播放| 人人干在线观看| 欧美不卡一区二区| 三级在线观看视频| 亚洲v日韩v欧美v综合| 国产毛片精品视频| 亚洲 欧美 视频| 在线观看日韩www视频免费| 九九99久久精品在免费线bt| 久久亚洲a v| 91片在线免费观看| 亚洲一区二区色| 久久久久久久影院| 国产亚洲精品美女久久久久久久久久| 日韩不卡一二三| 亚洲成人一区在线| 国产精品麻豆一区二区三区| 成人在线免费观看视视频| 亚洲高清自拍| 天堂资源在线视频| 精品国产一区久久| 88xx成人免费观看视频库 | 经典三级一区二区| 亚洲天堂第一区| 久久综合久久99| 国产日韩欧美视频在线观看| 91av视频在线播放| 性欧美69xoxoxoxo| 日韩一级视频在线观看| 91麻豆精品国产91久久久资源速度| 丰满诱人av在线播放| 亚洲精品一区国产精品| www.视频一区| 国产99对白在线播放| 日韩免费观看高清| 亚洲精品国产日韩| 欧美成人777|