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

16 圖 | 深入理解 Spring Cloud Gateway 的原理

開發 前端
在 PassJava 項目中,我用到了 Spring Cloud Gateway 作為 API 網關,客戶端的所有的請求都是先經過網關,然后再轉發到會員微服務、題目微服務等。

你好,我是悟空。

本篇給大家帶來的是微服務框架中非常重要的一個組件:API 網關。

圖片

前言

在 PassJava 項目中,我用到了 Spring Cloud Gateway 作為 API 網關,客戶端的所有的請求都是先經過網關,然后再轉發到會員微服務、題目微服務等。

比如 API 網關和會員微服務對應的訪問地址如下:

API 網關地址:http://localhost:8060

會員微服務地址:http://localhost:14000

客戶端請求都是訪問的 API 網關,然后網關轉發到會員微服務,客戶端無需知道會員微服務的地址。

本篇將會以 PassJava 作為案例進行講解。

PassJava 開源地址:https://github.com/Jackson0714/PassJava-Platform

為什么需要 API 網關

在 SpringBoot 單體架構中,一般只有一個后端服務,如下圖所示:

圖片

單體架構訪問示例圖

但是在 SpringCloud 微服務架構中,往往有多個微服務,這些微服務可能部署在不同的機器上,而且一個微服務可能會擴容成多個相同的微服務,組成微服務集群。

圖片

微服務架構訪問示例圖

這種情況下,會存在如下問題:

  • 如果需要添加鑒權功能,則需要對每個微服務進行改造。
  • 如果需要對流量進行控制,則需要對每個微服務進行改造。
  • 跨域問題,需要對每個微服務進行改造。
  • 存在安全問題,每個微服務需要暴露自己的 Endpoint 給客戶端。Endpoint 就是服務的訪問地址 + 端口。比如下面的地址:
http://order.passjava.cn:8000
  • 灰度發布、動態路由需要對每個微服務進行改造。

這個問題的痛點是各個微服務都是一個入口,有沒有辦法統一入口呢?

解決這個問題的方式就是在客戶端和服務器之間加個中間商就好了呀,只有中間商一個入口,這個中間商就是網關。

還有一個細節問題:多個微服務之間是如何通信的?這就要用到遠程調用組件了,比如 OpenFeign。但是服務之間的調用是需要知道對方的 Endpoint 的,如果一個服務有多個微服務,就需要通過負載均衡組件進行流量分發。那微服務之間不就暴露 Endpoint 了嗎?這個沒有問題,畢竟只是后端服務知道,外界是不知道的。

圖片

為了幫助大家更容易理解網關的作用,這里有個網關、客戶端、微服務的三方通話。

網關對話

網關:客戶端你好,你現在可以只跟我通信了,我可以將你本來想發給微服務的流量進行轉發,微服務處理完之后,將結果返回給我,我再給你。

客戶端:你沒有賺差價吧?

API 網關:我可能會加些請求頭、做下認證、鑒權、限流等。

客戶端:微服務不是自己可以做嗎?

API 網關:但是每個微服務都得自己加,這就很麻煩了,都交給我就好了。

微服務:網關你好,你會為我保密我的地址對嗎?

API 網關:當然,我給客戶端看的是我自己的地址,客戶端不需要知道你的地址,只需要知道你的 API 是哪個就行,剩下的交給我來轉發給你。

API 網關選型對比

業界比較出名的網關:Spring Cloud Gateway、Netflix Zuul、Nginx、Kong、Alibaba Tengine。

作為 Spring Cloud 全家桶中的一款組件,當然選擇 Spring Cloud Gateway 了。

最開始 Spring Cloud 推薦的網關是 Netflix Zuul 1.x,但是停止維護了,后來又有 Zuul 2.0,但是因為開發延期比較嚴重,Spring Cloud 官方自己開發了 Spring Cloud Gateway 網關組件,用于代替 Zuul 網關。

所以本篇我們只會講解 Spring Cloud Gateway 網關組件。

Spring Cloud Gateway 的工作流程

Gateway 的工作流程如下圖所示:

圖片

① 路由判斷;客戶端的請求到達網關后,先經過 Gateway Handler Mapping 處理,這里面會做斷言(Predicate)判斷,看下符合哪個路由規則,這個路由映射后端的某個服務。

② 請求過濾:然后請求到達 Gateway Web Handler,這里面有很多過濾器,組成過濾器鏈(Filter Chain),這些過濾器可以對請求進行攔截和修改,比如添加請求頭、參數校驗等等,有點像凈化污水。然后將請求轉發到實際的后端服務。這些過濾器邏輯上可以稱作 Pre-Filters,Pre 可以理解為“在...之前”。

③ 服務處理:后端服務會對請求進行處理。

④ 響應過濾:后端處理完結果后,返回給 Gateway 的過濾器再次做處理,邏輯上可以稱作 Post-Filters,Post 可以理解為“在...之后”。

⑤ 響應返回:響應經過過濾處理后,返回給客戶端。

小結:客戶端的請求先通過匹配規則找到合適的路由,就能映射到具體的服務。然后請求經過過濾器處理后轉發給具體的服務,服務處理后,再次經過過濾器處理,最后返回給客戶端。

Spring Cloud Gateway 的斷言

斷言(Predicate)這個詞聽起來極其深奧,它是一種編程術語,我們生活中根本就不會用它。說白了它就是對一個表達式進行 if 判斷,結果為真或假,如果為真則做這件事,否則做那件事。

在 Gateway 中,如果客戶端發送的請求滿足了斷言的條件,則映射到指定的路由器,就能轉發到指定的服務上進行處理。

斷言配置的示例如下,配置了兩個路由規則,有一個 predicates 斷言配置,當請求 url 中包含 api/thirdparty,就匹配到了第一個路由 route_thirdparty。(代碼示例來自我的開源項目 PassJava)。

圖片

圖片斷言配置

接下來我們看下 Route 路由和 Predicate 斷言的對應關系:

圖片

斷言和路由的對應關系原理圖

  • 一對多:一個路由規則可以包含多個斷言。如上圖中路由 Route1 配置了三個斷言 Predicate。
  • 同時滿足:如果一個路由規則中有多個斷言,則需要同時滿足才能匹配。如上圖中路由 Route2 配置了兩個斷言,客戶端發送的請求必須同時滿足這兩個斷言,才能匹配路由 Route2。
  • 第一個匹配成功:如果一個請求可以匹配多個路由,則映射第一個匹配成功的路由。如上圖所示,客戶端發送的請求滿足 Route3 和 Route4 的斷言,但是 Route3 的配置在配置文件中靠前,所以只會匹配 Route3。

常見的 Predicate 斷言配置如下所示,假設匹配路由成功后,轉發到 http://localhost:9001

圖片

圖片常見的 Predicate 斷言配置

代碼演示

下面演示 Gateway 中通過斷言來匹配路由的例子。

  • 新建一個 Maven 工程,引入 Gateway 依賴。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
  • 新建 application.yml 文件,添加 Gateway 的路由規則。
spring:
cloud:
gateway:
routes:
- id: route_qq
uri: http://www.qq.com
predicates:
- Query=url,qq
- id: route_baidu
uri: http://www.baidu.com
predicates:
- Query=url,baidu
server:
port: 8060

第一條路由規則:斷言為 Query=url,qq,表示當請求路徑中包含 url=qq,則跳轉到http://www.qq.com

第二條路由規則:當請求路徑中包含 url=baidu,則跳轉到http://www.baidu.com

Spring Cloud Gateway 動態路由

在微服務架構中,我們不會直接通過 IP + 端口的方式訪問微服務,而是通過服務名的方式來訪問。如下圖所示,微服務中加入了注冊中心,多個微服務將自己注冊到了注冊中心,這樣注冊中心就保存了服務名和 IP+端口的映射關系。

圖片

圖片微服務注冊到注冊中心

接下來我們來看下加入 Gateway 后,請求是如何進行轉發的。

客戶端先將請求發送給 Nginx,然后轉發到網關,網關經過斷言匹配到一個路由后,將請求轉發給指定 uri,這個 uri 可以配置成 微服務的名字,比如 passjava-member。

那么這個服務名具體要轉發到哪個 IP 地址和端口上呢?這個就依賴注冊中心的注冊表了,Gateway 從注冊中心拉取注冊表,就能知道服務名對應具體的 IP + 端口,如果一個服務部署了多臺機器,則還可以通過負載均衡進行請求的轉發。原理如下圖所示:

圖片

網關+注冊中心

對應的配置為 uri 字段如下所示:

圖片

圖片uri: lb://passjava-question,表示將請求轉發給 passjava-question 微服務,且支持負載均衡。lb 是 loadbalance(負載均衡) 單詞的縮寫。

那什么叫動態路由呢?

當 passjava-question 服務添加一個微服務,或者 IP 地址更換了,Gateway 都是可以感知到的,但是配置是不需要更新的。這里的動態指的是微服務的集群個數、IP 和端口是動態可變的。

代碼示例

案例:調用 OSS 第三方服務,上傳文件到 OSS。(基于 PassJava 項目)

前提:前端頁面配置的統一訪問路徑是網關的地址:http://localhost:8060/api/,OSS 服務對應的地址是http://localhost:14000。

期望結果:將前端請求

http://localhost:8060/api/thirdparty/v1/admin/oss/getPolicy

轉發到 OSS 服務。

http://localhost:14000/thirdparty/v1/admin/oss/getPolicy

配置網關:

spring:
cloud:
gateway:
routes:
- id: route_thirdparty # 第三方微服務路由規則
uri: lb://passjava-thirdparty # 負載均衡,將請求轉發到注冊中心注冊的 passjava-thirdparty 服務
predicates: # 斷言
- Path=/api/thirdparty/** # 如果前端請求路徑包含 api/thirdparty,則應用這條路由規則
filters: #過濾器
- RewritePath=/api/(?<segment>.*),/$\{segment} # 將跳轉路徑中包含的api替換成空

測試上傳文件成功。

圖片

圖片

接下來我們看下 Gateway 非常重要且核心的功能:過濾器。

Spring Cloud Gateway 的過濾器

網關,顧名思義,就是網絡中的一道關卡,可以統一對請求和響應進行一些操作。

過濾器 Filter 的分類

過濾器 Filter 按照請求和響應可以分為兩種:Pre 類型和 Post 類型。

Pre 類型:在請求被轉發到微服務之前,對請求進行攔截和修改,例如參數校驗、權限校驗、流量監控、日志輸出以及協議轉換等操作。

Post 類型:微服務處理完請求后,返回響應給網關,網關可以再次進行處理,例如修改響應內容或響應頭、日志輸出、流量監控等。

另外一種分類是按照過濾器 Filter 作用的范圍進行劃分:

GlobalFilter:全局過濾器,應用在所有路由上的過濾器。

局部過濾器

GatewayFilter:局部過濾器,應用在單個路由或一組路由上的過濾器。標紅色表示比較常用的過濾器。

整理了一份 27 種自帶的 GatwayFilter 過濾器。

圖片

具體怎么用呢,這里有個示例,如果 URL 匹配成功,則去掉 URL 中的 “api”。

filters: #過濾器
- RewritePath=/api/(?<segment>.*),/$\{segment} # 將跳轉路徑中包含的 “api” 替換成空

當然我們也可以自定義過濾器,本篇不做展開。

全局過濾器

整理了一份全局過濾器的表格,具體用法可以參照官方文檔。

官方文檔:https://cloud.spring.io/spring-cloud-static/Greenwich.SR2/single/spring-cloud.html#_global_filters

圖片

全局過濾器最常見的用法是進行負載均衡。配置如下所示:

spring:
cloud:
gateway:
routes:
- id: route_member # 第三方微服務路由規則
uri: lb://passjava-member # 負載均衡,將請求轉發到注冊中心注冊的 passjava-member 服務
predicates: # 斷言
- Path=/api/member/** # 如果前端請求路徑包含 api/member,則應用這條路由規則
filters: #過濾器
- RewritePath=/api/(?<segment>.*),/$\{segment} # 將跳轉路徑中包含的api替換成空

這里有個關鍵字 lb,用到了全局過濾器 LoadBalancerClientFilter,當匹配到這個路由后,會將請求轉發到 passjava-member 服務,且支持負載均衡轉發,也就是先將 passjava-member 解析成實際的微服務的 host 和 port,然后再轉發給實際的微服務。

實現簡單的 token 認證

在用 Gateway 做登錄認證的時候,通常需要我們自定義一個過濾器做登錄認證。

比如客戶端登錄時,將用戶名和密碼發送給網關,網關轉發給認證服務器后,如果賬號密碼正確,則拿到一個 JWT token,然后客戶端再訪問應用服務時,先將請求發送給網關,網關統一做 JWT 認證,如果 JWT 符合條件,再將請求轉發給應用服務。

原理如下圖所示,紅色框框的部分就是待會我要演示的部分。

圖片

案例演示

下面做一個簡單的認證實例。客戶端攜帶 token 訪問 member 服務,網關會先校驗 token 的合法性,驗證規則如下:

當請求的 header 中包含 token,且 token = admin,則認證通過。

當驗證通過后,就會將請求轉發給 member 服務。

代碼示例

先定義一個全局過濾器,驗證 token 的合法性。

@Component
public class GlobalLoginFilter implements GlobalFilter, Ordered {

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request= exchange.getRequest();
String token = request.getHeaders().getFirst("token");
if(!StringUtils.isEmpty(token)){
if("admin".equals(token)){
return chain.filter(exchange);
}
}
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();
}

@Override
public int getOrder() {
return 0;
}
}
  • 測試 token 不正確的場景。

先測試在 header 中添加 token=123,響應結果為 401  Unauthorized,沒有權限。

圖片

  • 測試 token 正確的場景。

然后測試在 header 中添加 token=admin,正常返回響應數據。


圖片


責任編輯:武曉燕 來源: 悟空聊架構
相關推薦

2021-03-10 10:55:51

SpringJava代碼

2022-08-22 08:04:25

Spring事務Atomicity

2022-01-14 12:28:18

架構OpenFeign遠程

2022-11-04 09:43:05

Java線程

2022-09-05 08:39:04

kubernetesk8s

2024-03-12 00:00:00

Sora技術數據

2024-11-01 08:57:07

2020-08-10 18:03:54

Cache存儲器CPU

2024-04-15 00:00:00

技術Attention架構

2020-03-18 13:40:03

Spring事數據庫代碼

2023-06-07 15:34:21

架構層次結構

2021-05-27 11:30:54

SynchronizeJava代碼

2020-03-26 16:40:07

MySQL索引數據庫

2023-09-19 22:47:39

Java內存

2022-09-26 08:01:31

線程LIFO操作方式

2019-07-01 13:34:22

vue系統數據

2020-03-17 08:36:22

數據庫存儲Mysql

2022-09-05 22:22:00

Stream操作對象

2020-11-04 15:35:13

Golang內存程序員

2023-10-13 13:30:00

MySQL鎖機制
點贊
收藏

51CTO技術棧公眾號

成人观看高清在线观看免费| 精品三级av在线| 日本一区二区三区www| 久久久久久亚洲av无码专区| 欧美日韩国产高清电影| 制服丝袜在线91| 无码专区aaaaaa免费视频| 黄色av免费在线观看| 精品一区二区免费在线观看| 欧美精品18videosex性欧美| 日韩视频在线观看免费视频| 精品一区二区三区中文字幕在线| 精品动漫一区二区| 亚洲.欧美.日本.国产综合在线| 国产乱码精品一区二三区蜜臂 | 国产亚洲精品成人| 国产传媒欧美日韩成人精品大片| 91精选在线观看| 99久久久无码国产精品6| 国产福利视频在线观看| 久久人人97超碰com| 91亚洲永久免费精品| 草莓视频18免费观看| 狠狠噜噜久久| www.欧美三级电影.com| 可以直接看的无码av| 精品国产欧美| 欧洲在线/亚洲| 精品国偷自产一区二区三区| 欧美尤物美女在线| 国产色一区二区| 国语精品免费视频| 精品国产99久久久久久宅男i| 欧美专区在线| 国外成人在线直播| 欧美日韩精品亚洲精品| 日韩三级在线| 亚洲一级黄色片| 日本少妇xxxx| 国产精品毛片av| 日韩午夜av一区| 亚洲网中文字幕| 国产69精品久久久久按摩| 欧美视频在线观看 亚洲欧| 精品无码av无码免费专区| 91露出在线| 国产视频一区二区在线观看| 精品在线视频一区二区| 欧美一区二不卡视频| 国产美女精品一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美激情欧美激情| 91在线播放观看| 91精品啪在线观看国产18| 最近中文字幕日韩精品| www成人啪啪18软件| 国产麻豆一区二区三区精品视频| 亚洲精品自在久久| 青青草福利视频| 美女毛片一区二区三区四区最新中文字幕亚洲| 精品国产免费人成在线观看| 国产乱淫av麻豆国产免费| 日韩免费一级| 亚洲国产精品久久精品怡红院| 国产亚洲精品成人a| 成人在线视频中文字幕| 精品久久五月天| 日本少妇xxxx| 国产乱码精品一区二区亚洲| 国产亚洲精品久久久优势| 亚洲av无码国产精品麻豆天美| 国产一区二区三区91| 最新69国产成人精品视频免费| 99自拍偷拍视频| 国产二区精品| 美女性感视频久久久| 免费又黄又爽又色的视频| 亚洲第一区色| 欧美自拍视频在线| 自拍偷拍精品视频| 国产精品一区二区在线播放 | 18欧美亚洲精品| 特级毛片在线免费观看| 国产激情在线观看| 亚洲18色成人| 天堂在线资源视频| 国产精品一区三区在线观看| 亚洲国产私拍精品国模在线观看| 丰满少妇一区二区| 99re6这里只有精品| 欧美激情亚洲精品| 久草视频一区二区| 精品一区二区av| 国产精品麻豆免费版| 涩爱av在线播放一区二区| 国产精品你懂的在线| 草草草视频在线观看| 人人草在线视频| 欧美日韩国产成人在线91| 久久久久久国产精品日本| 婷婷成人在线| 免费不卡欧美自拍视频| 国产在线观看黄色| 国产精选一区二区三区| 精品一区久久久久久| 日本高清中文字幕在线| 亚洲成人精品影院| 可以看污的网站| 日韩欧美在线精品| 美女扒开尿口让男人操亚洲视频网站| 美日韩一二三区| 国产综合久久久久久鬼色| 精品无人乱码一区二区三区的优势| 成人高清免费观看mv| 亚洲午夜久久久久| 999这里有精品| 亚洲福利天堂| 久久久在线免费观看| 在线不卡免费视频| 久久婷婷久久一区二区三区| 欧美这里只有精品| www一区二区三区| 亚洲午夜性刺激影院| 国产在线欧美在线| 韩国欧美国产1区| 亚洲精品国产精品国自产| 国产不卡123| 欧美大肚乱孕交hd孕妇| 青青操在线播放| 日韩高清一级片| 免费看成人av| 成年人在线网站| 欧美zozozo| 免费看一级大片| 另类中文字幕网| 日韩av高清| 欧美性xxx| 亚洲精品自产拍| 久草国产精品视频| 成人爱爱电影网址| 欧美成人a∨高清免费观看| 人人妻人人藻人人爽欧美一区| 欧美私人啪啪vps| 91久久精品国产91久久| av在线资源站| 在线视频综合导航| 色婷婷在线影院| 蘑菇福利视频一区播放| 精品国产_亚洲人成在线| 成全电影大全在线观看| 精品少妇一区二区三区| 欧美爱爱小视频| 国产福利精品导航| 日韩视频 中文字幕| 精品视频一区二区三区在线观看| 欧美成人免费全部观看天天性色| 国产又粗又猛视频| 亚洲欧美中日韩| 奇米777在线| 狠狠噜噜久久| 国产精品久久久久久久久动漫| 国产女教师bbwbbwbbw| 日韩第一区第二区| 欧美精品久久久久久久久| 黑人精品一区二区三区| 欧美日韩免费在线观看| 久久精品国产亚洲AV熟女| 奇米亚洲午夜久久精品| 青青草原国产免费| 成人h动漫免费观看网站| 91精品国产成人www| 嫩草研究院在线观看| 欧美性色综合网| 日韩在线中文字幕视频| 成人午夜视频在线观看| 欧美日韩亚洲一| 成人免费看片39| 亚洲专区国产精品| 在线观看特色大片免费视频| 在线播放日韩av| 一区二区视频免费| 亚洲一区二区av电影| 熟妇高潮精品一区二区三区| 日韩av电影免费观看高清完整版| 一区二区高清视频| 91蜜桃臀久久一区二区| 97在线日本国产| 可以直接在线观看的av| 欧美性极品xxxx做受| 国产午夜精品久久久久久久久| 精品一区免费av| 中文字幕日韩精品无码内射| 中文字幕一区二区三区中文字幕 | 亚洲一二三四五| 亚洲午夜一级| 欧美精品一区二区三区在线四季| 日韩制服诱惑| 欧美国产日韩一区二区三区| 日本韩国免费观看| 欧美日韩精品三区| 精品亚洲永久免费| 久久精品日韩一区二区三区| 日本77777| 久久久久久黄| 国产三级中文字幕| 尤物tv在线精品| 亚洲一区二区免费在线| 丁香花在线影院| 国产亚洲精品一区二555| 精品人妻一区二区三区蜜桃| 一本色道久久综合亚洲aⅴ蜜桃| 九九热只有精品| 91女人视频在线观看| 在线播放免费视频| 嫩草成人www欧美| 最新av网址在线观看| 国产欧美日韩免费观看| 97免费资源站| 高清av一区二区三区| 欧美裸身视频免费观看| 天堂av电影在线观看| 日韩欧美国产一二三区| 波多野结衣视频网址| 亚洲一区二区三区小说| 中文字幕第20页| 91丨porny丨国产| 久久aaaa片一区二区| 奇米影视一区二区三区| 久久免费看毛片| 欧美日韩水蜜桃| 久久精品综合一区| 亚洲精品v亚洲精品v日韩精品| 国产91在线播放九色快色| 欧美少妇网站| 久久久久免费精品国产| 含羞草www国产在线视频| 日韩成人性视频| 黄色三级网站在线观看| 欧美一区二区精品在线| 国产美女www| 无码av免费一区二区三区试看| 日韩av一二三区| 亚洲综合免费观看高清完整版| a级大片在线观看| www国产亚洲精品久久麻豆| 亚洲成人福利视频| 国产一区二区三区精品视频| 肉色超薄丝袜脚交| 日本不卡视频一二三区| 国产一区视频免费观看| 亚洲少妇诱惑| 又色又爽又高潮免费视频国产| av不卡免费看| 日韩一二区视频| 欧美粗暴jizz性欧美20| 乱子伦一区二区| 91亚洲成人| 特色特色大片在线| 亚洲乱码电影| 日本成人在线不卡| 亚洲激情专区| 高清在线观看免费| 新67194成人永久网站| 国产免费一区二区三区视频| 日韩国产在线一| 一路向西2在线观看| 免费成人在线观看视频| 亚洲黄色av片| 国产精品一色哟哟哟| 欧美日韩一区二区区别是什么 | 亚洲人成网站影音先锋播放| 日韩一卡二卡在线观看| 亚洲欧洲成人自拍| 欧美成人精品激情在线视频| 亚洲va韩国va欧美va精品| 免费一级特黄特色大片| 五月综合激情日本mⅴ| 91视频免费网址| 欧美日韩成人在线一区| av在线免费在线观看| 欧美大黄免费观看| 精品乱码一区二区三四区视频| 中文精品99久久国产香蕉| 国产在线1区| 欧美夫妻性生活视频| 丝袜美腿一区| 国产裸体写真av一区二区| 国产电影一区| 欧美一区二视频在线免费观看| 热久久天天拍国产| 久久久久久久久影视| 亚洲国产国产亚洲一二三| 那种视频在线观看| 九色porny丨国产精品| 91精产国品一二三| 国产欧美一区二区精品性色| 少妇人妻丰满做爰xxx| 亚洲福中文字幕伊人影院| 依依成人综合网| 日韩欧美国产三级| 欧美男男激情freegay| 深夜成人在线观看| 伊人久久在线| 亚洲影院高清在线| 亚洲最好看的视频| 午夜欧美性电影| 国产精品社区| 深爱五月综合网| 久久久精品tv| 日韩污视频在线观看| 欧美日韩国产三级| 久久这里精品| 色综合老司机第九色激情| 亚洲mmav| 欧美13一14另类| 欧美激情在线| 我看黄色一级片| 久久久亚洲欧洲日产国码αv| 欧美丰满熟妇bbbbbb| 一本久久a久久免费精品不卡| 丰满少妇在线观看bd| 中文字幕久久久| 欧美人与牲禽动交com| 国产91网红主播在线观看| 51亚洲精品| 中文字幕在线亚洲三区| 久久性天堂网| 在线精品一区二区三区| 亚洲精品成人悠悠色影视| 看黄色一级大片| 亚洲网站在线播放| xxxcom在线观看| 亚洲自拍小视频| 国产区精品区| 国产成人无码精品久久久性色| 国产999精品久久久久久 | 亚洲高清不卡在线观看| 国产免费黄色网址| 亚洲精品国产精品乱码不99按摩| 婷婷成人激情| 日韩美女中文字幕| 国产精品嫩草影院在线看| 亚洲中文字幕无码专区| 国产成人精品亚洲午夜麻豆| avove在线播放| 3d动漫精品啪啪1区2区免费| 麻豆影视在线| 国产欧美精品一区二区| 欧美精品尤物在线观看| 日韩欧美一区三区| 91丨porny丨最新| 黄色片免费观看视频| 欧美精品一区二区三区久久久| 金瓶狂野欧美性猛交xxxx| 999热视频| 在线国产一区| 在线免费看黄色片| 天天影视色香欲综合网老头| 秋霞av鲁丝片一区二区| 久久久爽爽爽美女图片| 国产精品流白浆在线观看| 国产av第一区| 国产精品中文字幕欧美| 欧美精品99久久久| 亚洲成人免费网站| 蜜桃在线视频| 欧美日本国产精品| 老司机午夜精品视频| 一级黄色片网址| 欧美日韩成人在线| 1区2区3区在线| 久久99精品久久久久久秒播放器| 亚洲黄色天堂| 国产肥白大熟妇bbbb视频| 色国产精品一区在线观看| 日韩精品系列| 国产美女精品视频免费观看| 日韩欧美精品| 午夜免费福利视频在线观看| 亚洲精品ww久久久久久p站| 亚洲国产日韩在线观看| 性色av一区二区三区| 免费国产自久久久久三四区久久| www.色偷偷.com| 亚洲精品日韩专区silk| 人妻无码中文字幕| 奇门遁甲1982国语版免费观看高清 | 色美美综合视频| 日本在线人成| 精品乱码一区二区三区| 丝袜亚洲另类丝袜在线| 亚洲精品天堂网| 亚洲福利视频网| 本网站久久精品| 欧美做受777cos| 久久久不卡网国产精品一区| 国产精品热久久| 久久免费福利视频| 国产精品精品| 99久久免费看精品国产一区|