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

高性能網關設計實踐

網絡 通信技術
通過對網關設計的介紹來簡單總結一下 OpenResty 的相關知識點,爭取讓大家對 OpenResty 這種高性能 Web 平臺有一個比較全面的了解。本文會從以下幾個方面來講解。

[[333889]]

 

本文轉載自微信公眾號「 碼海」,作者 碼海。轉載本文請聯系 碼海公眾號。

前言

通過對網關設計的介紹來簡單總結一下 OpenResty 的相關知識點,爭取讓大家對 OpenResty 這種高性能 Web 平臺有一個比較全面的了解。本文會從以下幾個方面來講解。

  • 網關的作用
  • 接入層網關架構設計與實現
  • 技術選型
  • OpenResty 原理剖析
  • 網關的作用

網關作為所有請求的流量入口,主要承擔著安全,限流,熔斷降級,監控,日志,風控,鑒權等功能,網關主要有兩種類型

  • 一種是接入層網關(access gateway),主要負責路由,WAF(防止SQL Injection, XSS, 路徑遍歷, 竊取敏感數據,CC攻擊等),限流,日志,緩存等,這一層的網關主要承載著將請求路由到各個應用層網關的功能
  • 另一種是應用層網關,比如現在流行的微服務,各個服務可能是用不同的語言寫的,如 PHP,Java 等,那么接入層就要將請求路由到相應的應用層集群,再由相應的應用層網關進行鑒權等處理,處理完之后再調用相應的微服務進行處理,應用層網關也起著路由,超時,重試,熔斷等功能。

目前市面上比較流行的系統架構如下

可以看到接入層網關承載著公司的所有流量,對性能有很高的要求,它的設計決定著整個系統的上限。所以我們今天主要談談接入層網關的設計。

接入層網關架構設計與實現

首先我們要明白接入層網關的核心功能是:「根據路由規則將請求分發到對應的后端集群」,所以要實現如下幾個功能模型 。

1、 路由:根據請求的 host, url 等規則轉發到指定的上游(相應的后端集群) 2、 路由策略插件化:這是網關的「靈魂所在」,路由中會有身份認證,限流限速,安全防護(如 IP 黑名單,refer異常,UA異常,需第一時間拒絕)等規則,這些規則以插件的形式互相組合起來以便只對某一類的請求生效,每個插件都即插即用,互不影響,這些插件應該是「動態可配置」的,動態生效的(無須重啟服務),為啥要可動態可配置呢,因為每個請求對應的路由邏輯,限流規則,最終請求的后端集群等規則是不一樣的

如圖示,兩個請求對應的路由規則是不一樣的,它們對應的路由規則(限流,rewrite)等通過各個規則插件組合在一起,可以看到,光兩個請求 url 的路由規則就有挺多的,如果一個系統大到一定程度,url 會有不少,就會有不少規則,這樣每個請求的規則就必須「可配置化」,「動態化」,最好能在管理端集中控制,統一下發。

3、后端集群的動態變更

路由規則的應用是為了確定某一類請求經過這些規則后最終到達哪一個集群,而我們知道請求肯定是要打到某一臺集群的 ip 上的,而機器的擴縮容其實是比較常見的,所以必須支持動態變更,總不能我每次上下線機器的時候都要重啟系統讓它生效吧。

4、監控統計,請求量、錯誤率統計等等

這個比較好理解,在接入層作所有流量的請求,錯誤統計,便于打點,告警,分析。

要實現這些需求就必須對我們采用的技術:OpenResty 有比較詳細的了解,所以下文會簡單介紹一下 OpenResty 的知識點。

技術選型

有人可能第一眼想到用 Nginx,沒錯,由于 Nginx 采用了 epoll 模型(非阻塞 IO 模型),確實能滿足大多數場景的需求(經過優化 100 w + 的并發數不是問題),但是 Nginx 更適合作為靜態的 Web 服務器,因為對于 Nginx 來說,如果發生任何變化,都需要修改磁盤上的配置,然后重新加載才能生效,它并沒有提供 API 來控制運行時的行為,而如上文所述,動態化是接入層網關非常重要的一個功能。所以經過一番調研,我們選擇了 OpenResty,啥是 OpenResty 呢,來看下官網的定義:

?

OpenResty? 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用于方便地搭建能夠處理超高并發、擴展性極高的動態 Web 應用、Web 服務和動態網關。OpenResty? 的目標是讓你的Web服務直接跑在 Nginx 服務內部,充分利用 Nginx 的非阻塞 I/O 模型,不僅僅對 HTTP 客戶端請求,甚至于對遠程后端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進行一致的高性能響應。

?

可以簡單理解為,OpenResty = Nginx + Lua, 通過 Lua 擴展 Nginx 實現的可伸縮的 Web 平臺 。它利用了 Nginx 的高性能,又在其基礎上添加了 Lua 的腳本語言來讓 Nginx 也具有了動態的特性。通過 OpenResty 中 lua-Nginx-module 模塊中提供的 Lua API,我們可以動態地控制路由、上游、SSL 證書、請求、響應等。甚至可以在不重啟 OpenResty 的前提下,修改業務的處理邏輯,并不局限于 OpenResty 提供的 Lua API。

關于靜態和動態有一個很合適的類比:如果把 Web 服務器當做是一個正在高速公路上飛馳的汽車,Nginx 需要停車才能更換輪胎,更換車漆顏色,而 OpenResty 中可以邊跑邊換輪胎,更換車漆,甚至更換發動機,直接讓普通的汽車變成超跑!

除了以上的動態性,還有兩個特性讓 OpenResty 獨出一格。

「1.詳盡的文檔和測試用例」

作為開源項目,文檔和測試毫無疑問是其是否靠譜的關鍵,它的文檔非常詳細,作者把每個注意的點都寫在文檔上了,多數時候只要看文檔即可,每一個測試案例都包含完整的 Nginx 配置和 lua 代碼。以及測試的輸入數據和預期的輸出數據。

「2.同步非阻塞」

OpenResty 在誕生之初就支持了協程,并且基于此實現了同步非阻塞的編程模型。

「畫外音:協程(coroutine)我們可以將它看成一個用戶態的線程,只不過這個線程是我們自己調度的,而且不同協程的切換不需要陷入內核態,效率比較高。(一般我們說的線程是要指內核態線程,由內核調度,需要從用戶空間陷入內核空間,相比協程,對性能會有不小的影響)」

啥是同步非阻塞呢。假設有以下兩個兩行代碼:

  1. local res, err  = query-mysql(sql) 
  2. local value, err = query-redis(key

「同步」:必須執行完查詢 mysql,才能執行下面的 redis 查詢,如果不等 mysql 執行完成就能執行 redis 則是異步。

「阻塞」:假設執行 sql 語句需要 1s,如果在這 1s 內,CPU 只能干等著不能做其它任何事,那就是阻塞,如果在 sql 執行期間可以做其他事(注意由于是同步的,所以不能執行以下的 redis 查詢),則是非阻塞。

同步關注的是語句的先后執行順序,如果上一個語句必須執行完才能執行下一個語句就是同步,如果不是,就是異步,阻塞關注的是線程是 CPU 是否需要在 IO 期間干等著,如果在 IO(或其他耗時操作期間)期間可以做其他事,那就是非阻塞,不能動,則是阻塞。

那么 OpenResty 的工作原理是怎樣的呢,又是如何實現同步非阻塞的呢。

OpenResty 原理剖析

工作原理剖析

由于 OpenResty 基于 Nginx 實現的,我們先來看看 Nginx 的工作原理

Nginx 啟動后,會有一個 master 進程和多個 worker 進程 , master 進程接受管理員的信號量(如 Nginx -s reload, -s stop)來管理 worker 進程,master 本身并不接收 client 的請求,主要由 worker 進程來接收請求,不同于 apache 的每個請求會占用一個線程,且是同步IO,Nginx 是異步非阻塞的,每個 worker 可以同時處理的請求數只受限于內存大小,這里就要簡單地了解一下 nginx 采用的 epoll 模型:

epoll 采用多路復用模型,即同一時間雖然可能會有多個請求進來, 但只會用一個線程去監視,然后哪個請求數據準備好了,就調用相應的線程去處理,就像圖中所示,如同撥開關一樣,同一時間只有一個線程在處理, Nginx 底層就是用的 epoll ,基于事件驅動模型,每個請求進來注冊事件并注冊 callback 回調函數,等數據準入好了,就調用回調函數進行處理,它是異步非阻塞的,所以性能很高。

打個簡單的比方,我們都有訂票的經驗,當我們委托酒店訂票時,接待員會先把我們的電話號碼和相關信息等記下來(注冊事件),掛斷電話后接待員在操作期間我們就可以去做其他事了(非阻塞),當接待員把手續搞好后會主動打電話給我們通知我們票訂好了(回調)。

worker 進程是從 master fork 出來的,這意味著 worker 進程之間是互相獨立的,這樣不同 worker 進程之間處理并發請求幾乎沒有同步鎖的限制,好處就是一個 worker 進程掛了,不會影響其他進程,我們一般把 worker 數量設置成和 CPU 的個數,這樣可以減少不必要的 CPU 切換,提升性能,每個 worker 都是單線程執行的。那么 LuaJIT 在 OpenResty 架構中的位置是怎樣的呢。

首先啟動的 master 進程帶有 LuaJIT 的機虛擬,而 worker 進程是從 master 進程 fork 出來的,在 worker 內進程的工作主要由 Lua 協程來完成,也就是說在同一個 worker 內的所有協程,都會共享這個 LuaJIT 虛擬機,每個 worker 進程里 lua 的執行也是在這個虛擬機中完成的。

同一個時間點,worker 進程只能處理一個用戶請求,也就是說只有一個 lua 協程在運行,那為啥 OpenResty 能支持百萬并發請求呢,這就需要了解 Lua 協程與 Nginx 事件機制是如何配合的了。

如圖示,當用 Lua 調用查詢 MySQL 或 網絡 IO 時,虛擬機會調用 Lua 協程的 yield 把自己掛起,在 Nginx 中注冊回調,此時 worker 就可以處理另外的請求了(非阻塞),等到 IO 事件處理完了, Nginx 就會調用 resume 來喚醒 lua 協程。

事實上,由 OpenResty 提供的所有 API,都是非阻塞的,下文提到的與 MySQL,Redis 等交互,都是非阻塞的,所以性能很高。

OpenResty 請求生命周期

Nginx 的每個請求有 11 個階段,OpenResty 也有11 個 *_by_lua 的指令,如下圖示:

各個階段 *_by_lua 的解釋如下

  1. set_by_lua:設置變量; 
  2. rewrite_by_lua:轉發、重定向等; 
  3. access_by_lua:準入、權限等; 
  4. content_by_lua:生成返回內容; 
  5. header_filter_by_lua:應答頭過濾處理; 
  6. body_filter_by_lua:應答體過濾處理; 
  7. log_by_lua:日志記錄。 

這樣分階段有啥好處呢,假設你原來的 API 請求都是明文的

  1. # 明文協議版本 
  2. location /request { 
  3.     content_by_lua '...';       # 處理請求 

現在需要對其加上加密和解密的機制,只需要在 access 階段解密, 在 body filter 階段加密即可,原來 content 的邏輯無需做任務改動,有效實現了代碼的解藕。

  1. # 加密協議版本 
  2. location /request { 
  3.     access_by_lua '...';        # 請求體解密 
  4.     content_by_lua '...';       # 處理請求,不需要關心通信協議 
  5.     body_filter_by_lua '...';   # 應答體加密 

再比如我們不是要要上文提到網關的核心功能之一不是要監控日志嗎,就可以統一在 log_by_lua 上報日志,不影響其他階段的邏輯。

worker 間共享數據利器: shared dict

worker 既然是互相獨立的進程,就需要考慮其共享數據的問題, OpenResty 提供了一種高效的數據結構: shared dict ,可以實現在 worker 間共享數據,shared dict 對外提供了 20 多個 Lua API,都是原子操作的,避免了高并發下的競爭問題。

路由策略插件化實現

有了以上 OpenResty 點的鋪墊,來看看上文提的網關核心功能 「路由策略插件化」,「后端集群的動態變更」如何實現

首先針對某個請求的路由策略大概是這樣的

整個插件化的步驟大致如下

1、每條策略由 url ,action, cluster 等組成,代表請求 url 在打到后端集群過程中最終經歷了哪些路由規則,這些規則統一在我們的路由管理平臺配置,存在 db 里。

2、OpenResty 啟動時,在請求的 init 階段 worker 進程會去拉取這些規則,將這些規則編譯成一個個可執行的 lua 函數,這一個個函數就對應了一條條的規則。

需要注意的是為了避免重復去 MySQL 中拉取數據,某個 worker 從 MySQL 拉取完規則(此步需要加鎖,避免所有 worker 都去拉取)或者后端集群等配置信息后要將其保存在 shared dict 中,這樣之后所有的 worker 請求只要從 shared dict 中獲取這些規則,然后將其映射成對應模塊的函數即可,如果配置規則有變動呢,配置后臺通過接口通知 OpenResty 重新加載一下即可

經過路由規則確定好每個請求對應要打的后端集群后,就需要根據 upstream 來確定最終打到哪個集群的哪臺機器上,我們看看如何動態管理集群。

后端集群的動態配置

在 Nginx 中配置 upstream 的格式如下

  1. upstream backend { 
  2.     server backend1.example.com weight=5; 
  3.     server backend2.example.com; 
  4.     server 192.0.0.1 backup; 

以上這個示例是按照權重(weight)來劃分的,6 個請求進來,5個請求打到 backend1.example.com, 1 個請求打到 backend2.example.com,如果這兩臺機器都不可用,就打到 192.0.0.1,這種靜態配置的方式 upstream 的方式確實可行,但我們知道機器的擴縮容有時候比較頻繁,如果每次機器上下線都要手動去改,并且改完之后還要重新去 reload 無疑是不可行的,出錯的概率很大,而且每次配置都要 reload 對性能的損耗也是挺大的,為了解決這個問題,OpenResty 提供了一個 dyups 的模塊來解決此問題, 它提供了一個 dyups api,可以動態增,刪,創建 upsteam,所以在 init 階段我們會先去拉取集群信息,構建 upstream,之后如果集群信息有變動,會通過如下形式調用 dyups api 來更新 upstream

  1. -- 動態配置 upstream 接口站點 
  2. server { 
  3.      listen 127.0.0.1:81; 
  4.       location / { 
  5.           dyups_interface; 
  6.      } 
  7.  
  8.  
  9. -- 增加 upstream:user_backend 
  10. curl -d "server 10.53.10.191;" 127.0.0.1:81/upstream/user_backend 
  11.  
  12. -- 刪除 upstream:user_backend 
  13. curl -i -X DELETE 127.0.0.1:81/upstream/user_backend 

網關最終架構設計圖

通過這樣的設計,最終實現了網關的配置化,動態化。

總結

網關作為承載公司所有流量的入口,對性能有著極高的要求,所以技術選型上還是要慎重,之所以選擇 OpenResty,一是因為它高性能,二是目前也有小米,阿里,騰訊等大公司在用,是久經過市場考驗的,本文通過對網關的總結簡要介紹了 OpenResty 的相關知識點,相信大家對其主要功能點應該有所了解了,不過 OpenResty 的知識點遠不止以上這些,大家如有興趣,可以參考文末的學習教程深入學習,相信大家會有不少啟發的。

 

責任編輯:武曉燕 來源: 碼海
相關推薦

2020-08-17 08:18:51

Java

2021-03-16 16:35:39

網關Java代碼

2024-10-15 16:31:30

2022-08-15 08:01:35

微服務框架RPC

2025-06-12 02:22:00

Netflix前端系統

2014-03-19 14:34:06

JQuery高性能

2024-11-20 19:56:36

2024-10-05 00:00:05

高性能分布式IM

2024-09-02 18:10:20

2018-01-12 14:37:34

Java代碼實踐

2019-05-21 09:40:47

Elasticsear高性能 API

2024-09-25 16:10:05

2021-10-18 08:28:03

Kafka架構主從架構

2024-07-05 09:41:42

2021-08-30 09:30:29

Kafka高性能設計

2024-08-20 16:00:00

2019-03-27 10:50:50

HTTP請求管線式

2015-06-01 07:02:12

云集群高性能計算

2025-10-31 10:04:05

2025-10-09 03:00:00

點贊
收藏

51CTO技術棧公眾號

国产精品色在线观看| 99综合精品| 91精品国产91热久久久做人人| 在线视频不卡国产| 国产乱子伦精品无码码专区| 国产一在线精品一区在线观看| 日韩激情视频在线播放| 手机看片一级片| 国产蜜臀一区二区打屁股调教| 99久久亚洲一区二区三区青草| 国产91在线播放九色快色| 丁香六月激情综合| 老汉色老汉首页av亚洲| 欧美无砖专区一中文字| 国产精品无码免费专区午夜| 国产中文在线观看| 国产成人av一区二区三区在线 | 精品一区二区三区蜜桃在线| 亚洲不卡在线| 欧美综合一区二区三区| 精品国产一区二区三区无码| 午夜在线免费观看视频| av一二三不卡影片| 成人免费网视频| 国产成人无码一区二区在线播放| 午夜欧美精品| 色老头一区二区三区在线观看| 中文在线一区二区三区| 欧美h版在线观看| 欧美中文字幕一二三区视频| 欧美视频在线播放一区| 日本一本在线免费福利| 国产精品二三区| 欧美一区二区视频在线| 欧性猛交ⅹxxx乱大交| 韩国理伦片一区二区三区在线播放| 清纯唯美亚洲激情| 中国一级免费毛片| 亚洲三级影院| 久久久人成影片一区二区三区观看| 在线观看天堂av| 欧美一区二区三区激情视频| 亚洲免费视频观看| 少妇饥渴放荡91麻豆| 豆花视频一区二区| 欧美mv日韩mv| 欧美一级大片免费看| 精品中文字幕一区二区三区| 欧美美女网站色| jizz18女人| 久久久久黄色| 欧美日韩美女一区二区| 狠狠热免费视频| 亚洲综合av一区二区三区| 欧美性高潮在线| 国产欧美在线一区| 不卡一二三区| 91极品美女在线| 99视频免费播放| 国模一区二区| 欧美日韩一级黄| 九九精品久久久| 亚洲午夜剧场| 日韩欧美精品三级| 亚洲美女在线播放| 女同一区二区三区| 亚洲欧美精品中文字幕在线| 日韩精品无码一区二区三区久久久| 国产va免费精品观看精品视频 | 成人免费毛片糖心| 国产亚洲一区| 日韩中文视频免费在线观看| 日本青青草视频| 激情成人亚洲| 热久久免费国产视频| 自拍偷拍福利视频| 国产精品亚洲一区二区三区妖精| 99精彩视频| 天堂在线资源8| 中文字幕av一区 二区| 亚洲 欧洲 日韩| 欧美人与性动交α欧美精品济南到 | 在线播放/欧美激情| 亚洲欧美日韩中文字幕在线观看| 老司机凹凸av亚洲导航| 亚洲欧美综合精品久久成人| 呻吟揉丰满对白91乃国产区| 中文字幕亚洲精品乱码| 97久久国产精品| 69av视频在线观看| 久久国产精品99精品国产| 999国产在线| 亚洲人成色777777精品音频| 国产精品免费视频网站| 国产精品无码免费专区午夜| 欧美成人黑人| 91精品欧美久久久久久动漫 | 亚洲综合网av| 97精品国产97久久久久久久久久久久| 日韩理论片在线观看| 中文字幕中文字幕在线十八区 | 懂色av成人一区二区三区| 99久久精品情趣| 在线视频不卡一区二区| 密臀av在线播放| 欧美精品v国产精品v日韩精品| 性久久久久久久久久久| 91亚洲自偷观看高清| 69影院欧美专区视频| 国产精品欧美综合亚洲| 久久女同性恋中文字幕| 天堂а√在线中文在线| 日本肉肉一区 | 成人中文字幕+乱码+中文字幕| 天堂av手机版| 亚洲免费在线视频| 超碰av在线免费观看| 加勒比久久高清| 欧美成人精品在线播放| 欧美另类高清videos的特点| av电影一区二区| 狠狠干视频网站| 四虎永久精品在线| 国产性猛交xxxx免费看久久| 日本少妇xxxx动漫| 国产精品正在播放| 亚洲图片在线观看| 向日葵视频成人app网址| 亚洲国产成人在线视频| 久久高清无码视频| 国产呦萝稀缺另类资源| 亚洲欧美在线网| 欧美1级2级| 日韩精品中文字幕视频在线| 精品在线视频免费观看| 国产精品系列在线观看| 正在播放国产精品| 九九九精品视频| 国产亚洲欧美一区| 日韩黄色片网站| 久久久精品tv| 欧美伦理视频在线观看| 久久93精品国产91久久综合| 2019中文字幕在线免费观看| 天天舔天天干天天操| 亚洲国产综合色| 国产白袜脚足j棉袜在线观看 | 国产精品免费视频一区| 亚洲综合在线网站| 精品freesex老太交| 国产va免费精品高清在线| 深夜福利在线观看直播| 精品二区三区线观看| 日韩aaaaa| 国产精品永久| 日本不卡一区| 成人精品一区二区三区电影| 丝袜一区二区三区| 国产精品一区二区免费视频| 亚洲日本在线a| 2025中文字幕| 99在线|亚洲一区二区| 麻豆av福利av久久av| 欧美日韩123区| 色一区av在线| 国产成人精品a视频| 亚洲福利一区二区三区| 久久久久久久久免费看无码| 青娱乐精品视频| 久久久久久久免费视频| 亚洲经典视频| 91精品国产91| 国产高清一级毛片在线不卡| 欧美美女黄视频| 免费三片在线播放| 99精品国产视频| 天天色综合社区| 欧美黄色大片网站| 久久精品二区| 欧美日韩破处视频| 欧美黑人xxxx| 久久久久久久久亚洲精品| 欧美日韩一区二区在线观看 | 91大神在线网站| 日韩一区二区三区精品视频| 久久亚洲天堂网| 中文字幕在线观看一区| 亚洲色偷偷色噜噜狠狠99网 | 狠狠躁夜夜躁久久躁别揉| 手机毛片在线观看| 国产高清成人在线| 亚洲人成色77777| 一本到12不卡视频在线dvd| 国产精品10p综合二区| 日韩不卡免费高清视频| 欧美大奶子在线| 国产无套粉嫩白浆在线2022年| 在线综合+亚洲+欧美中文字幕| 日韩三级免费看| 日韩理论在线观看| 9.1成人看片免费版| 国产酒店精品激情| 少妇高清精品毛片在线视频| 欧美激情1区| 先锋影音亚洲资源| 日韩精品a在线观看91| 91日韩在线播放| 国模套图日韩精品一区二区| 久久久久久91| 国内精品久久久久久野外| 亚洲精品视频免费在线观看| 国产av无码专区亚洲av麻豆| 在线免费不卡电影| 日韩av一区二区在线播放| 国产精品欧美一区喷水| 爱爱免费小视频| 不卡av电影在线播放| www.51色.com| 免费人成在线不卡| 日本三级免费观看| 在线观看视频日韩| 91看片淫黄大片91| 欧美韩日高清| 天天人人精品| 国产不卡av一区二区| 久久99精品国产99久久| 国产成人aa在线观看网站站| 91精品在线看| 国产91在线播放精品| 日韩av手机在线| 一二三四视频在线中文| 久久久久久久国产| 手机在线免费观看av| 久久亚洲私人国产精品va| www.中文字幕久久久| 亚洲天堂av电影| 青青视频在线观| 日韩毛片在线看| 日韩一二三四| 亚洲精品永久免费精品| 人妻视频一区二区三区| 亚洲国产精品大全| 免费观看黄色一级视频| 精品精品欲导航| 国产 欧美 自拍| 亚洲国产成人精品女人久久久 | 一区二区亚洲欧洲国产日韩| 女人偷人在线视频| 国产亚洲精品高潮| 国产毛片av在线| 在线午夜精品自拍| 午夜在线小视频| 理论片在线不卡免费观看| 黄色av免费在线| 欧美激情亚洲自拍| 久久av色综合| 97av在线视频| 日本精品不卡| 国产欧美日韩专区发布| 亚洲精品第一| 97视频资源在线观看| 白嫩白嫩国产精品| 久久精品magnetxturnbtih| 国产一区2区| 亚洲自拍偷拍一区二区三区| 91精品电影| 可以在线看的av网站| 久久久噜噜噜| 91人妻一区二区三区| 成人网在线播放| 性欧美一区二区| 亚洲色图欧美激情| 国产无套在线观看| 在线精品视频免费观看| 97在线播放免费观看| 亚洲精品一区二区三区精华液| 日韩电影网址| 久久精品国产视频| 草草视频在线观看| 国产精品亚洲综合天堂夜夜| 日韩欧美一级| 日本精品国语自产拍在线观看| 欧美激情国产在线| 一本久道高清无码视频| 日韩成人av影视| 绯色av蜜臀vs少妇| 久久综合五月天婷婷伊人| 精品国产大片大片大片| 性欧美疯狂xxxxbbbb| 最近中文字幕免费在线观看| 欧美α欧美αv大片| 韩国三级在线观看久| 欧美成人精品激情在线观看| 成人美女大片| eeuss一区二区三区| 国内精品久久久久久久影视简单 | 国产一区二区三区免费在线观看| 这里只有精品在线观看视频 | 成人午夜av在线| 97免费中文视频在线观看| 国产麻豆一精品一男同| 日韩电影网在线| 美女羞羞视频在线观看| 欧美影院在线播放| 久久免费福利| 日韩色妇久久av| 狠狠爱www人成狠狠爱综合网 | 国产九九视频一区二区三区| av女人的天堂| 亚洲国产精品欧美一二99| 中文字幕精品无码亚| 精品呦交小u女在线| 丝袜在线视频| 成人黄色av网站| 久久91成人| 九色在线视频观看| 国产成人丝袜美腿| 伊人在线视频观看| 欧美偷拍一区二区| 天堂在线资源网| 欧美激情第一页xxx| 日韩一级特黄| 日本一区二区三区精品视频| 亚洲激情网站| www男人天堂| 亚洲综合色成人| 97人妻精品一区二区三区视频| 亚洲新声在线观看| 人成在线免费网站| 国产日韩精品一区观看| 欧美午夜一区二区福利视频| 激情文学亚洲色图| 国产精品伦一区| 国产精品51麻豆cm传媒 | 日本不卡不卡| 国产第一区电影| 欧美精美视频| 黄www在线观看| 久久亚区不卡日本| 中文字幕第15页| 亚洲欧美日韩成人| 亚洲美女尤物影院| 鲁鲁狠狠狠7777一区二区| 国产精品久久久亚洲一区| 日本免费福利视频| 欧美午夜视频一区二区| 青青青手机在线视频观看| 2021国产精品视频| 伊人春色精品| 毛片av免费在线观看| 国产欧美日韩视频一区二区| 黄色污污网站在线观看| 亚洲天堂免费在线| 97精品国产综合久久久动漫日韩| 日韩精品久久久毛片一区二区| 丝袜美腿亚洲综合| 久久久久久久毛片| 欧美色中文字幕| 国内精品久久久久久野外| 亚洲最大福利网站| 亚洲激情亚洲| 成年人免费观看视频网站| 欧美在线观看你懂的| 黄网站免费在线观看| 97视频中文字幕| 亚洲视频大全| 成人做爰69片免网站| 在线不卡免费av| 日韩另类在线| 蜜桃传媒一区二区| 久久爱www久久做| 免费人成年激情视频在线观看| 亚洲精品美女在线观看播放| 国产日韩电影| 男人j进女人j| aaa亚洲精品| 欧美黄色一级大片| 精品国产一区二区三区久久狼黑人| 精品国模一区二区三区欧美| 国产极品尤物在线| 国产日韩欧美麻豆| 国产精品视频在线观看免费 | 免费在线精品视频| av在线不卡免费看| 在线免费a视频| 久久久噜噜噜久久中文字免| 国产欧美高清视频在线| 亚欧精品在线视频| 欧美午夜xxx| 国产精品一卡二卡三卡| 韩国成人av| 精品综合久久久久久8888| 成年人免费看毛片| 最好看的2019年中文视频| www国产精品| 高潮一区二区三区| 欧美午夜宅男影院在线观看| 超碰porn在线| 欧洲亚洲一区二区三区四区五区| 国产很黄免费观看久久|