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

SpringCloud之Hystrix Turbine的簡介與使用

運維 系統運維
Hystrix Dashboard 前面已經知道了,它的主要功能是可以對某一項微服務進行監控,但真實情況下,不可能只對一個微服務進行監控。

[[408799]]

Spring Cloud Hystrix Turbine

Hystrix Dashboard 前面已經知道了,它的主要功能是可以對某一項微服務進行監控,但真實情況下,不可能只對一個微服務進行監控,我們有很多微服務,所以我們需要對很多微服務進行監控,這個時候就需要使用到turbine [ˈtɜːbaɪn] 來完成;

單個hystrix服務的監控(如下圖):

多個hystrix服務的監控(如下圖):

具體步驟:

首先準備一個turbine模塊

1、創建一個

34-sprinGCloud-service-turbine項目,該項目依然是一個Springboot項目;

2、添加依賴:

  1. <!-- spring-cloud-starter-netflix-turbine --> 
  2. <dependency> 
  3.     <groupId>org.springframework.cloud</groupId> 
  4.     <artifactId>spring-cloud-starter-netflix-turbine</artifactId> 
  5. </dependency> 

 3、配置文件:

  1. server.port=3722 

#不向注冊中心注冊自己

  1. eureka.client.register-with-eureka=false 

#eureka注冊中心的連接地址

  1. eureka.client.service-url.defaultZone=http://192.168.10.128:8761/eureka,http://192.168.10.128:8762/eureka,http://192.168.10.128:8763/eureka 

#配置turbine

  1. turbine.app-config=34-SPRINGCLOUD-SERVICE-PORTAL,34-SPRINGCLOUD-SERVICE-PORTAL-2 

#需要有這個,沒有的話聚合不了多個項目

  1. turbine.cluster-name-expression="default" 

4、在main方法的入口類上添加注解:

  1. @EnableTurbine //開啟turbine 
  2. @SpringBootApplication 
  3. public class TurbineApplication { 
  4.     public static void main(String[] args) { 
  5.         SpringApplication.run(TurbineApplication.class, args); 
  6.     } 

接下來為了能對多個使用了hystrix的項目進行監控,我們再準備一份項目,并且里面使用了hystrix:

34-sprinGCloud-service-portal-2(可以拷貝一份34-sprinGCloud-service-portal項目來制作)

注意點就是要先訪問一下各個使用了hystrix的優熔斷功能的接口,然后再測試turbine,否則你不訪問的話,測試是不會有數據的;

  1. http://localhost:8080/cloud/goodsFeignHystrix 
  2.  
  3. http://localhost:8081/cloud/goodsLimit 
  4.  
  5. http://localhost:8080/actuator/hystrix.stream 
  6.  
  7. http://localhost:8081/actuator/hystrix.stream 
  8.  
  9. http://localhost:3722/turbine.stream 

Spring Cloud Zuul

通過前面內容的學習,我們已經可以基本搭建出一套簡略版的微服務架構了,我們有注冊中心 Eureka,可以將服務注冊到該注冊中心中,我們有 Ribbon 或Feign 可以實現對服務負載均衡地調用,我們有 Hystrix 可以實現服務的熔斷;

我們來看一下下面的微服務架構圖:

在上面的架構圖中,我們的服務包括:內部服務 Service A 和內部服務 ServiceB,這兩個服務都是集群部署,每個服務部署了 3 個實例,他們都會通過 EurekaServer 注冊中心注冊與訂閱服務,而 Open Service 是一個對外的服務,也是集群部署,外部調用方通過負載均衡設備調用 Open Service 服務,比如負載均衡使用 Nginx、LVS、HAProxy,這樣的實現是否合理,或者是否有更好的實現方式呢?接下來我們主要圍繞該問題展開討論。

1、如果我們的微服務中有很多個獨立服務都要對外提供服務,那么我們要如何去管理這些接口?特別是當項目非常龐大的情況下要如何管理?

2、在微服務中,一個獨立的系統被拆分成了很多個獨立的服務,為了確保安全,權限管理也是一個不可回避的問題,如果在每一個服務上都添加上相同的權限驗證代碼來確保系統不被非法訪問,那么工作量也就太大了,而且維護也非常不方便。

為了解決上述問題,微服務架構中提出了API網關的概念,它就像一個安檢站一樣,所有外部的請求都需要經過它的調度與過濾,然后 API 網關來實現請求路由、負載均衡、權限驗證等功能;

那么 Spring Cloud 這個一站式的微服務開發框架基于 Netflix Zuul 實現了Spring Cloud Zuul,采用 Spring Cloud Zuul 即可實現一套 API 網關服務;

Zuul

Zuul包含了對請求的路由和過濾兩個最主要的功能:

其中路由功能負責將外部請求轉發到具體的微服務實例上,是實現外部訪問統一入口的基礎,過濾功能則負責對請求的處理過程進行干預,是實現請求校驗、服務聚合等功能的基礎;

Zuul和Eureka進行整合,將Zuul自身注冊為Eureka服務治理下的應用,同時從Eureka中獲得其他微服務的信息,也即以后的訪問微服務都是通過Zuul跳轉后獲得。

路由功能:

項目加入依賴:

  1. <!--spring-cloud-starter-netflix-eureka-client--> 
  2. <dependency> 
  3.     <groupId>org.springframework.cloud</groupId> 
  4.     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
  5. </dependency> 
  6. <!-- spring-cloud-starter-netflix-zuul --> 
  7. <dependency> 
  8.     <groupId>org.springframework.cloud</groupId> 
  9.     <artifactId>spring-cloud-starter-netflix-zuul</artifactId> 
  10. </dependency> 

由于Zuul最終會注冊進eureka,所以我們此處也依賴了eureka;

配置文件:

  1. server.port=80 

#是eureka注冊中心首頁的Application這一欄

  1. spring.application.name=34-sprinGCloud-service-zuul 

#每間隔2s,向服務端發送一次心跳,證明自己依然"存活"

  1. eureka.instance.lease-renewal-interval-in-seconds=2 

#告訴服務端,如果我10s之內沒有給你發心跳,就代表我故障了,將我踢出掉

  1. eureka.instance.lease-expiration-duration-in-seconds=10 

#告訴服務端,服務實例以IP作為鏈接,而不是取機器名

  1. eureka.instance.prefer-ip-address=true 

#告訴服務端,服務實例的id,id必須要唯一,是eureka注冊中心首頁的Status這一欄

  1. eureka.instance.instance-id=34-sprinGCloud-service-zuul 

#eureka注冊中心的連接地址

  1. eureka.client.service-url.defaultZone=http://192.168.10.128:8761/eureka,http://192.168.10.128:8762/eureka,http://192.168.10.128:8763/eureka 

啟動類上:

  1. @EnableZuulProxy 
  2. @SpringBootApplication 
  3. public class ZuulApplication { 
  4.     public static void main(String[] args) { 
  5.         SpringApplication.run(ZuulApplication.class, args); 
  6.     } 

這樣簡單的zuul就搭建好了, 啟動項目我們即可通過zuul然后加上對應的微服務名字訪問微服務,比如:

  1. http://localhost/34-sprinGCloud-service-portal/cloud/goodsFeign 
  2.  
  3. http://localhost:80/ 

這個是zuul本身的

  1. 34-sprinGCloud-service-portal 

這個是要調用的項目名稱

  1. /cloud/goodsFeign 

這個是被調用的contrller上的接口路徑;

在實際開發當中我們肯定不會通過微服務名去調用,比如我要調用消費者可能只要一個/cloud/goodsFeign就好了,而不是

/34-sprinGCloud-service-portal/cloud/goodsFeign

加入以下配置即可:

#配置路由規則

  1. zuul.routes.portal.service-id=34-sprinGCloud-service-portal 
  2. zuul.routes.portal.path=/portal/** 

然后:

  1. http://localhost/portal/cloud/goodsFeignHystrix 
  2.  
  3. / **代表是所有(多個)層級 /cloud/goodsFeignHystrix 
  4.  
  5. / * 是代表一層; 
  6.  
  7. 如果是/ * 的話 /api/goods 就不會被路由; 

此時我們能通過自定義的規則進行訪問,但是我們現在依然能用之前的微服務名調用,這是不合理的,第一是有多重地址了, 第二一般微服務名這種最好不要暴露在外,所以我們一般會禁用微服務名方式調用。

加入配置:

  1. zuul.ignored-services=34-sprinGCloud-service-portal 

這里能發現我們不能通過微服務名來調用了, 不過這個配置如果一個一個通過微服務名來配置難免有點復雜,所以一般這樣配置來禁用所有:

  1. zuul.ignored-services=* 

可能有時候我們的接口調用需要一定的規范,比如調用微服務的API URL前綴需要加上/api 對于這種情況,zuul也考慮到了并給出了解決方案:

  1. zuul.prefix=/api 

比如:

http://localhost/api/portal/cloud/goodsFeignHystrix

通配符

過濾器:

限流、權限驗證、記錄日志

過濾器 (filter) 是zuul的核心組件,zuul大部分功能都是通過過濾器來實現的。 zuul中定義了4種標準過濾器類型,這些過濾器類型對應于請求的典型生命周期。

  • PRE:這種過濾器在請求被路由之前調用。可利用這種過濾器實現身份驗證、在 集群中選擇請求的微服務、記錄調試信息等。
  • ROUTING:這種過濾器將請求路由到微服務。這種過濾器用于構建發送給微服 務的請求,并使用 Apache HttpClient或 Netfilx Ribbon請求微服務
  • POST:這種過濾器在路由到微服務以后執行。這種過濾器可用來為響應添加標準 的 HTTP Header、收集統計信息和指標、將響應從微服務發送給客戶端等。
  • ERROR:在其他階段發生錯誤時執行該過濾器。

如果要編寫一個過濾器,則需繼承ZuulFilter類實現其中的方法:

  1. @Component 
  2. public class LogFilter extends ZuulFilter { 
  3.     @Override 
  4.     public String filterType() { 
  5.         return FilterConstants.ROUTE_TYPE; 
  6.     } 
  7.     @Override 
  8.     public int filterOrder() { 
  9.         return FilterConstants.PRE_DECORATION_FILTER_ORDER; 
  10.     } 
  11.     @Override 
  12.     public boolean shouldFilter() { 
  13.         return true
  14.     } 
  15.     @Override 
  16.     public Object run() throws ZuulException { 
  17.         RequestContext currentContext = RequestContext.getCurrentContext(); 
  18.         HttpServletRequest request = currentContext.getRequest(); 
  19.         String remoteAddr = request.getServerName(); 
  20.         System.out.println("訪問地址:"+request.getRequestURI()); 
  21.         return null
  22.     } 

由代碼可知,自定義的 zuul Filter需實現以下幾個方法。

filterType: 返回過濾器的類型。

有 pre、 route、 post、 error等幾種取值,分別對應上文的幾種過濾器。

詳細可以參考

com.netflix.zuul.ZuulFilter.filterType()中的注釋;

filter0rder:返回一個 int值來指定過濾器的執行順序,不同的過濾器允許返回相同的數字。

shouldFilter:返回一個 boolean值來判斷該過濾器是否要執行, true表示執行, false表示不執行。

run:過濾器的具體邏輯;

zuul過濾器的禁用

Spring Cloud默認為Zuul編寫并啟用了一些過濾器,例如DebugFilter、FormBodyWrapperFilter等,這些過濾器都存放在spring-cloud-netflix-zuul這個jar包里,一些場景下,想要禁用掉部分過濾器,該怎么辦呢? 只需在application.properties里設置zuul...disable=true 例如,要禁用上面我們寫的過濾器,這樣配置就行了:

  1. zuul.LogFilter.route.disable=true 

Zuul 的異常處理

Spring Cloud Zuul 對異常的處理是非常方便的,但是由于 Spring Cloud 處于迅速發展中,各個版本之間有所差異,本案例是以 Finchley.RELEASE 版本為例, 來說明 Spring Cloud Zuul 中的異常處理問題。

首先我們來看一張官方給出的 Zuul 請求的生命周期圖:

1.正常情況下所有的請求都是按照 pre、route、post 的順序來執行,然后由 post 返回 response

2.在 pre 階段,如果有自定義的過濾器則執行自定義的過濾器

3.pre、routing、post 的任意一個階段如果拋異常了,則執行 error 過濾器

我們可以統一處理異常:

怎么實現,步驟:

1、禁用 zuul 默認的異常處理 SendErrorFilter 過濾器,然后自定義我們自己的Errorfilter 過濾器

  1. zuul.SendErrorFilter.error.disable=true 
  2.   
  3. @Component 
  4. public class ErrorFilter extends ZuulFilter { 
  5.     @Override 
  6.     public String filterType() { 
  7.         return "error"
  8.     } 
  9.     @Override 
  10.     public int filterOrder() { 
  11.         return 1; 
  12.     } 
  13.     @Override 
  14.     public boolean shouldFilter() { 
  15.         return true
  16.     } 
  17.     @Override 
  18.     public Object run() throws ZuulException { 
  19.         try { 
  20.             RequestContext context = RequestContext.getCurrentContext(); 
  21.             ZuulException exception = (ZuulException)context.getThrowable(); 
  22.             System.out.println("進入系統異常攔截" + exception.getMessage()); 
  23.             HttpServletResponse response = context.getResponse(); 
  24.             response.setContentType("application/json; charset=utf8"); 
  25.             response.setStatus(exception.nStatusCode); 
  26.             PrintWriter writer = null
  27.             try { 
  28.                 writer = response.getWriter(); 
  29.                 writer.print("{code:"+ exception.nStatusCode +",message:\""
  30.                         exception.getMessage() +"\"}"); 
  31.             } catch (IOException e) { 
  32.                 e.printStackTrace(); 
  33.             } finally { 
  34.                 if(writer!=null){ 
  35.                     writer.close(); 
  36.                 } 
  37.             } 
  38.         } catch (Exception e) { 
  39.             ReflectionUtils.rethrowRuntimeException(e); 
  40.         } 
  41.         return null
  42.     } 

Zuul的熔斷降級

zuul是一個代理服務,但如果被代理的服務突然斷了,這個時候zuul上面會有出錯信息,例如,停止了被調用的微服務;

一般服務方自己會進行服務的熔斷降級,但對于zuul本身,也應該進行zuul的降級處理;

我們需要有一個zuul的降級,實現如下:

  1. @Component 
  2. public class ProviderFallback implements FallbackProvider { 
  3.     @Override 
  4.     public String getRoute() { 
  5.         return "*"
  6.     } 
  7.     @Override 
  8.     public ClientHttpResponse fallbackResponse(String route, Throwable cause) { 
  9.         return new ClientHttpResponse() { 
  10.             @Override 
  11.             public HttpHeaders getHeaders() { 
  12.                 HttpHeaders headers = new HttpHeaders(); 
  13.                 headers.set("Content-Type""text/html; charset=UTF-8"); 
  14.                 return headers; 
  15.             } 
  16.             @Override 
  17.             public InputStream getBody() throws IOException { 
  18.                 // 響應體 
  19.                 return new ByteArrayInputStream("服務正在維護,請稍后再試.".getBytes()); 
  20.             } 
  21.             @Override 
  22.             public HttpStatus getStatusCode() throws IOException { 
  23.                 return HttpStatus.BAD_REQUEST; 
  24.             } 
  25.             @Override 
  26.             public int getRawStatusCode() throws IOException { 
  27.                 return HttpStatus.BAD_REQUEST.value(); 
  28.             } 
  29.             @Override 
  30.             public String getStatusText() throws IOException { 
  31.                 return HttpStatus.BAD_REQUEST.getReasonPhrase(); 
  32.             } 
  33.             @Override 
  34.             public void close() { 
  35.             } 
  36.         }; 
  37.     } 
  38. }  
責任編輯:姜華 來源: 今日頭條
相關推薦

2025-08-12 00:22:00

Spring監控Hystrix

2021-06-30 07:34:21

SpringCloudHystrix 監控

2022-05-13 09:05:49

Hystrix熔斷器

2017-04-03 21:52:30

隔離線程池分布式

2023-02-03 15:16:42

SpringHystrix

2021-08-26 11:52:32

FeignWeb服務

2010-01-13 13:27:07

CentOS vsft

2010-03-23 16:28:31

CentOS使用

2021-12-10 09:45:19

生成器配置代碼

2021-03-26 06:01:45

日志MongoDB存儲

2022-07-04 08:14:24

架構演變Tomcat容器架構

2022-09-15 15:25:47

spring-微服務

2011-04-19 17:06:24

bada控件bada

2021-03-25 15:54:14

鴻蒙HarmonyOS應用開發

2009-06-11 17:13:44

J2EE設計模式Dao設計模式

2010-07-07 09:48:05

UML

2009-11-06 16:48:03

WCF簡介

2011-07-04 14:33:07

PHP

2016-09-20 15:47:46

JavascriptIndexedDB瀏覽器

2011-03-25 09:18:59

Nagios
點贊
收藏

51CTO技術棧公眾號

亚洲成人中文字幕| 国产精品入口麻豆原神| 国产91精品青草社区| 无码h肉动漫在线观看| 91久久久久久白丝白浆欲热蜜臀| 亚洲天堂精品在线观看| 国产精品成人观看视频免费| 九九精品免费视频| 中文在线日韩| 亚洲理论在线a中文字幕| 最新av免费在线观看| 波多野一区二区| 国产精品拍天天在线| 成人免费视频观看视频| 成人小视频在线播放| 欧美搞黄网站| 亚洲免费av网址| 日本少妇一区二区三区| 都市激情亚洲综合| 一区二区在线看| 一区二区欧美日韩| 免费人成在线观看网站| 国产精品456露脸| 国产精品视频最多的网站| 国产一级二级三级视频| 精品日产免费二区日产免费二区| 日韩精品在线一区| 日本女优爱爱视频| www.超碰在线| 亚洲精品日日夜夜| 亚洲一卡二卡| 黄色影院在线播放| 成人sese在线| www日韩av| 国产精品欧美综合亚洲| 日韩中文字幕91| 91chinesevideo永久地址| 国产精品久久久精品四季影院| 国产一区二区三区不卡视频网站| 亚洲高清不卡av| xxxx视频在线观看| 国产美女精品视频免费播放软件 | 日韩欧美国产成人精品免费| 国产亚洲欧美日韩在线观看一区二区 | 亚洲福利网站| 亚洲国模精品一区| 精品1卡二卡三卡四卡老狼| 精品国模一区二区三区欧美| 欧美日韩激情一区二区| 亚洲激情在线观看视频| 天天综合网站| 91久久人澡人人添人人爽欧美| 69堂免费视频| 日韩pacopacomama| 一本色道久久综合狠狠躁的推荐| 日本韩国欧美在线观看| а√天堂8资源在线| 亚洲午夜免费电影| 男人天堂av片| 国产在线88av| 日韩欧美一区二区在线| 日韩精品免费播放| 日韩毛片一区| 欧美二区在线观看| www.欧美激情.com| 日韩一区二区三区色| 日韩精品资源二区在线| 亚洲av无码专区在线播放中文| 91精品国产自产在线丝袜啪| 亚洲黄色www网站| 欧美成人午夜精品免费| 精品国精品国产自在久国产应用| 在线精品视频视频中文字幕| 国产麻豆a毛片| 欧美国产专区| 2019中文字幕免费视频| 日韩不卡高清视频| 久久精品99国产精品| 亚洲999一在线观看www| 成人午夜免费福利| 26uuu欧美| 亚洲欧美久久234| a篇片在线观看网站| 亚洲成人动漫精品| 可以免费在线看黄的网站| 久久伊人国产| 精品国产青草久久久久福利| 成人免费网站黄| 国产精品久久久久一区二区三区厕所| 久久99精品视频一区97| 在线观看免费国产视频| 免费人成精品欧美精品| 亚洲综合在线做性| 亚洲av成人无码网天堂| 国产精品久久久久久久第一福利| 99久久久精品视频| 搜成人激情视频| 日韩一级二级三级| 国产毛片久久久久久久| 午夜电影亚洲| 国产成人午夜视频网址| 天天影视色综合| 天天色影综合网| 日韩人体视频| zzijzzij亚洲日本成熟少妇| 成年人免费高清视频| 久久精品国产99国产精品| 国内一区在线| av在线网址观看| 色噜噜偷拍精品综合在线| 不卡的一区二区| 郴州新闻综合频道在线直播| 久久久久这里只有精品| 国产又黄又粗又猛又爽| 久久亚洲综合av| 国产精品免费看久久久无码| 日本一区二区电影| 亚洲精品99久久久久中文字幕| 999精品视频在线观看播放| 久久精品卡一| 国产激情一区二区三区在线观看| 午夜视频在线观看免费视频| 大伊人狠狠躁夜夜躁av一区| 免费黄色在线播放| 日韩一区电影| 日韩av片永久免费网站| 无码国精品一区二区免费蜜桃| 亚洲嫩草精品久久| 欧美精品无码一区二区三区| 欧美交a欧美精品喷水| 欧美成人免费在线视频| 亚洲视频久久久| 日本一区二区三区久久久久久久久不| 日本www在线视频| 国产精东传媒成人av电影| 九九综合九九综合| 国产又大又粗又硬| 中文字幕在线不卡一区二区三区| 91国产精品视频在线观看| 亚洲尤物av| 26uuu亚洲国产精品| 日本精品一区二区在线观看| 一区二区三区四区中文字幕| 91精品国产三级| 国产精品麻豆久久| 成人看片人aa| 麻豆传媒在线免费看| 欧美日韩国产在线观看| 美国一级黄色录像| 蜜桃久久久久久久| 亚洲精品日韩在线观看| 成人午夜sm精品久久久久久久| 亚洲欧美日韩精品久久亚洲区| 国产精品久久久免费视频| 波波电影院一区二区三区| 999在线观看视频| 老牛精品亚洲成av人片| 91精品国产乱码久久久久久蜜臀 | 日韩一区二区三区国产| 在线免费观看一区二区| 亚洲欧洲三级电影| 日韩av自拍偷拍| 欧美国产先锋| 精品免费二区三区三区高中清不卡 | 亚洲综合欧美激情| 日韩精品1区| 亚洲精品欧美日韩专区| 亚洲第一图区| 日韩精品在线观看一区| 欧美性猛交xxxx乱大交hd | 青娱乐在线视频免费观看| 粉嫩一区二区三区在线看| 很污的网站在线观看| 蜜桃精品噜噜噜成人av| 国产精品中文久久久久久久| 成人av黄色| 亚洲国产成人久久综合| av毛片在线免费观看| 国产精品久久久久久福利一牛影视 | 亚洲人成电影在线观看天堂色| 最好看的日本字幕mv视频大全| 中文字幕一区av| 亚洲乱妇老熟女爽到高潮的片| 在线亚洲自拍| 一道精品一区二区三区| 2020最新国产精品| 欧美怡春院一区二区三区| 午夜视频成人| 亚洲国产另类久久精品| 久久午夜鲁丝片| 亚洲愉拍自拍另类高清精品| 成人片黄网站色大片免费毛片| 韩国女主播成人在线观看| 丁香花在线影院观看在线播放| 精品国产一区二区三区av片| 91亚洲精品一区二区| 天堂网在线最新版www中文网| 自拍偷拍亚洲区| 日本高清视频在线| 欧美色图片你懂的| 国产午夜小视频| 中文字幕亚洲欧美在线不卡| aaaaaav| 国产精品一区二区在线观看网站 | 亚洲欧美三级伦理| 99视频在线观看免费| 色香色香欲天天天影视综合网| 精品自拍偷拍视频| 久久久av毛片精品| 欧美丰满熟妇bbb久久久| 青青草伊人久久| 青青青青草视频| 亚洲欧美网站在线观看| 茄子视频成人在线观看| 99香蕉久久| 91午夜理伦私人影院| 成人看片网站| 热re99久久精品国产66热| 怡红院在线观看| 日韩一区二区久久久| 国产精品久久一区二区三区不卡| 亚洲激情视频网站| 国产黄色一级大片| 欧美三区在线观看| 免费看一级视频| 亚洲.国产.中文慕字在线| 少妇久久久久久被弄高潮| 国产精品色婷婷| 欧美成人激情图片网| www.日韩一区| 疯狂做受xxxx欧美肥白少妇| 国产免费美女视频| 国产精品久久久久婷婷| 亚洲av成人无码久久精品 | 51午夜精品国产| 国产成人精品亚洲| 色综合久久中文综合久久97| 国产精品成人免费一区二区视频| 亚洲精品菠萝久久久久久久| 日韩亚洲欧美中文字幕| 国产精品视频在线看| 在线观看亚洲大片短视频| 国产拍揄自揄精品视频麻豆| 婷婷色一区二区三区| 久久人人97超碰com| 国产三级视频网站| 91在线精品秘密一区二区| 亚洲欧美在线不卡| 91免费观看在线| 色无极影院亚洲| 久久精品人人做| 免费看91的网站| 中文字幕欧美国产| 日韩av片在线免费观看| 国产精品乱人伦中文| 四虎永久免费地址| 亚洲视频免费观看| 黄色一级视频在线观看| 亚洲午夜国产一区99re久久| 日韩成人免费观看| 狠狠躁夜夜躁久久躁别揉| 无码人妻丰满熟妇奶水区码| 欧美调教femdomvk| 99热这里只有精品99| 精品国产三级电影在线观看| 深夜福利在线看| 永久555www成人免费| 麻豆传媒在线观看| 欧美国产日本在线| 精精国产xxxx视频在线播放| 国产成人久久久精品一区| 四虎国产精品永久在线国在线| 99国产精品久久久久老师| 免费福利视频一区| 亚洲国产激情一区二区三区| 小处雏高清一区二区三区| 成人免费性视频| 亚洲影音一区| 欧美午夜精品理论片| 成人av在线资源网站| 免费看的黄色网| 亚洲免费毛片网站| 午夜精品久久久久久久久久久久久蜜桃| 日韩欧美一区二区在线| 一级片在线观看视频| 婷婷激情成人| 国产成人精品综合| 国产一区二区三区精品在线观看| 精品不卡一区二区三区| 日韩欧美中字| 黄色片网址在线观看| 久久97超碰色| 成人免费无码大片a毛片| 中文文精品字幕一区二区| 久久久久久激情| 欧美三级电影精品| 日本激情视频网站| 久久精品99久久香蕉国产色戒| 1024在线看片你懂得| 成人网在线视频| 久久不见久久见免费视频7| 懂色av粉嫩av蜜臀av| 美女黄色成人网| 亚洲妇女无套内射精| 国产精品午夜免费| 国产午夜在线播放| 日韩一级高清毛片| av国产在线观看| 69**夜色精品国产69乱| 欧美一区在线观看视频| 午夜视频久久久| 久久久久久夜| 中国免费黄色片| 亚洲天堂精品在线观看| www.五月婷婷.com| 亚洲福利视频二区| 先锋影音在线资源站91| 国产噜噜噜噜噜久久久久久久久 | 久久一区二区三区四区| 久久久精品国产sm调教网站| 欧美片网站yy| 国产高清免费av在线| 欧美亚洲成人精品| 韩国精品福利一区二区三区| 女同性恋一区二区| 久久精品72免费观看| ass极品国模人体欣赏| 色综合久久综合网欧美综合网 | 日韩在线视频免费观看| 日本一道高清亚洲日美韩| 国产伦理一区二区三区| 欧美三级小说| 欧美国产在线一区| 亚洲色欲色欲www| 在线观看免费观看在线| 一本色道久久88精品综合| 欧美××××黑人××性爽| 欧美一区免费视频| 久久成人在线| 亚洲一级中文字幕| 一本一本大道香蕉久在线精品| 日韩av视屏| 日本一区二区在线免费播放| 亚洲欧洲av| 凹凸日日摸日日碰夜夜爽1| 国产无套粉嫩白浆在线2022年| 日韩亚洲欧美成人| 成人午夜sm精品久久久久久久| 五月天丁香综合久久国产| 青草av.久久免费一区| 手机av在线不卡| 欧美日韩国产小视频在线观看| 成年女人的天堂在线| 国产精品女人久久久久久| 青青草原综合久久大伊人精品| 999精彩视频| 中文字幕视频一区| 国产精品嫩草影院精东| 久久国产精品影视| 亚洲成人影音| 日本少妇高潮喷水视频| 久久美女高清视频 | 欧美一区二区三区日韩视频| 超碰在线免费公开| 国产精品jizz视频| 国产视频一区在线观看一区免费| 精品人妻一区二区三区香蕉| 日本大香伊一区二区三区| 免费黄色在线观看| 丁香婷婷久久久综合精品国产| 亚洲高清网站| 免费污网站在线观看| 欧美精品黑人性xxxx| 国内老司机av在线| 免费精品视频一区| 久久国产婷婷国产香蕉| 妺妺窝人体色www聚色窝仙踪 | 在线观看欧美日韩电影| 日韩精品一区二区三区丰满 | 国产在线不卡av| 色综合久久久久综合| 毛片免费不卡| 精品91免费| 久久成人免费网站| 免费在线视频一区二区| 亚洲免费人成在线视频观看| 粉嫩91精品久久久久久久99蜜桃 | 精品制服美女久久| 精品无码一区二区三区电影桃花 | 麻豆91精品视频| 成人免费看片98| 正在播放亚洲1区| 成人中文字幕视频| 在线观看免费黄网站| 亚洲高清在线视频| 在线播放日本| 国产在线精品一区二区三区| 精彩视频一区二区三区| 欧美黑人一区二区| 九九热视频这里只有精品|