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

Spring Cloud 中斷路器 Circuit Breaker的應用

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

[[440448]]

環境: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-09 08:57:46

Spring ClouCircuit Bre斷路器

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技術棧公眾號

日韩av片电影专区| 欧美日韩在线精品一区二区三区激情| 亚洲综合中文字幕在线| 久草网视频在线观看| 国产精品毛片视频| 色婷婷精品久久二区二区蜜臂av| 亚洲欧洲一区二区| 国产小视频一区| 日韩综合一区二区| 久久成人亚洲精品| 免费成人深夜夜行p站| 老司机精品视频网| 亚欧色一区w666天堂| 翔田千里亚洲一二三区| 亚洲av无码乱码国产精品久久| 亚洲一区欧美二区| 日韩视频在线免费| 三级电影在线看| 欧美一级大片在线视频| 欧美xxxx视频| 国产精品丝袜xxxxxxx| 中文字幕av一区| www.四虎精品| 四虎国产精品永久在线国在线| 性久久久久久久久久久久| 亚洲国产一区二区三区在线| 亚洲精品中文字幕成人片| 免费视频一区二区| 91国内精品久久| 欧美成人一区二区三区高清| 狠狠做深爱婷婷综合一区| 日韩精品一区二| 国产精品精品一区二区三区午夜版| 天天色影综合网| 精品中文一区| 亚洲国产日韩欧美在线99| aaa一级黄色片| 欧美色999| 精品国产福利在线| 国产精品国产三级国产专区51| 又爽又大又黄a级毛片在线视频| 成人av在线资源网| 7777奇米亚洲综合久久| 一区二区三区黄| 日本美女一区二区三区| 国产69久久精品成人| 久久久久久久久久久久久久免费看 | 狠狠人妻久久久久久综合麻豆| 美女视频黄频大全不卡视频在线播放| 日本成人免费在线| 日韩免费视频一区二区视频在线观看| 亚洲激情av| 久久久最新网址| 一区二区在线观看免费视频| 女人色偷偷aa久久天堂| 久久久黄色av| 日本黄色片免费观看| 91成人国产| 欧美日韩国产二区| 久草资源在线视频| www 日韩| 麻豆一区二区| 亚洲国产精品999| 催眠调教后宫乱淫校园| jizz18欧美18| 亚洲国产欧美一区| 无遮挡aaaaa大片免费看| 日日狠狠久久偷偷综合色| 亚洲精品国精品久久99热| 伊人久久一区二区三区| 日韩黄色网络| 亚洲毛片一区二区| аⅴ天堂中文在线网| 日韩一区二区在线| 久久综合久久八八| 青青草在线观看视频| 亚洲国产一区二区精品专区| 2024亚洲男人天堂| 精品一区二区无码| 4438全国亚洲精品观看视频| 精品少妇一区二区三区在线视频 | 青娱乐在线视频免费观看| 欧美视频在线观看| 97超级碰碰人国产在线观看| 天堂中文在线网| 美女视频黄频大全不卡视频在线播放| 国产欧美日韩中文字幕| 99产精品成人啪免费网站| 岛国精品在线观看| 女同一区二区| 欧美精品电影| 亚洲国产aⅴ成人精品无吗| 免费一级特黄特色毛片久久看| 在线手机中文字幕| 欧美日韩国产高清一区| 少妇愉情理伦片bd| 正在播放日韩精品| 在线观看视频欧美| 人妻巨大乳一二三区| 欧洲亚洲视频| 久久久成人av| 最新中文字幕一区| 黄色资源网久久资源365| 成人国产1314www色视频| 色视频在线观看免费| 国产精品第一| 国产精品福利一区| 妞干网在线视频观看| 91在线成人| 亚洲成人av在线| 欧美美女性生活视频| 日韩视频在线一区二区三区| 91精品国产综合久久久久久蜜臀 | 日韩精品久久一区二区| 欧美成人ⅴideosxxxxx| 日韩午夜精品视频| 国产精品久久久久久久av| 影院欧美亚洲| 成人乱人伦精品视频在线观看| 少妇性bbb搡bbb爽爽爽欧美| 亚洲欧美偷拍另类a∨色屁股| av观看免费在线| 亚洲国产视频二区| 日韩在线小视频| 成人毛片在线播放| 岛国精品在线播放| 亚洲黄色网址在线观看| 51一区二区三区| 亚洲欧美精品伊人久久| 日本在线观看视频网站| 国产黄色精品网站| a级网站在线观看| 黄色日韩网站| 中文欧美日本在线资源| 麻豆成人免费视频| 99精品视频一区| 女人被男人躁得好爽免费视频| 亚洲国产精选| 日韩视频免费在线| 乱子伦一区二区三区| 99国产精品久久久久久久久久久| 国产欧美123| 国产电影一区二区| 久久久999精品视频| 又色又爽又黄无遮挡的免费视频| 国产亚洲人成网站| 黄色a级片免费| 国产成人1区| 国产精品69av| 成人性生交大片免费看午夜| 一本大道综合伊人精品热热| 素人fc2av清纯18岁| 国产欧美高清| 成人教育av在线| 亚洲淫片在线视频| а√天堂8资源在线官网| 免费av一区| 美女撒尿一区二区三区| 中文字幕乱码人妻无码久久| 久久久国产精华| 国产 porn| 欧美日韩在线观看视频小说| 奇米影视亚洲狠狠色| 五十路在线视频| 午夜私人影院久久久久| 97香蕉碰碰人妻国产欧美| 精品1区2区3区4区| 国产成人精品一区二区三区福利| 国产精品国产三级国产普通话对白| 久久久综合网站| 成年人免费在线播放| 精品国产一区二区三区四区| 国产精品69精品一区二区三区| 男女av在线| 欧美主播一区二区三区| 亚洲天堂最新地址| 国产精品正在播放| 国产奶头好大揉着好爽视频| 999精品嫩草久久久久久99| 久久精品视频亚洲| 超碰在线观看av| 欧美日韩一区二区精品| xfplay5566色资源网站| 亚洲一区自拍| 亚洲国产日韩综合一区| bl视频在线免费观看| 国产视频欧美视频| 亚洲精品一区二区二区| 亚洲欧洲国产专区| 国产亚洲精品成人a| 美女久久一区| 亚洲午夜久久久影院伊人| 少妇精品视频在线观看| 色综合天天综合网国产成人网| 免费看av毛片| 欧美日韩一区二区三区四区五区| 三上悠亚在线观看视频| 国产美女在线精品| 欧美 国产 综合| 超碰成人久久| 国产无套精品一区二区| 国产精品字幕| 欧美成人午夜剧场免费观看| 五月婷婷六月色| 在线一区二区观看| 国产极品在线播放| 国产 日韩 欧美 精品| 自拍偷自拍亚洲精品播放| 国产伦精品一区二区三区妓女下载| 国产精品毛片在线看| 亚洲欧洲日本国产| 女仆av观看一区| 国产精品毛片a∨一区二区三区|国| 看黄网站在线| 日韩精品中文字幕视频在线| 91福利免费视频| 精品成人av一区| 三级黄色在线观看| 99re成人在线| 中文字幕视频观看| 美女在线观看视频一区二区| bt天堂新版中文在线地址| 国产99亚洲| 亚洲综合大片69999| 欧美日韩亚洲国产| 欧美精品福利视频| 蜜桃av在线免费观看| 国产一区二区三区三区在线观看| 精品免费久久久| 欧美性色欧美a在线播放| 国产一二三四在线| 一区二区三区四区高清精品免费观看 | 欧美在线亚洲在线| 国产素人视频在线观看| 亚洲香蕉伊综合在人在线视看| 动漫av一区二区三区| 91精品国产福利| 综合激情网五月| 亚洲午夜日本在线观看| 亚洲怡红院在线观看| 久久久久久99久久久精品网站| 日韩成人av一区二区| 日本wwwxxxx| 夜夜精品视频一区二区| аⅴ天堂中文在线网| 欧美国产一区视频在线观看| 成人免费av片| 99久久久精品| 亚洲最大视频网| 国产成人精品在线看| 91精产国品一二三产区别沈先生| 蜜臀av一区二区三区| 日韩av在线综合| 亚洲视频二区| 欧美日韩大尺度| 久久国产免费| 777米奇影视第四色| 精品成人国产| 免费看一级大黄情大片| 亚洲裸体俱乐部裸体舞表演av| 特大黑人娇小亚洲女mp4| 午夜激情久久| 黄色一级片国产| 久久综合电影| 伊人久久99| 91精品国产成人观看| 日韩妆和欧美的一区二区| 沈樵精品国产成av片| 日本一区视频在线播放| 国产探花一区二区| 日韩免费电影一区二区| 国产韩国精品一区二区三区| 亚洲砖区区免费| 亚洲精品久久| www.日本在线视频| 久久国产66| 99视频在线视频| 久久精品99久久久| 亚洲精品乱码久久久久久动漫| 国产成人精品三级| 无码人妻精品一区二区三区99不卡| 久草在线视频资源| 日韩高清av一区二区三区| 免费在线视频一级不卡| 国产午夜精品免费一区二区三区| 在线看免费av| 美女久久久久久久| 日韩影院在线| 国产精品久久久一区| 国产精品视频首页| 成人动漫网站在线观看| 超碰在线亚洲| 日韩精品一线二线三线| 天天射—综合中文网| 霍思燕三级露全乳照| 三级亚洲高清视频| 亚洲第一成肉网| 成av人片一区二区| 国产精品无码午夜福利| 国产精品美日韩| 国产一级中文字幕| 在线视频国内自拍亚洲视频| 亚洲AV无码精品国产| 亚洲视频国产视频| 黄色免费在线观看| 8x拔播拔播x8国产精品| 香蕉视频亚洲一级| 97人人模人人爽人人少妇| 欧美日韩一区二区三区在线电影| 欧美一级二级三级九九九| 欧美日韩18| 亚洲国产精品毛片av不卡在线| 极品尤物av久久免费看| 免费日本黄色网址| 亚洲精品成人a在线观看| 亚洲欧美综合自拍| 欧美一级二级三级乱码| 国产在线色视频| 91av视频在线播放| 国产成人免费av一区二区午夜 | 国产精品伦一区| 91av在线免费视频| 日韩一级二级三级| 九一国产在线| 国产精品亚洲综合久久| 综合久久国产| 亚洲一区视频| 中文字幕第六页| 国产精品免费视频一区| 日韩乱码一区二区三区| 亚洲的天堂在线中文字幕| 美女黄视频在线观看| 国产成人av网址| 欧美激情99| 国产专区在线视频| 久久精品国产在热久久| 精品人伦一区二区| 欧美性猛交xxxxx水多| 亚洲大尺度网站| 欧美激情久久久久| 香蕉久久久久久| 日韩电影免费观看在| 国产日韩一区二区三区在线播放| youjizz.com国产| 一区二区三区四区在线| 97人妻一区二区精品免费视频| 亚洲四色影视在线观看| 678在线观看视频| 99热国产免费| 午夜精品电影| 99精品视频免费版的特色功能| 中文字幕 久热精品 视频在线| 欧产日产国产69| 国产一区二区三区在线视频| 在线亚洲人成| 美女视频久久| 999在线观看精品免费不卡网站| 日本黄色录像片| 黄色一区二区在线| 少妇无码一区二区三区| 欧美亚洲激情视频| 日韩高清三区| 国产一区二区网| 国产不卡视频一区| 日韩熟女精品一区二区三区| 精品欧美一区二区在线观看| 怡红院在线观看| 国产日韩欧美综合精品| 日韩视频不卡| 大地资源二中文在线影视观看| 色成年激情久久综合| 蜜芽tv福利在线视频| 国产精品444| 国产a久久精品一区二区三区| 孩娇小videos精品| 中文字幕亚洲在| 国产理论片在线观看| 97人人爽人人喊人人模波多| 好吊妞视频这里有精品| 国产v片免费观看| 国产欧美1区2区3区| 在线观看免费视频a| 不用播放器成人网| 成人午夜888| 日韩精品视频在线观看视频 | 美女av在线播放| 高清不卡日本v二区在线| 一本综合久久| 国产伦精品一区二区三区视频女| 欧美性猛交xxxxxx富婆| 福利在线午夜| 动漫一区二区在线| 久久久人人人| 免费在线观看a级片| 日韩精品中文字幕有码专区| 成人自拍视频网| 伊人再见免费在线观看高清版 | 精品1卡二卡三卡四卡老狼| 在线看一区二区| 91极品在线|