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

奔潰!老板叫我設計一個億級API網關

網絡 通信技術 開發工具
網關是一個比較成熟的產品,基本上各大互聯網公司都會有網關這個中間件,來解決一些公有業務的上浮,而且能快速的更新迭代。

 [[391992]] 

圖片來自 Pexels

如果沒有網關,要更新一個公有特性,就要推動所有業務方都更新和發布,那是效率極低的事,有網關后,這一切都變得不是問題。

喜馬拉雅也是一樣,用戶數增長達到 6 億多的級別,Web 服務個數達到500+,目前我們網關日處理 200 億+次調用,單機 QPS 高峰達到 4w+。

網關除了要實現最基本的功能反向代理外,還有公有特性,比如黑白名單,流控,鑒權,熔斷,API 發布,監控和報警等。

我們還根據業務方的需求實現了流量調度,流量 Copy,預發布,智能化升降級,流量預熱等相關功能。

 

下面就我們網關在這些方便的一些實踐經驗以及發展歷程,下面是喜馬拉雅網關的演化過程。

第一版:Tomcat nio+Async Servlet

網關在架構設計時最為關鍵點,就是網關在接收到請求,調用后端服務時不能阻塞 Block,否則網關的吞吐量很難上去,因為最耗時的就是調用后端服務這個遠程調用過程。

如果這里是阻塞的,Tomcat 的工作線程都 block 住了,在等待后端服務響應的過程中,不能去處理其他的請求,這個地方一定要異步。

架構圖如下:

 

這版我們實現單獨的 Push 層,作為網關收到響應后,響應客戶端時,通過這層實現,和后端服務的通信是 HttpNioClient,對業務的支持黑白名單,流控,鑒權,API 發布等功能。

但是這版只是功能上達到網關的要求,處理能力很快就成了瓶頸,單機 QPS 到 5K 的時候,就會不停的 Full GC。

后面通過 Dump 線上的堆分析,發現全是 Tomcat 緩存了很多 HTTP 的請求,因為 Tomcat 默認會緩存 200 個 requestProcessor,每個 prcessor 都關聯了一個 request。

還有就是 Servlet 3.0 Tomcat 的異步實現會出現內存泄漏,后面通過減少這個配置,效果明顯。

但性能肯定就下降了,總結了下,基于 Tomcat 做為接入端,有如下幾個問題。

Tomcat 自身的問題:

  • 緩存太多,Tomcat 用了很多對象池技術,內存有限的情況下,流量一高很容易觸發 GC。
  • 內存 Copy,Tomcat 的默認是用堆內存,所以數據需要讀到堆內,而我們后端服務是 Netty,有堆外內存,需要通過數次 Copy。
  • Tomcat 還有個問題是讀 body 是阻塞的, Tomcat 的 NIO 模型和 reactor 模型不一樣,讀 body 是 block 的。

這里再分享一張 Tomcat buffer 的關系圖:

 

通過上面的圖,我們可以看出,Tomcat 對外封裝的很好,內部默認的情況下會有三次 copy。

HttpNioClient 的問題:獲取和釋放連接都需要加鎖,對應網關這樣的代理服務場景,會頻繁的建連和關閉連接,勢必會影響性能。

基于 Tomcat 的存在的這些問題,我們后面對接入端做改造,用 Netty 做接入層和服務調用層,也就是我們的第二版,能徹底解決上面的問題,達到理想的性能。

第二版:Netty+全異步

基于 Netty 的優勢,我們實現了全異步,無鎖,分層的架構。

先看下我們基于 Netty 做接入端的架構圖:

 

①接入層

Netty 的 IO 線程,負責 HTTP 協議的編解碼工作,同時對協議層面的異常做監控報警。

對 HTTP 協議的編解碼做了優化,對異常,攻擊性請求監控可視化。比如我們對 HTTP 的請求行和請求頭大小是有限制的,Tomcat 是請求行和請求加在一起,不超過 8K,Netty 是分別有大小限制。

假如客戶端發送了超過閥值的請求,帶 cookie 的請求很容易超過,正常情況下,Netty 就直接響應 400 給客戶端。

經過改造后,我們只取正常大小的部分,同時標記協議解析失敗,到業務層后,就可以判斷出是那個服務出現這類問題,其他的一些攻擊性的請求,比如只發請求頭,不發 body 或者發部分這些都需要監控和報警。

②業務邏輯層

負責對 API 路由,流量調度等一序列的支持業務的公有邏輯,都在這層實現,采樣責任鏈模式,這層不會有 IO 操作。

在業界和一些大廠的網關設計中,業務邏輯層基本都是設計成責任鏈模式,公有的業務邏輯也在這層實現。

我們在這層也是相同的套路,支持了:

  • 用戶鑒權和登陸校驗,支持接口級別配置。
  • 黑白名單,分全局和應用,以及 IP 維度,參數級別。
  • 流量控制,支持自動和手動,自動是對超大流量自動攔截,通過令牌桶算法實現。
  • 智能熔斷,在 Histrix 的基礎上做了改進,支持自動升降級,我們是全部自動的,也支持手動配置立即熔斷,就是發現服務異常比例達到閥值,就自動觸發熔斷。
  • 灰度發布,我對新啟動的機器的流量支持類似 TCP 的慢啟動機制,給機器一個預熱的時間窗口。
  • 統一降級,我們對所有轉發失敗的請求都會找統一降級的邏輯,只要業務方配了降級規則,都會降級,我們對降級規則是支持到參數級別的,包含請求頭里的值,是非常細粒度的,另外我們還會和 varnish 打通,支持 varnish 的優雅降級。
  • 流量調度,支持業務根據篩選規則,對流量篩選到對應的機器,也支持只讓篩選的流量訪問這臺機器,這在查問題/新功能發布驗證時非常用,可以先通過小部分流量驗證再大面積發布上線。
  • 流量 copy,我們支持對線上的原始請求根據規則 copy 一份,寫入到 MQ 或者其他的 upstream,來做線上跨機房驗證和壓力測試。
  • 請求日志采樣,我們對所有的失敗的請求都會采樣落盤,提供業務方排查問題支持,也支持業務方根據規則進行個性化采樣,我們采樣了整個生命周期的數據,包含請求和響應相關的所有數據。

上面提到的這么多都是對流量的治理,我們每個功能都是一個 filter,處理失敗都不影響轉發流程,而且所有的這些規則的元數據在網關啟動時就會全部初始化好。

在執行的過程中,不會有 IO 操作,目前有些設計會對多個 filter 做并發執行,由于我們的都是內存操作,開銷并不大,所以我們目前并沒有支持并發執行。

還有個就是規則會修改,我們修改規則時,會通知網關服務,做實時刷新,我們對內部自己的這種元數據更新的請求,通過獨立的線程處理,防止 IO 在操作時影響業務線程。

③服務調用層

服務調用對于代理網關服務是關鍵的地方,一定需要異步,我們通過 Netty 實現,同時也很好的利用了 Netty 提供的連接池,做到了獲取和釋放都是無鎖操作。

④異步 Push

網關在發起服務調用后,讓工作線程繼續處理其他的請求,而不需要等待服務端返回。

這里的設計是我們為每個請求都會創建一個上下文,我們在發完請求后,把該請求的 context 綁定到對應的連接上,等 Netty 收到服務端響應時,就會在給連接上執行 read 操作。

解碼完后,再從給連接上獲取對應的 context,通過 context 可以獲取到接入端的 session。

這樣 push 就通過 session 把響應寫回客戶端了,這樣設計也是基于 HTTP 的連接是獨占的,即連接和請求上下文綁定。

⑤連接池

連接池的原理如下圖:

 

服務調用層除了異步發起遠程調用外,還需要對后端服務的連接進行管理。

HTTP 不同于 RPC,HTTP 的連接是獨占的,所以在釋放的時候要特別小心,一定要等服務端響應完了才能釋放,還有就是連接關閉的處理也要小心。

總結如下幾點:

  • Connection:close
  • 空閑超時,關閉連接
  • 讀超時關閉連接
  • 寫超時,關閉連接
  • Fin,Reset

上面幾種需要關閉連接的場景,下面主要說下 Connection:close 和空閑寫超時兩種,其他的應該是比較常見的比如讀超時,連接空閑超時,收到 fin,reset 碼這幾個。

⑥Connection:close

后端服務是 Tomcat,Tomcat 對連接重用的次數是有限制的,默認是 100 次。

當達到 100 次后,Tomcat 會通過在響應頭里添加 Connection:close,讓客戶端關閉該連接,否則如果再用該連接發送的話,會出現 400。

還有就是如果端上的請求帶了 connection:close,那 Tomcat 就不等這個連接重用到 100 次,即一次就關閉。

通過在響應頭里添加 Connection:close,即成了短連接,這個在和 Tomcat 保持長連接時,需要注意的,如果要利用,就要主動 remove 掉這個 close 頭。

⑦寫超時

首先網關什么時候開始計算服務的超時時間,如果從調用 writeAndFlush 開始就計算,這其實是包含了 Netty 對 HTTP 的 encode 時間和從隊列里把請求發出去即 flush 的時間,這樣是對后端服務不公平的。

所以需要在真正 flush 成功后開始計時,這樣是和服務端最接近的,當然還包含了網絡往返時間和內核協議棧處理的時間,這個不可避免,但基本不變。

所以我們是 flush 成功回調后開始啟動超時任務,這里就有個注意的地方,如果 flush 不能快速回調,比如來了一個大的 post 請求,body 部分比較大,而 Netty 發送的時候第一次默認是發 1k 的大小。

如果還沒有發完,則增大發送的大小繼續發,如果在 Netty 在 16 次后還沒有發送完成,則不會再繼續發送,而是提交一個 flushTask 到任務隊列,待下次執行到后再發送。

這時 flush 回調的時間就比較大,導致這樣的請求不能及時關閉,而且后端服務 Tomcat 會一直阻塞在讀 body 的地方,基于上面的分析,所以我們需要一個寫超時,對大的 body 請求,通過寫超時來及時關閉。

全鏈路超時機制

 

上圖是我們在整個鏈路超時處理的機制:

  • 協議解析超時
  • 等待隊列超時
  • 建連超時
  • 等待連接超時
  • 寫前檢查是否超時
  • 寫超時
  • 響應超時

監控報警

網關業務方能看到的是監控和報警,我們是實現秒級別報警和秒級別的監控,監控數據定時上報給我們的管理系統,由管理系統負責聚合統計,落盤到 influxdb。

我們對 HTTP 協議做了全面的監控和報警,無論是協議層的還是服務層的。

協議層:

  • 攻擊性請求,只發頭,不發/發部分 body,采樣落盤,還原現場,并報警
  • Line or Head or Body 過大的請求,采樣落盤,還原現場,并報警

應用層:

  • 耗時監控,有慢請求,超時請求,以及 tp99,tp999 等。
  • OPS 監控和報警。
  • 帶寬監控和報警,支持對請求和響應的行,頭,body 單獨監控。
  • 響應碼監控,特別是 400,和 404。
  • 連接監控,我們對接入端的連接,以及和后端服務的連接,后端服務連接上待發送字節大小也都做了監控。
  • 失敗請求監控。
  • 流量抖動報警,這是非常有必要的,流量抖動要么是出了問題,要么就是出問題的前兆。

總體架構:

 

性能優化實踐

①對象池技術

對于高并發系統,頻繁的創建對象不僅有分配內存的開銷外,還有對 GC 會造成壓力。

我們在實現時會對頻繁使用的比如線程池的任務 task,StringBuffer 等會做寫重用,減少頻繁的申請內存的開銷。

②上下文切換

高并發系統,通常都采用異步設計,異步化后,不得不考慮線程上下文切換的問題。

我們的線程模型如下:

 

我們整個網關沒有涉及到 IO 操作,但我們在業務邏輯這塊還是和 Netty 的 IO 編解碼線程異步。

有兩個原因:

  • 防止開發寫的代碼有阻塞。
  • 業務邏輯打日志可能會比較多,在突發的情況下,在 push 線程時,支持用 Netty 的 IO 線程替代,這里做的工作比較少。

這里有異步修改為同步后(通過修改配置調整),CPU 的上下文切換減少 20%,進而提高了整體的吞吐量,就是不能為了異步而異步,zull2 的設計和我們的類似。

③GC 優化

在高并發系統,GC 的優化不可避免,我們在用了對象池技術和堆外內存時,對象很少進入老年代。

另外我們年輕代會設置的比較大,而且 SurvivorRatio=2,晉升年齡設置最大 15,盡量對象在年輕代就回收掉, 但監控發現老年代的內存還是會緩慢增長。

通過 dump 分析,我們每個后端服務創建一個連接,都時有一個 socket,socket 的 AbstractPlainSocketImpl。

而 AbstractPlainSocketImpl 就重寫了 Object 類的 finalize 方法,實現如下:

  1. /** 
  2.      * Cleans up if the user forgets to close it. 
  3.      */ 
  4.     protected void finalize() throws IOException { 
  5.         close(); 
  6.     } 

是為了我們沒有主動關閉連接,做的一個兜底,在 GC 回收的時候,先把對應的連接資源給釋放了。

由于 finalize 的機制是通過 JVM 的 Finalizer線程來處理的,而且 Finalizer 線程的優先級不高,默認是 8,需要等到 Finalizer 線程把 ReferenceQueue 的對象對于的 finalize 方法執行完。

還要等到下次 GC 時,才能把該對象回收,導致創建連接的這些對象在年輕代不能立即回收,從而進入了老年代,這也是為啥老年代會一直緩慢增長的問題。

④日志

高并發下,特別是 Netty 的 IO 線程除了要執行該線程上的 IO 讀寫操作,還有執行異步任務和定時任務,如果 IO 線程處理不過來隊列里的任務,很有可能導致新進來異步任務出現被拒絕的情況。

那什么情況下可能呢?IO 是異步讀寫的問題不大,就是多耗點 CPU,最有可能 block 住 IO 線程的是我們打的日志。

目前 Log4j 的 ConsoleAppender 日志 immediateFlush 屬性默認為 true,即每次打 log 都是同步寫 flush 到磁盤的,這個對于內存操作來說,慢了很多。

同時 AsyncAppender 的日志隊列滿了也會 block 住線程,log4j 默認的 buffer 大小是 128,而且是 block 的。

即如果 buffer 的大小達到 128,就阻塞了寫日志的線程,在并發寫日志量大的的情況下,特別是堆棧很多時,log4j 的 Dispatcher 線程會出現變慢要刷盤。

這樣 buffer 就不能快速消費,很容易寫滿日志事件,導致 Netty IO 線程 block 住,所以我們在打日志時,也要注意精簡。

未來規劃

現在我們都是基于 HTTP/1,現在 HTTP/2 相對于 HTTP/1 關鍵實現了在連接層面的服務,即一個連接上可以發送多個 HTTP 請求。

即 HTTP 連接也能和 RPC 連接一樣,建幾個連接就可以了,徹底解決了 HTTP/1 連接不能復用導致每次都建連和慢啟動的開銷。

我們也在基于 Netty 升級到 HTTP/2,除了技術升級外,我們對監控報警也一直在持續優化,怎么提供給業務方準確無誤的報警,也是一直在努力。

還有一個就是降級,作為統一接入網關,和業務方做好全方位的降級措施,也是一直在完善的點,保證全站任何故障都能通過網關第一時間降級,也是我們的重點。

總結

網關已經是一個互聯網公司的標配,這里總結實踐過程中的一些心得和體會,希望給大家一些參考以及一些問題的解決思路,歡迎交流。

作者:彭榮新

編輯:陶家龍

出處:轉載自公眾號喜馬拉雅技術博客(ID:xmly_tech)

 

責任編輯:武曉燕 來源: 喜馬拉雅技術博客
相關推薦

2018-11-26 08:06:24

API網關億級

2018-11-01 13:23:02

網關APIHTTP

2020-03-03 07:59:29

設計秒殺系統

2018-12-10 13:50:16

網絡安全網絡安全技術周刊

2021-03-02 07:54:18

流量網關設計

2021-03-05 07:47:07

工作流引擎節點

2019-09-18 09:41:25

億級流量網站

2021-10-14 09:51:17

架構運維技術

2019-11-26 09:42:36

代碼開發API

2021-06-28 10:09:59

架構網關技術

2020-02-09 16:52:02

睡醒公司倒閉

2025-10-30 01:25:00

2021-02-09 09:50:21

SQLOracle應用

2025-09-17 10:08:43

2013-07-01 11:01:22

API設計API

2023-03-27 08:33:32

2013-06-19 09:59:07

2021-07-26 05:03:44

OpenFeign系統組件

2020-09-22 07:50:23

API接口業務

2020-08-05 07:37:29

任務系統定時
點贊
收藏

51CTO技術棧公眾號

亚洲国产精品电影| 国产精品伦理在线| 欧美精品www在线观看| 亚洲AV无码久久精品国产一区| 成人av黄色| 国产精品996| 欧美激情中文字幕乱码免费| 九九热免费在线观看| 国产视频在线播放| 成人亚洲一区二区一| 欧美亚洲视频在线观看| 免费观看a级片| 中文字幕日本一区| 亚洲制服丝袜av| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | av在线女优影院| 久久成人免费网| 欧美精品一区二区三区国产精品| 喷水视频在线观看| 欧美日韩不卡| 亚洲精品精品亚洲| 久草精品电影| 亚洲天堂中文字幕在线| 国内久久精品| 国产一区二区三区在线免费观看 | jizz在线免费观看| 国产东北露脸精品视频| 欧美一级免费看| 性欧美videos| 国产亚洲欧美日韩在线观看一区二区| 欧美男同性恋视频网站| 欧美久久久久久久久久久久久| 国产成人天天5g影院在线观看| 国产一区二区免费看| 国外成人在线视频| av最新在线观看| 日韩精品a在线观看91| 欧美猛男超大videosgay| 国产精品12345| 98在线视频| 99久久久精品| 97欧洲一区二区精品免费| 亚洲黄网在线观看| 韩日成人av| 少妇高潮 亚洲精品| 亚洲专区区免费| 99re91这里只有精品| 一本久久综合亚洲鲁鲁五月天| 女人床在线观看| av电影在线网| 97se狠狠狠综合亚洲狠狠| 2019国产精品视频| 在线观看日韩一区二区| 免费在线观看成人av| 欧美精品videossex88| 中文字幕在线观看成人| 成人一区而且| 亚洲人成网在线播放| 久久性爱视频网站| 日韩欧美激情电影| 在线播放日韩导航| 国产精品一区二区小说| 国产丝袜在线播放| 亚洲特级片在线| 亚洲精品8mav| 国产理论电影在线观看| 久久久午夜精品理论片中文字幕| 国产精品一区二区三区观看| 国产情侣av在线| 激情图区综合网| 国产精品亚洲综合天堂夜夜| 无码人妻精品一区二区三区9厂| 国产精品久久国产愉拍| 91av在线播放| 国产精品人人人人| 先锋影音久久久| 欧美亚洲国产成人精品| 麻豆久久久久久久久久| 亚洲影院一区| 77777亚洲午夜久久多人| 精品一区二区三区四| 欧美97人人模人人爽人人喊视频| 欧美18hd| 国产精品嫩草影院com| 四虎永久国产精品| 永久免费在线观看视频| 亚洲男同1069视频| 麻豆tv在线播放| 全亚洲第一av番号网站| 欧美日韩aaaaa| 少妇丰满尤物大尺度写真| 精品欧美午夜寂寞影院| 亚洲人成网站999久久久综合| 日韩av片在线免费观看| 黄色国产精品| 国产精品一区二区三区久久久| av在线免费在线观看| 97久久超碰精品国产| 西游记1978| 波多野结衣久久| 欧美午夜视频网站| 影音先锋资源av| heyzo久久| 97在线视频免费播放| 在线观看国产黄| 暴力调教一区二区三区| 亚洲一区二区三区在线观看视频| 国产天堂在线播放视频| 精品1区2区3区| 99久久免费看精品国产一区| 久久高清精品| 日本精品va在线观看| 91精品国产乱码久久| 99riav一区二区三区| 97精品国产97久久久久久粉红| 在线观看特色大片免费视频| 欧美一区二区三级| 中文天堂资源在线| 99精品视频免费观看视频| 亚洲tv在线观看| 91网在线播放| 色婷婷久久久亚洲一区二区三区| 18深夜在线观看免费视频| 青青草91久久久久久久久| 91精品国产99| 成人久久久精品国产乱码一区二区| 国产女主播在线一区二区| 午夜精品久久久久久久无码| 亚洲精品v亚洲精品v日韩精品| 色先锋资源久久综合5566| 999这里只有精品| 国产宾馆实践打屁股91| 亚洲第一精品区| 免费污视频在线一区| 亚洲免费人成在线视频观看| 日本特黄一级片| 国产成人精品www牛牛影视| 亚洲国产精品123| 经典三级一区二区| 亚洲色无码播放| 亚洲午夜18毛片在线看| 99久久国产综合精品麻豆| 国产91沈先生在线播放| 亚洲一区二区三区久久久| 永久555www成人免费| 亚洲成熟少妇视频在线观看| 久久综合色播五月| 国内性生活视频| 日韩精品免费一区二区三区竹菊 | 亚洲欧美色图视频| 日韩图片一区| 久久精品国产99精品国产亚洲性色| av资源网在线播放| 亚洲国产精品va在看黑人| 亚洲国产综合久久| 99视频精品免费视频| 99爱视频在线| 久久av导航| 国产精品91在线观看| jizz在线免费观看| 欧美福利视频导航| 国产又黄又爽又无遮挡| 成人性生交大片免费看视频在线| 日韩中字在线观看| 日韩精品免费一区二区夜夜嗨| 日韩美女写真福利在线观看| 第一福利在线| 8x福利精品第一导航| 久久网一区二区| 99久久精品国产精品久久| 亚洲国产精品久久久久爰色欲| 国产欧美日韩影院| 成人福利网站在线观看| 羞羞的网站在线观看| 日韩电影免费观看中文字幕| 亚洲第一网站在线观看| 中文字幕在线不卡国产视频| wwwxxxx在线观看| 亚洲毛片视频| 日韩精品av一区二区三区| 中文字幕综合| 欧美国产日韩xxxxx| 你懂的在线观看视频网站| 欧美亚洲综合色| 无码人妻精品一区二区三区夜夜嗨| 成人黄页毛片网站| 不要播放器的av网站| 在线成人直播| 久久久福利视频| 激情小说亚洲| 久久久亚洲精选| 99riav在线| 亚洲国产精品成人av| 国产乡下妇女三片| 一区二区三区欧美日| 91精品人妻一区二区| 国产毛片精品一区| 国产成人久久婷婷精品流白浆| 婷婷综合视频| 麻豆av一区二区三区久久| 国产成人久久精品一区二区三区| 777精品视频| 国产成人l区| 亚洲午夜精品久久久久久久久久久久| 超碰在线播放97| 在线观看不卡一区| 国产主播在线观看| 中文字幕欧美一区| 右手影院亚洲欧美| 国产成人午夜片在线观看高清观看| 红桃av在线播放| 激情欧美日韩一区| 四虎免费在线观看视频| 国产精品一线天粉嫩av| 国产精品久久久久久免费观看| 欧美激情福利| 日韩av毛片网| 麻豆网站免费在线观看| 欧美成年人视频| а天堂8中文最新版在线官网| 亚洲成人精品久久| www.精品视频| 欧美久久久久久久久久| www.久久网| 欧美日韩亚洲一区二| 欧美国产在线看| 中文字幕一区二区不卡| 色哟哟精品观看| 91丨九色丨尤物| 四季av综合网站| 成人免费视频一区二区| 国产黑丝在线视频| 精品一区二区国语对白| 一区二区在线播放视频| 嫩草成人www欧美| 国产精品沙发午睡系列| 一区视频在线| 丁香花在线影院观看在线播放| 一区二区三区四区日韩| 只有这里有精品| 久久久久久久久99精品大| 一本久道久久综合| 久久网站免费观看| 亚洲精品久久久久久一区二区| 精品国产乱码久久久久久果冻传媒| 美国av一区二区三区| 你微笑时很美电视剧整集高清不卡| 久99久在线| 亚洲精品亚洲人成在线| 免费看成人片| 美女精品一区最新中文字幕一区二区三区 | 亚洲精品男人天堂| 欧美日韩亚洲精品内裤| av毛片在线免费观看| 91久久久免费一区二区| 婷婷激情五月综合| 欧美日韩国产精品成人| 国产精品一级二级| 欧美一级黄色大片| 高潮一区二区三区乱码| 亚洲国产成人精品电影| 亚洲欧美日韩动漫| 国产亚洲精品久久久久动| jizz视频在线观看| 日韩专区在线观看| 色噜噜狠狠狠综合欧洲色8| 欧美激情a在线| 忘忧草在线影院两性视频| 欧美在线一区二区三区四| 国产经典一区| 成人黄色免费片| 99久久婷婷国产综合精品青牛牛| 国产精品一区二区在线观看| 啪啪亚洲精品| 波多野结衣激情| 激情综合中文娱乐网| 丰满人妻中伦妇伦精品app| 日本成人在线不卡视频| 自拍一级黄色片| 99久久婷婷国产综合精品电影| 亚洲图片第一页| 一区二区三区四区亚洲| 久久久久久久极品| 欧美日韩三级在线| 狠狠人妻久久久久久综合麻豆| 国产视频丨精品|在线观看| 一区二区三区视频网站| 欧美国产一区二区三区| 日韩欧美一区二区三区在线观看 | 91丨九色丨丰满| 亚洲成色www8888| a天堂中文在线88| 欧美黑人xxx| 日本美女久久| 国产91免费视频| 欧美丝袜丝交足nylons172| 香港三级日本三级a视频| 久久久久久黄| 亚洲熟妇一区二区| 久久久久久久性| 黄色一级片在线| 在线中文字幕不卡| 色屁屁草草影院ccyycom| 中文字幕亚洲色图| mm视频在线视频| 91午夜理伦私人影院| 美女毛片一区二区三区四区最新中文字幕亚洲| 99三级在线| 日韩在线观看| av免费播放网址| 国产精品18久久久久| 亚洲精品国产精品国自| 岛国视频午夜一区免费在线观看| 91在线观看喷潮| 亚洲欧美中文日韩在线| 91av久久| 91天堂在线观看| 日本道不卡免费一区| av天堂永久资源网| 成人av电影在线| 午夜爱爱毛片xxxx视频免费看| 欧洲一区在线观看| 日本v片在线免费观看| 国产+人+亚洲| 精品中文字幕一区二区三区| 亚洲午夜精品福利| 视频精品一区二区| 性久久久久久久久久| 亚洲h动漫在线| 亚洲第一免费视频| 久久九九有精品国产23| 亚洲成人精品综合在线| 亚洲一区3d动漫同人无遮挡 | 亚洲精品久久久久久久久久| 久久午夜a级毛片| 国产精品免费精品自在线观看| 亚洲欧洲一区二区福利| 日韩专区一卡二卡| 97人妻精品一区二区免费| 一本大道久久精品懂色aⅴ| 四虎成人免费在线| 欧美专区日韩视频| 婷婷成人综合| 欧美变态另类刺激| 91女神在线视频| 中国一级免费毛片| 日韩精品在线视频| 亚洲欧美韩国| 欧美一区国产一区| 男人操女人的视频在线观看欧美| 欧美老女人性生活视频| 欧美四级电影在线观看| av大片在线播放| 国产精品自产拍在线观| 国产韩国精品一区二区三区| 亚洲精品乱码久久久久久动漫| 中文字幕一区不卡| 国产乱码精品一区二区| 久久国产精品久久久久久久久久| 国产精品一区二区三区av| 四虎影院一区二区| 国产麻豆成人精品| 精品无码m3u8在线观看| 亚洲黄色片网站| 电影网一区二区| 色综合视频二区偷拍在线| 久久国内精品自在自线400部| 青花影视在线观看免费高清| 日韩欧美电影一二三| 2020国产在线| 日本一区视频在线| 久久av中文字幕片| 国产一级片免费| 国产丝袜一区二区三区免费视频| 欧美暴力调教| 一二三四中文字幕| 97se亚洲国产综合自在线观| 日韩欧美国产另类| 久久不射电影网| 日本午夜精品久久久| 三年中国国语在线播放免费| 亚洲精品成人少妇| 头脑特工队2免费完整版在线观看| 国产精品美女呻吟| 国产精品草草| 波多野吉衣中文字幕| 777欧美精品| 最新欧美色图| 天天干天天操天天干天天操| av成人免费在线观看| 一区二区小视频| 午夜精品久久久久久久白皮肤| 不卡中文字幕| youjizz.com国产| 欧美性生交片4| а√天堂8资源在线| 国产免费色视频| 91浏览器在线视频| av中文字幕免费在线观看| 茄子视频成人在线|