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

Spring Cloud 終于按捺不住推出了自己的服務網關 Gateway

企業動態
Spring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發的網關,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。

[[252950]]

Spring 官方最終還是按捺不住推出了自己的網關組件:Spring Cloud Gateway ,相比之前我們使用的 Zuul(1.x) 它有哪些優勢呢?Zuul(1.x) 基于 Servlet,使用阻塞 API,它不支持任何長連接,如 WebSockets,Spring Cloud Gateway 使用非阻塞 API,支持 WebSockets,支持限流等新特性。

Spring Cloud Gateway

Spring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發的網關,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。

Spring Cloud Gateway 作為 Spring Cloud 生態系統中的網關,目標是替代 Netflix Zuul,其不僅提供統一的路由方式,并且基于 Filter 鏈的方式提供了網關基本的功能,例如:安全,監控/指標,和限流。

相關概念:

  • Route(路由):這是網關的基本構建塊。它由一個 ID,一個目標 URI,一組斷言和一組過濾器定義。如果斷言為真,則路由匹配。
  • Predicate(斷言):這是一個 Java 8 的 Predicate。輸入類型是一個 ServerWebExchange。我們可以使用它來匹配來自 HTTP 請求的任何內容,例如 headers 或參數。
  • Filter(過濾器):這是org.springframework.cloud.gateway.filter.GatewayFilter的實例,我們可以使用它修改請求和響應。

工作流程:

 

客戶端向 Spring Cloud Gateway 發出請求。如果 Gateway Handler Mapping 中找到與請求相匹配的路由,將其發送到 Gateway Web Handler。Handler 再通過指定的過濾器鏈來將請求發送到我們實際的服務執行業務邏輯,然后返回。

過濾器之間用虛線分開是因為過濾器可能會在發送代理請求之前(“pre”)或之后(“post”)執行業務邏輯。

Spring Cloud Gateway 的特征:

  • 基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
  • 動態路由
  • Predicates 和 Filters 作用于特定路由
  • 集成 Hystrix 斷路器
  • 集成 Spring Cloud DiscoveryClient
  • 易于編寫的 Predicates 和 Filters
  • 限流
  • 路徑重寫

快速上手

Spring Cloud Gateway 網關路由有兩種配置方式:

  • 在配置文件 yml 中配置
  • 通過@Bean自定義 RouteLocator,在啟動主類 Application 中配置

這兩種方式是等價的,建議使用 yml 方式進配置。

使用 Spring Cloud Finchley 版本,Finchley 版本依賴于 Spring Boot 2.0.6.RELEASE。

  1. <parent> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-parent</artifactId> 
  4.     <version>2.0.6.RELEASE</version> 
  5.     <relativePath/> <!-- lookup parent from repository --> 
  6. </parent> 
  7.  
  8. <dependencyManagement> 
  9.     <dependencies> 
  10.         <dependency> 
  11.             <groupId>org.springframework.cloud</groupId> 
  12.             <artifactId>spring-cloud-dependencies</artifactId> 
  13.             <version>Finchley.SR2</version> 
  14.             <type>pom</type> 
  15.             <scope>import</scope> 
  16.         </dependency> 
  17.     </dependencies> 
  18. </dependencyManagement> 

經測試 Finchley.RELEASE 有 bug 多次請求會報空指針異常,SR2 是 Spring Cloud 的***版本。

添加項目需要使用的依賴包

  1. <dependency> 
  2.     <groupId>org.springframework.cloud</groupId> 
  3.     <artifactId>spring-cloud-starter-gateway</artifactId> 
  4. </dependency> 

Spring Cloud Gateway 是使用 netty+webflux 實現因此不需要再引入 web 模塊。

我們先來測試一個最簡單的請求轉發。

  1. server: 
  2.   port: 8080 
  3. spring: 
  4.   cloud: 
  5.     gateway: 
  6.       routes: 
  7.       - id: neo_route 
  8.         uri: http://www.ityouknow.com 
  9.         predicates: 
  10.         - Path=/spring-cloud 

各字段含義如下:

  • id:我們自定義的路由 ID,保持唯一
  • uri:目標服務地址
  • predicates:路由條件,Predicate 接受一個輸入參數,返回一個布爾值結果。該接口包含多種默認方法來將 Predicate 組合成其他復雜的邏輯(比如:與,或,非)。
  • filters:過濾規則,本示例暫時沒用。

上面這段配置的意思是,配置了一個 id 為 neo_route 的路由規則,當訪問地址 http://localhost:8080/spring-cloud時會自動轉發到地址:http://www.ityouknow.com/spring-cloud。配置完成啟動項目即可在瀏覽器訪問進行測試,當我們訪問地址http://localhost:8080/spring-cloud 時會展示頁面展示如下:

 

明頁面轉發成功。

轉發功能同樣可以通過代碼來實現,我們可以在啟動類 GateWayApplication 中添加方法 customRouteLocator() 來定制轉發規則。

  1. @SpringBootApplication 
  2. public class GateWayApplication { 
  3.  
  4.     public static void main(String[] args) { 
  5.         SpringApplication.run(GateWayApplication.class, args); 
  6.     } 
  7.  
  8.     @Bean 
  9.     public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { 
  10.         return builder.routes() 
  11.                 .route("path_route", r -> r.path("/about"
  12.                         .uri("http://ityouknow.com")) 
  13.                 .build(); 
  14.     } 
  15.  

上面配置了一個 id 為 path_route 的路由,當訪問地址http://localhost:8080/about時會自動轉發到地址:http://www.ityouknow.com/about和上面的轉發效果一樣,只是這里轉發的是以項目地址/about格式的請求地址。

上面兩個示例中 uri 都是指向了我的個人網站,在實際項目使用中可以將 uri 指向對外提供服務的項目地址,統一對外輸出接口。

以上便是 Spring Cloud Gateway 最簡單的兩個請求示例,Spring Cloud Gateway 還有更多實用的功能接下來我們一一介紹。

路由規則

Spring Cloud Gateway 的功能很強大,我們僅僅通過 Predicates 的設計就可以看出來,前面我們只是使用了 predicates 進行了簡單的條件匹配,其實 Spring Cloud Gataway 幫我們內置了很多 Predicates 功能。

Spring Cloud Gateway 是通過 Spring WebFlux 的 HandlerMapping 做為底層支持來匹配到轉發路由,Spring Cloud Gateway 內置了很多 Predicates 工廠,這些 Predicates 工廠通過不同的 HTTP 請求參數來匹配,多個 Predicates 工廠可以組合使用。

Predicate 介紹

Predicate 來源于 Java 8,是 Java 8 中引入的一個函數,Predicate 接受一個輸入參數,返回一個布爾值結果。該接口包含多種默認方法來將 Predicate 組合成其他復雜的邏輯(比如:與,或,非)。可以用于接口請求參數校驗、判斷新老數據是否有變化需要進行更新操作。and--與、or--或、negate--非

在 Spring Cloud Gateway 中 Spring 利用 Predicate 的特性實現了各種路由匹配規則,有通過 Header、請求參數等不同的條件來進行作為條件匹配到對應的路由。網上有一張圖總結了 Spring Cloud 內置的幾種 Predicate 的實現。

 

說白了 Predicate 就是為了實現一組匹配規則,方便讓請求過來找到對應的 Route 進行處理,接下來我們接下 Spring Cloud GateWay 內置幾種 Predicate 的使用。

通過時間匹配

Predicate 支持設置一個時間,在請求進行轉發的時候,可以通過判斷在這個時間之前或者之后進行轉發。比如我們現在設置只有在2019年1月1日才會轉發到我的網站,在這之前不進行轉發,我就可以這樣配置:

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.        - id: time_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.          - After=2018-01-20T06:06:06+08:00[Asia/Shanghai] 

Spring 是通過 ZonedDateTime 來對時間進行的對比,ZonedDateTime 是 Java 8 中日期時間功能里,用于表示帶時區的日期與時間信息的類,ZonedDateTime 支持通過時區來設置時間,中國的時區是:Asia/Shanghai。

After Route Predicate 是指在這個時間之后的請求都轉發到目標地址。上面的示例是指,請求時間在 2018年1月20日6點6分6秒之后的所有請求都轉發到地址http://ityouknow.com。+08:00是指時間和UTC時間相差八個小時,時間地區為Asia/Shanghai。

添加完路由規則之后,訪問地址http://localhost:8080會自動轉發到http://ityouknow.com。

Before Route Predicate 剛好相反,在某個時間之前的請求的請求都進行轉發。我們把上面路由規則中的 After 改為 Before,如下:

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.        - id: after_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.          - Before=2018-01-20T06:06:06+08:00[Asia/Shanghai] 

就表示在這個時間之前可以進行路由,在這時間之后停止路由,修改完之后重啟項目再次訪問地址http://localhost:8080,頁面會報 404 沒有找到地址。

除過在時間之前或者之后外,Gateway 還支持限制路由請求在某一個時間段范圍內,可以使用 Between Route Predicate 來實現。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.        - id: after_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.          - Between=2018-01-20T06:06:06+08:00[Asia/Shanghai], 2019-01-20T06:06:06+08:00[Asia/Shanghai] 

這樣設置就意味著在這個時間段內可以匹配到此路由,超過這個時間段范圍則不會進行匹配。通過時間匹配路由的功能很酷,可以用在限時搶購的一些場景中。

通過 Cookie 匹配

Cookie Route Predicate 可以接收兩個參數,一個是 Cookie name ,一個是正則表達式,路由規則會通過獲取對應的 Cookie name 值和正則表達式去匹配,如果匹配上就會執行路由,如果沒有匹配上則不執行。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.            - id: cookie_route 
  6.               uri: http://ityouknow.com 
  7.               predicates: 
  8.               - Cookie=ityouknow, kee.e 

使用 curl 測試,命令行輸入:

  1. curl http://localhost:8080 --cookie "ityouknow=kee.e" 

則會返回頁面代碼,如果去掉--cookie "ityouknow=kee.e",后臺匯報 404 錯誤。

通過 Header 屬性匹配

Header Route Predicate 和 Cookie Route Predicate 一樣,也是接收 2 個參數,一個 header 中屬性名稱和一個正則表達式,這個屬性值和正則表達式匹配則執行。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: header_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Header=X-Request-Id, \d+ 

使用 curl 測試,命令行輸入:

  1. curl http://localhost:8080 -H "X-Request-Id:666666" 

則返回頁面代碼證明匹配成功。將參數-H "X-Request-Id:666666"改為-H "X-Request-Id:neo"再次執行時返回404證明沒有匹配。

通過 Host 匹配

Host Route Predicate 接收一組參數,一組匹配的域名列表,這個模板是一個 ant 分隔的模板,用.號作為分隔符。它通過參數中的主機地址作為匹配規則。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: host_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Host=**.ityouknow.com 

使用 curl 測試,命令行輸入:

  1. curl http://localhost:8080  -H "Host: www.ityouknow.com"  
  2. curl http://localhost:8080  -H "Host: md.ityouknow.com"  

經測試以上兩種 host 均可匹配到 host_route 路由,去掉 host 參數則會報 404 錯誤。

通過請求方式匹配

可以通過是 POST、GET、PUT、DELETE 等不同的請求方式來進行路由。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: method_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Method=GET 

使用 curl 測試,命令行輸入:

  1. # curl 默認是以 GET 的方式去請求 
  2. curl http://localhost:8080 

測試返回頁面代碼,證明匹配到路由,我們再以 POST 的方式請求測試。

  1. # curl 默認是以 GET 的方式去請求 
  2. curl -X POST http://localhost:8080 

返回 404 沒有找到,證明沒有匹配上路由

通過請求路徑匹配

Path Route Predicate 接收一個匹配路徑的參數來判斷是否走路由。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: host_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Path=/foo/{segment} 

如果請求路徑符合要求,則此路由將匹配,例如:/foo/1 或者 /foo/bar。

使用 curl 測試,命令行輸入:

  1. curl http://localhost:8080/foo/1 
  2. curl http://localhost:8080/foo/xx 
  3. curl http://localhost:8080/boo/xx 

經過測試***和第二條命令可以正常獲取到頁面返回值,***一個命令報404,證明路由是通過指定路由來匹配。

通過請求參數匹配

Query Route Predicate 支持傳入兩個參數,一個是屬性名一個為屬性值,屬性值可以是正則表達式。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: query_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Query=smile 

這樣配置,只要請求中包含 smile 屬性的參數即可匹配路由。

使用 curl 測試,命令行輸入:

  1. curl localhost:8080?smile=x&id=2 

經過測試發現只要請求匯總帶有 smile 參數即會匹配路由,不帶 smile 參數則不會匹配。

還可以將 Query 的值以鍵值對的方式進行配置,這樣在請求過來時會對屬性值和正則進行匹配,匹配上才會走路由。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: query_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Query=keep, pu. 

這樣只要當請求中包含 keep 屬性并且參數值是以 pu 開頭的長度為三位的字符串才會進行匹配和路由。

使用 curl 測試,命令行輸入:

  1. curl localhost:8080?keep=pub 

測試可以返回頁面代碼,將 keep 的屬性值改為 pubx 再次訪問就會報 404,證明路由需要匹配正則表達式才會進行路由。

通過請求 ip 地址進行匹配

Predicate 也支持通過設置某個 ip 區間號段的請求才會路由,RemoteAddr Route Predicate 接受 cidr 符號(IPv4 或 IPv6 )字符串的列表(最小大小為1),例如 192.168.0.1/16 (其中 192.168.0.1 是 IP 地址,16 是子網掩碼)。

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.       - id: remoteaddr_route 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - RemoteAddr=192.168.1.1/24 

可以將此地址設置為本機的 ip 地址進行測試。

  1. curl localhost:8080 

果請求的遠程地址是 192.168.1.10,則此路由將匹配。

組合使用

上面為了演示各個 Predicate 的使用,我們是單個單個進行配置測試,其實可以將各種 Predicate 組合起來一起使用。

例如:

  1. spring: 
  2.   cloud: 
  3.     gateway: 
  4.       routes: 
  5.        - id: host_foo_path_headers_to_httpbin 
  6.         uri: http://ityouknow.com 
  7.         predicates: 
  8.         - Host=**.foo.org 
  9.         - Path=/headers 
  10.         - Method=GET 
  11.         - Header=X-Request-Id, \d+ 
  12.         - Query=foo, ba. 
  13.         - Query=baz 
  14.         - Cookie=chocolate, ch.p 
  15.         - After=2018-01-20T06:06:06+08:00[Asia/Shanghai] 

各種 Predicates 同時存在于同一個路由時,請求必須同時滿足所有的條件才被這個路由匹配。

一個請求滿足多個路由的謂詞條件時,請求只會被***成功匹配的路由轉發

總結

通過今天的學習發現 Spring Cloud Gateway 使用非常的靈活,可以根據不同的情況來進行路由分發,在實際項目中可以自由組合使用。同時 Spring Cloud Gateway 還有更多很酷的功能,比如 Filter 、熔斷和限流等,下次我們繼續學習 Spring Cloud Gateway 的高級功能。

所有代碼都在這里:https://github.com/ityouknow/spring-cloud-examples

【本文為51CTO專欄作者“純潔的微笑”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

 

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2023-11-09 08:31:56

Spring微服務網關

2024-08-05 10:03:53

2023-09-12 07:19:06

微服務網關架構

2021-04-22 12:50:28

數字人民幣支付寶區塊鏈

2022-05-12 08:21:13

項目網關模塊

2017-09-04 16:15:44

服務網關架構

2022-09-01 08:17:15

Gateway微服務網關

2025-05-27 02:55:00

Spring微服務

2022-05-16 08:22:11

網關過濾器路由

2017-09-09 23:15:20

Spring Clou微服務架構路由

2017-09-15 23:29:53

Spring Clou微服務架構過濾器

2021-11-04 10:11:02

Sentinel網關限流

2025-01-13 16:00:00

服務網關分布式系統架構

2017-07-05 08:40:50

MongoDBStitch后端

2017-03-08 07:52:24

科技新聞早報

2022-05-11 08:22:21

服務網關架構

2023-02-13 08:10:40

Gateway網關Spring

2023-09-15 08:18:49

cookie網關代理

2024-08-22 12:36:53

2012-08-24 09:23:00

Windows Log
點贊
收藏

51CTO技術棧公眾號

亚洲国产午夜| 日韩一区网站| 国产精品乱码妇女bbbb| 92看片淫黄大片看国产片| 九九热视频在线免费观看| 亚洲91网站| 色综合欧美在线| 中文字幕一区二区三区四区五区人| 国产综合视频在线| 日韩精品电影在线| 欧美国产精品va在线观看| 91精品人妻一区二区| 国产精品美女久久久久人| 五月天视频一区| 中文字幕一区二区三区有限公司 | 盗摄精品av一区二区三区| 91成人在线观看国产| 永久av免费网站| 亚洲精品小区久久久久久| 4hu四虎永久在线影院成人| av免费观看网| av激情在线| 久久久一区二区三区捆绑**| 99免费在线观看视频| 国产精品成人久久久| 亚洲经典视频在线观看| 日韩在线欧美在线| 亚洲a v网站| 成人激情自拍| 日韩欧美中文字幕公布| 亚洲36d大奶网| 成人小电影网站| 亚洲一级二级三级| 樱空桃在线播放| www 日韩| 国产性天天综合网| 久久久久久久有限公司| 亚洲精品国产av| 国产真实乱偷精品视频免| 国产成人91久久精品| 日韩少妇裸体做爰视频| 黄色国产精品| 欧美激情精品在线| 九九九免费视频| 亚洲精品网址| 国产性色av一区二区| 中文字幕丰满孑伦无码专区| 98视频精品全部国产| 欧美在线影院一区二区| 日韩在线xxx| 精品极品在线| 天天射综合影视| 中文字幕色呦呦| 国产免费a∨片在线观看不卡| 99精品久久只有精品| 大波视频国产精品久久| 国产肥老妇视频| 国产成人午夜精品影院观看视频 | 三级视频在线看| 不卡一二三区首页| 国产日韩欧美亚洲一区| 亚洲色欧美另类| 久久综合久久99| 麻豆91蜜桃| 极品白浆推特女神在线观看| 久久久亚洲精品石原莉奈| 欧美国产视频在线观看| 国产日产精品久久久久久婷婷| 国产精品视频麻豆| 宅男一区二区三区| 在线中文字幕-区二区三区四区| 亚洲女与黑人做爰| 真人抽搐一进一出视频| 亚洲美女炮图| 欧美色图12p| 日本高清免费观看| 成人av影音| 国产视频一区在线| 怡春院在线视频| julia中文字幕一区二区99在线| 日韩色视频在线观看| 95视频在线观看| 性欧美lx╳lx╳| 国产一区二区三区在线观看视频| 国产调教在线观看| 91精品啪在线观看国产81旧版| 欧美日韩国产999| 久久久久久久久久影院| 日韩高清不卡一区| 91色视频在线导航| 少妇一区二区三区四区| 久久久国产精品不卡| 在线视频不卡国产| 3344国产永久在线观看视频| 一本色道久久综合狠狠躁的推荐| 天天综合网久久| 这里视频有精品| 亚洲欧美一区二区三区在线| 潮喷失禁大喷水aⅴ无码| 午夜久久美女| 国产精品69久久| www.久久色| 久久精品免视看| 日本一道在线观看| 成人短视频app| 欧美一卡二卡在线观看| 亚洲激情视频小说| 好看的亚洲午夜视频在线| 欧美一级淫片丝袜脚交| 国产黄色av片| 国产欧美一区二区在线观看| 波多野结衣 作品| 日韩精品免费观看视频| 日韩欧美二区三区| 国产精品久久免费观看| 一区二区黄色| ts人妖另类在线| 午夜免费福利在线观看| 精品久久久久久久久中文字幕| 色天使在线观看| 综合伊思人在钱三区| 欧美精品一区三区| 亚洲中文字幕一区二区| 久久美女高清视频| 日韩欧美国产综合在线| 秋霞午夜一区二区三区视频| 这里只有精品在线观看| 最新中文字幕一区| 波多野结衣精品在线| 99久久久无码国产精品性色戒| 性欧美18一19sex性欧美| 日韩精品最新网址| 天天天天天天天天操| 青青草国产精品97视觉盛宴| 玛丽玛丽电影原版免费观看1977| 欧美草逼视频| 日韩一二三区不卡| 亚洲AV成人无码精电影在线| 毛片一区二区三区| 五月天久久狠狠| 日韩av超清在线观看| 亚洲精品中文字幕女同| 青青草av在线播放| 成人动漫一区二区| 女人色极品影院| 网站一区二区| 毛片精品免费在线观看| 国产精品视频一二区| 国产精品不卡在线观看| 午夜免费看毛片| 婷婷成人基地| 91欧美精品成人综合在线观看| 日本三级视频在线观看| 欧美猛男男办公室激情| 亚洲 欧美 变态 另类 综合| 精品夜夜嗨av一区二区三区| 少妇熟女一区二区| 精品国模一区二区三区欧美| x99av成人免费| 国产情侣一区二区| 一区二区日韩电影| 欧美激情 亚洲| 一二三区精品| 日韩精品极品视频在线观看免费| 伊人久久高清| 久久综合国产精品台湾中文娱乐网| 国产口爆吞精一区二区| 亚洲综合精品久久| 国产精品亚洲一区二区无码| 国产精品一区毛片| 欧美一区二区三区在线免费观看 | 国产免费成人av| 日本最新在线视频| 日韩免费高清视频| 日韩三级免费看| 国产欧美日韩在线| 亚洲黄色片免费| 亚洲一级影院| 日韩精品另类天天更新| 成人在线日韩| 性色av一区二区三区红粉影视| 成人在线二区| 精品久久五月天| 国产一级淫片a视频免费观看| 国产精品免费视频观看| 中文字幕一二三| 久久九九精品| 手机在线视频你懂的| 国产欧美啪啪| 国产欧美日韩丝袜精品一区| 黑人极品ⅴideos精品欧美棵| 亚洲人午夜精品| 国产suv一区二区| 日韩欧美综合在线视频| 国精产品一区一区二区三区mba| 成人激情综合网站| 黄色手机在线视频| 99成人免费视频| 在线观看欧美亚洲| 日韩大尺度在线观看| 91精品视频免费看| 成人香蕉视频| 欧美激情一级精品国产| 97电影在线看视频| 亚洲精品国产精品国自产观看浪潮| 中文在线资源天堂| 狠狠久久亚洲欧美专区| 欧美一级特黄高清视频| 久久久亚洲高清| 最新日本中文字幕| 精品一区二区av| 国产免费人做人爱午夜视频| 黑人一区二区三区四区五区| 亚洲精品乱码视频| 天天躁日日躁成人字幕aⅴ| 51国偷自产一区二区三区| 国产精品久久亚洲不卡| 国语自产精品视频在线看| 成人国产免费电影| 最近2019年日本中文免费字幕| 午夜国产在线观看| 精品少妇一区二区三区日产乱码| 在线免费观看视频网站| 欧美午夜精品久久久久久浪潮| 激情视频在线播放| 《视频一区视频二区| 娇妻被老王脔到高潮失禁视频| 91在线码无精品| 日本道中文字幕| 国产高清精品久久久久| 中文字幕第17页| 免费看欧美女人艹b| 国产福利一区视频| 美日韩精品视频| 无码aⅴ精品一区二区三区浪潮| 亚洲精品男同| 青春草国产视频| 国产精品porn| 国产片侵犯亲女视频播放| 欧美在线黄色| 一级黄色片播放| 亚洲综合中文| 强伦女教师2:伦理在线观看| 91亚洲国产成人久久精品| 日韩欧美三级电影| 成人羞羞动漫| 亚洲在线视频一区二区| 精品视频亚洲| 亚洲乱码国产乱码精品天美传媒| 成人中文视频| 超碰成人在线免费观看| 久久久久电影| 精品无码av无码免费专区| 欧美日韩国产一区精品一区| 激情小视频网站| 最新国产乱人伦偷精品免费网站| 精品少妇在线视频| 一区二区三区福利| 成人免费观看毛片| 日本一区中文字幕| 潘金莲激情呻吟欲求不满视频| 狠狠色丁香久久婷婷综合丁香| 小早川怜子一区二区三区| 国产一区二区0| 99久久久无码国产精品性波多 | 国产一区二区三区四区五区加勒比| 激情视频极品美女日韩| 鲁鲁视频www一区二区| 国产麻豆一区二区三区精品视频| 四虎永久国产精品| 国产精品黑丝在线播放| 国产欧美久久久久| 久久亚洲影院| 中文字幕亚洲影院| 成人的网站免费观看| japanese中文字幕| 一区在线中文字幕| 97免费在线观看视频| 欧洲视频一区二区| 国产富婆一级全黄大片| 日韩精品免费视频| 毛片网站在线免费观看| 欧美精品福利在线| 国产黄色精品| 国产精品久久亚洲| 精品一区二区三区中文字幕老牛| 日韩精品福利片午夜免费观看| 日韩午夜av在线| 久久国产这里只有精品| 成人精品一区二区三区四区| 魔女鞋交玉足榨精调教| 综合久久久久久| 欧美在线观看不卡| 91精品国产综合久久久久久久 | 黄色免费观看视频网站| 久久精品99国产国产精| 99久久人妻精品免费二区| 国产精品乱人伦一区二区| 国产精品99无码一区二区| 欧美在线不卡视频| 日本加勒比一区| 久久天天躁狠狠躁夜夜av| 手机在线观看av| 91嫩草免费看| 精品视频亚洲| 水蜜桃色314在线观看| 精品一区二区久久久| 日本xxx在线播放| 亚洲午夜在线视频| 97免费观看视频| 亚洲欧美变态国产另类| 欧美寡妇性猛交xxx免费| 成人国内精品久久久久一区| 亚洲动漫在线观看| 搞av.com| 高清不卡一区二区| 精品国产视频在线观看| 在线国产电影不卡| 亚洲av成人精品日韩在线播放| 九九热视频这里只有精品| 色诱色偷偷久久综合| 日韩高清av| 久久精品中文| free性中国hd国语露脸| 亚洲国产另类av| 精品国产无码AV| 色偷偷91综合久久噜噜| 日本精品在线一区| 欧美一区二区三区四区在线观看地址| 亚洲美女少妇无套啪啪呻吟| 午夜诱惑痒痒网| 专区另类欧美日韩| 国产一区二区在线播放视频| 在线观看中文字幕亚洲| 性欧美videohd高精| 欧美极品一区| 免费日韩av片| 亚洲一区二区三区蜜桃| 日韩欧美成人精品| 亚洲人在线观看视频| 欧美一区视频在线| 日韩成人av在线资源| 日本a级片免费观看| 91麻豆国产福利在线观看| av大片在线免费观看| 日韩av最新在线| 范冰冰一级做a爰片久久毛片| 久久精品女人的天堂av| 亚洲深夜福利| 波多野结衣办公室33分钟| 色综合久久88色综合天天免费| 水莓100在线视频| 国产91免费看片| 日韩国产欧美一区二区| 国产精品v日韩精品v在线观看| 亚洲欧洲av另类| 国产99对白在线播放| 久久乐国产精品| 伊人久久综合影院| 男人添女人下面免费视频| 亚洲天堂成人网| 日韩有码第一页| 欧美在线www| 日韩一区二区在线免费| 国产精品igao网网址不卡| 亚洲第一成年网| 蜜桃视频在线观看网站| 国产精品亚洲网站| 中文字幕免费一区二区三区| 亚洲欧美日韩色| 色8久久精品久久久久久蜜| 色网站免费在线观看| 99国产视频| 久久国产毛片| 久久精品亚洲a| 精品国产亚洲在线| 成人香蕉视频| 欧美a级黄色大片| 99精品欧美一区二区蜜桃免费| 超碰在线97观看| 美日韩在线视频| 蜜桃精品wwwmitaows| 国产aⅴ爽av久久久久| 亚洲第一狼人社区| 国产二区视频在线观看| 97久久人人超碰caoprom欧美| 99热这里只有成人精品国产| 国产亚洲精品精品精品| 精品美女一区二区| 亚洲日本网址| av在线免费观看国产| 欧美激情一区三区| 噜噜噜久久,亚洲精品国产品| 日韩av三级在线观看| 欧美福利一区| 一区二区三区伦理片| 日韩精品最新网址| 日本一区二区三区视频在线| 亚洲精品蜜桃久久久久久| 亚洲国产高清在线观看视频|