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

閑話高并發的那些神話,看京東架構師如何把它拉下神壇

開發 開發工具 架構
高并發也算是這幾年的熱門詞匯了,尤其在互聯網圈,開口不聊個高并發問題,都不好意思出門。高并發有那么邪乎嗎?

高并發也算是這幾年的熱門詞匯了,尤其在互聯網圈,開口不聊個高并發問題,都不好意思出門。高并發有那么邪乎嗎?動不動就千萬并發、億級流量,聽上去的確挺嚇人。但仔細想想,這么大的并發與流量不都是通過路由器來的嗎?

[[236070]]

一、一切源自網卡

高并發的流量通過低調的路由器進入我們系統,第一道關卡就是網卡,網卡怎么抗住高并發?這個問題壓根就不存在,千萬并發在網卡看來,一樣一樣的,都是電信號,網卡眼里根本區分不出來你是千萬并發還是一股洪流,所以衡量網卡牛不牛都說帶寬,從來沒有并發量的說法。

網卡位于物理層和鏈路層,最終把數據傳遞給網絡層(IP層),在網絡層有了IP地址,已經可以識別出你是千萬并發了,所以搞網絡層的可以自豪的說,我解決了高并發問題,可以出來吹吹牛了。誰沒事搞網絡層呢?主角就是路由器,這玩意主要就是玩兒網絡層。

二、一頭霧水

非專業的我們,一般都把網絡層(IP層)和傳輸層(TCP層)放到一起,操作系統提供,對我們是透明的,很低調、很靠譜,以至于我們都把他忽略了。

吹過的牛是從應用層開始的,應用層一切都源于Socket,那些千萬并發最終會經過傳輸層變成千萬個Socket,那些吹過的牛,不過就是如何快速處理這些Socket。處理IP層數據和處理Socket究竟有啥不同呢?

三、沒有連接,就沒用等待

最重要的一個不同就是IP層不是面向連接的,而Socket是面向連接的,IP層沒有連接的概念,在IP層,來一個數據包就處理一個,不用瞻前也不用顧后;而處理Socket,必須瞻前顧后,Socket是面向連接的,有上下文的,讀到一句我愛你,激動半天,你不前前后后地看看,就是瞎激動了。

你想前前后后地看明白,就要占用更多的內存去記憶,就要占用更長的時間去等待;不同連接要搞好隔離,就要分配不同的線程(或者協程)。所有這些都解決好,貌似還是有點難度的。

四、感謝操作系統

操作系統是個好東西,在Linux系統上,所有的IO都被抽象成了文件,網絡IO也不例外,被抽象成Socket,但是Socket還不僅是一個IO的抽象,它同時還抽象了如何處理Socket,最著名的就是select和epoll了,知名的nginx、netty、redis都是基于epoll搞的,這仨家伙基本上是在千萬并發領域必備神技。

但是多年前,Linux只提供了select的,這種模式能處理的并發量非常小,而epoll是專為高并發而生的,感謝操作系統。不過操作系統沒有解決高并發的所有問題,只是讓數據快速地從網卡流入我們的應用程序,如何處理才是老大難。

操作系統的使命之一就是最大限度的發揮硬件的能力,解決高并發問題,這也是最直接、最有效的方案,其次才是分布式計算。前面我們提到的nginx、netty、redis都是最大限度發揮硬件能力的典范。如何才能最大限度的發揮硬件能力呢?

五、核心矛盾

要最大限度的發揮硬件能力,首先要找到核心矛盾所在。我認為,這個核心矛盾從計算機誕生之初直到現在,幾乎沒有發生變化,就是CPU和IO之間的矛盾。

CPU以摩爾定律的速度野蠻發展,而IO設備(磁盤,網卡)卻乏善可陳。龜速的IO設備成為性能瓶頸,必然導致CPU的利用率很低,所以提升CPU利用率幾乎成了發揮硬件能力的代名詞。

六、中斷與緩存

CPU與IO設備的協作基本都是以中斷的方式進行的,例如讀磁盤的操作,CPU僅僅是發一條讀磁盤到內存的指令給磁盤驅動,之后就立即返回了,此時CPU可以接著干其他事情,讀磁盤到內存本身是個很耗時的工作,等磁盤驅動執行完指令,會發個中斷請求給CPU,告訴CPU任務已經完成,CPU處理中斷請求,此時CPU可以直接操作讀到內存的數據。

中斷機制讓CPU以最小的代價處理IO問題,那如何提高設備的利用率呢?答案就是緩存。

操作系統內部維護了IO設備數據的緩存,包括讀緩存和寫緩存,讀緩存很容易理解,我們經常在應用層使用緩存,目的就是盡量避免產生讀IO。

寫緩存應用層使用的不多,操作系統的寫緩存,完全是為了提高IO寫的效率。操作系統在寫IO的時候會對緩存進行合并和調度,例如寫磁盤會用到電梯調度算法。

七、高效利用網卡

高并發問題首先要解決的是如何高效利用網卡。網卡和磁盤一樣,內部也是有緩存的,網卡接收網絡數據,先存放到網卡緩存,然后寫入操作系統的內核空間(內存),我們的應用程序則讀取內存中的數據,然后處理。

除了網卡有緩存外,TCP/IP協議內部還有發送緩沖區和接收緩沖區以及SYN積壓隊列、accept積壓隊列。

這些緩存,如果配置不合適,則會出現各種問題。例如在TCP建立連接階段,如果并發量過大,而nginx里面socket的backlog設置的值太小,就會導致大量連接請求失敗。

如果網卡的緩存太小,當緩存滿了后,網卡會直接把新接收的數據丟掉,造成丟包。當然如果我們的應用讀取網絡IO數據的效率不高,會加速網卡緩存數據的堆積。如何高效讀取網絡數據呢?目前在Linux上廣泛應用的就是epoll了。

操作系統把IO設備抽象為文件,網絡被抽象成了Socket,Socket本身也是一個文件,所以可以用read/write方法來讀取和發送網絡數據。在高并發場景下,如何高效利用Socket快速讀取和發送網絡數據呢?

要想高效利用IO,就必須在操作系統層面了解IO模型,在《UNIX網絡編程》這本經典著作里,總結了五種IO模型,分別是阻塞式IO,非阻塞式IO,多路復用IO,信號驅動IO和異步IO。

八、阻塞式IO

我們以讀操作為例,當我們調用read方法讀取Socket上的數據時,如果此時Socket讀緩存是空的(沒有數據從Socket的另一端發過來),操作系統會把調用read方法的線程掛起,直到Socket讀緩存里有數據時,操作系統再把該線程喚醒。

當然,在喚醒的同時,read方法也返回了數據。我理解所謂的阻塞,就是操作系統是否會掛起線程。

九、非阻塞式IO

而對于非阻塞式IO,如果Socket的讀緩存是空的,操作系統并不會把調用read方法的線程掛起,而是立即返回一個EAGAIN的錯誤碼,在這種情景下,可以輪詢read方法,直到Socket的讀緩存有數據則可以讀到數據,這種方式的缺點非常明顯,就是消耗大量的CPU。

十、多路復用IO

對于阻塞式IO,由于操作系統會掛起調用線程,所以如果想同時處理多個Socket,就必須相應地創建多個線程,線程會消耗內存,增加操作系統進行線程切換的負載,所以這種模式不適合高并發場景。有沒有辦法較少線程數呢?

非阻塞IO貌似可以解決,在一個線程里輪詢多個Socket,看上去可以解決線程數的問題,但實際上這個方案是無效的,原因是調用read方法是一個系統調用,系統調用是通過軟中斷實現的,會導致進行用戶態和內核態的切換,所以很慢。

但是這個思路是對的,有沒有辦法避免系統調用呢?有,就是多路復用IO。

在Linux系統上select/epoll這倆系統API支持多路復用IO,通過這兩個API,一個系統調用可以監控多個Socket,只要有一個Socket的讀緩存有數據了,方法就立即返回,然后你就可以去讀這個可讀的Socket了,如果所有的Socket讀緩存都是空的,則會阻塞,也就是將調用select/epoll的線程掛起。

所以select/epoll本質上也是阻塞式IO,只不過他們可以同時監控多個Socket。

1. select和epoll的區別

為什么多路復用IO模型有兩個系統API?我分析原因是,select是POSIX標準中定義的,但是性能不夠好,所以各個操作系統都推出了性能更好的API,如Linux上的epoll、Windows上的IOCP。

至于select為什么會慢,大家比較認可的原因有兩點,一點是select方法返回后,需要遍歷所有監控的Socket,而不是發生變化的Ssocket,還有一點是每次調用select方法,都需要在用戶態和內核態拷貝文件描述符的位圖(通過調用三次copy_from_user方法拷貝讀、寫、異常三個位圖)。epoll可以避免上面提到的這兩點。

2. Reactor多線程模型

在Linux操作系統上,性能最為可靠、穩定的IO模式就是多路復用,我們的應用如何能夠利用好多路復用IO呢?經過前人多年實踐總結,搞了一個Reactor模式,目前應用非常廣泛,著名的Netty、Tomcat NIO就是基于這個模式。

Reactor的核心是事件分發器和事件處理器,事件分發器是連接多路復用IO和網絡數據處理的中樞,核心就是監聽Socket事件(select/epoll_wait),然后將事件分發給事件處理器,事件分發器和事件處理器都可以基于線程池來做。

需要重點提一下的是,在Socket事件中主要有兩大類事件,一個是連接請求,另一個是讀寫請求,連接請求成功處理之后會創建新的Socket,讀寫請求都是基于這個新創建的Socket。

所以在網絡處理場景中,實現Reactor模式會稍微有點繞,但是原理沒有變化。具體實現可以參考Doug Lea的《Scalable IO in Java》(http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf)

Reactor原理圖

3. Nginx多進程模型

Nginx默認采用的是多進程模型,Nginx分為Master進程和Worker進程,真正負責監聽網絡請求并處理請求的只有Worker進程,所有的Worker進程都監聽默認的80端口,但是每個請求只會被一個Worker進程處理。

這里面的玄機是:每個進程在accept請求前必須爭搶一把鎖,得到鎖的進程才有權處理當前的網絡請求。每個Worker進程只有一個主線程,單線程的好處是無鎖處理,無鎖處理并發請求,這基本上是高并發場景里面的最高境界了。

(參考http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf)

數據經過網卡、操作系統、網絡協議中間件(Tomcat、Netty等)重重關卡,終于到了我們應用開發人員手里,我們如何處理這些高并發的請求呢?我們還是先從提升單機處理能力的角度來思考這個問題。

4. 突破木桶理論

據經過網卡、操作系統、中間件(Tomcat、Netty等)重重關卡,終于到了我們應用開發人員手里,我們如何處理這些高并發的請求呢?

我們還是先從提升單機處理能力的角度來思考這個問題,在實際應用的場景中,問題的焦點是如何提高CPU的利用率(誰叫它發展的最快呢),木桶理論講最短的那根板決定水位,那為啥不是提高短板IO的利用率,而是去提高CPU的利用率呢?

這個問題的答案是在實際應用中,提高了CPU的利用率往往會同時提高IO的利用率。當然在IO利用率已經接近極限的條件下,再提高CPU利用率是沒有意義的。我們先來看看如何提高CPU的利用率,后面再看如何提高IO的利用率。

5. 并行與并發

提升CPU利用率目前主要的方法是利用CPU的多核進行并行計算,并行和并發是有區別的,在單核CPU上,我們可以一邊聽MP3,一邊Coding,這個是并發,但不是并行,因為在單核CPU的視野,聽MP3和Coding是不可能同時進行的。

只有在多核時代,才會有并行計算。并行計算這東西太高級,工業化應用的模型主要有兩種,一種是共享內存模型,另外一種是消息傳遞模型。

6. 多線程設計模式

對于共享內存模型,其原理基本都來自大師Dijkstra在半個世紀前(1965)的一篇論文《Cooperating sequential processes》,這篇論文提出了大名鼎鼎的概念信號量,Java里面用于線程同步的wait/notify也是信號量的一種實現。

大師的東西看不懂,學不會也不用覺得丟人,畢竟大師的嫡傳子弟也沒幾個。東洋有個叫結城浩的總結了一下多線程編程的經驗,寫了本書叫《JAVA多線程設計模式》,這個還是挺接地氣(能看懂)的。下面簡單介紹一下。

(1) Single Threaded Execution

這個模式是把多線程變成單線程,多線程在同時訪問一個變量時,會發生各種莫名其妙的問題,這個設計模式直接把多線程搞成了單線程,于是安全了,當然性能也就下來了。最簡單的實現就是利用synchronized將存在安全隱患的代碼塊(方法)保護起來。在并發領域有個臨界區(criticalsections)的概念,我感覺和這個模式是一回事。

(2) Immutable Pattern

如果共享變量永遠不變,那就多個線程訪問就沒有任何問題,永遠安全。這個模式雖然簡單,但是用的好,能解決很多問題。

(3) Guarded Suspension Patten

這個模式其實就是等待-通知模型,當線程執行條件不滿足時,掛起當前線程(等待),當條件滿足時,喚醒所有等待的線程(通知),在Java語言里利用synchronized,wait/notifyAll可以很快實現一個等待通知模型。結城浩將這個模式總結為多線程版的If,我覺得非常貼切。

(4) Balking

這個模式和上個模式類似,不同點是當線程執行條件不滿足時直接退出,而不是像上個模式那樣掛起。這個用法最大的應用場景是多線程版的單例模式,當對象已經創建了(不滿足創建對象的條件)就不用再創建對象(退出)。

(5) Producer-Consumer

生產者-消費者模式,全世界人都知道。我接觸的最多的是一個線程處理IO(如查詢數據庫),一個(或者多個)線程處理IO數據,這樣IO和CPU就都能成分利用起來。如果生產者和消費者都是CPU密集型,再搞生產者-消費者就是自己給自己找麻煩了。

(6) Read-Write Lock

讀寫鎖解決的讀多寫少場景下的性能問題,支持并行讀,但是寫操作只允許一個線程做。如果寫操作非常非常少,而讀的并發量非常非常大,這個時候可以考慮使用寫時復制(copy on write)技術,我個人覺得應該單獨把寫時復制單獨作為一個模式。

(7) Thread-Per-Message

就是我們經常提到的一請求一線程。

(8) Worker Thread

一請求一線程的升級版,利用線程池解決線程的頻繁創建、銷毀導致的性能問題。BIO年代Tomcat就是用的這種模式。

(9) Future

當你調用某個耗時的同步方法很心煩,想同時干點別的事情,可以考慮用這個模式,這個模式的本質是個同步變異步的轉換器。同步之所以能變異步,本質上是啟動了另外一個線程,所以這個模式和一請求一線程還是多少有點關系的。

(10) Two-Phase Termination

這個模式能解決優雅地終止線程的需求。

(11) Thread-Specific Storage

線程本地存儲,避免加鎖、解鎖開銷的利器,C#里面有個支持并發的容器ConcurrentBag就是采用了這個模式,這個星球上最快的數據庫連接池HikariCP借鑒了ConcurrentBag的實現,搞了個Java版的,有興趣的同學可以參考。

(12) Active Object(這個不講也罷)

這個模式相當于降龍十八掌的最后一掌,綜合了前面的設計模式,有點復雜,個人覺得借鑒的意義大于參考實現。

最近國人也出過幾本相關的書,但總體還是結城浩這本更能經得住推敲。基于共享內存模型解決并發問題,主要問題就是用好鎖,但是用好鎖,還是有難度的,所以后來又有人搞了消息傳遞模型,這個后面再聊。

基于共享內存模型解決并發問題,主要問題就是用好鎖,但是用好鎖,還是有難度的,所以后來又有人搞了消息傳遞模型。

十一、消息傳遞模型

共享內存模型難度還是挺大的,而且你沒有辦法從理論上證明寫的程序是正確的,我們總一不小心就會寫出來個死鎖的程序來,每當有了問題,總會有大師出來,于是消息傳遞(Message-Passing)模型橫空出世(發生在上個世紀70年代),消息傳遞模型有兩個重要的分支,一個是Actor模型,一個是CSP模型。

十二、Actor模型

Actor模型因為Erlang聲名鵲起,后來又出現了Akka。在Actor模型里面,沒有操作系統里所謂進程、線程的概念,一切都是Actor,我們可以把Actor想象成一個更全能、更好用的線程。

在Actor內部是線性處理(單線程)的,Actor之間以消息方式交互,也就是不允許Actor之間共享數據,沒有共享,就無需用鎖,這就避免了鎖帶來的各種副作用。

Actor的創建和new一個對象沒有啥區別,很快、很小,不像線程的創建又慢又耗資源;Actor的調度也不像線程會導致操作系統上下文切換(主要是各種寄存器的保存、恢復),所以調度的消耗也很小。

Actor還有一個有點爭議的優點,Actor模型更接近現實世界,現實世界也是分布式的、異步的、基于消息的、尤其Actor對于異常(失敗)的處理、自愈、監控等都更符合現實世界的邏輯。

但是這個優點改變了編程的思維習慣,我們目前大部分編程思維習慣其實是和現實世界有很多差異的(這個回頭再細說),一般來講,改變我們思維習慣的事情,阻力總是超乎我們的想象。

十三、CSP模型

Golang在語言層面支持CSP模型,CSP模型和Actor模型的一個感官上的區別是在CSP模型里面,生產者(消息發送方)和消費者(消息接收方)是完全松耦合的,生產者完全不知道消費者的存在,但是在Actor模型里面,生產者必須知道消費者,否則沒辦法發送消息。

CSP模型類似于我們在多線程里面提到的生產者-消費者模型,核心的區別我覺得在于CSP模型里面有類似綠色線程(green thread)的東西,綠色線程在Golang里面叫做協程,協程同樣是個非常輕量級的調度單元,可以快速創建而且資源占用很低。

Actor在某種程度上需要改變我們的思維方式,而CSP模型貌似沒有那么大動靜,更容易被現在的開發人員接受,都說Golang是工程化的語言,在Actor和CSP的選擇上,也可以看到這種體現。

十四、多樣世界

除了消息傳遞模型,還有事件驅動模型、函數式模型。事件驅動模型類似于觀察者模式,在Actor模型里面,消息的生產者必須知道消費者才能發送消息,而在事件驅動模型里面,事件的消費者必須知道消息的生產者才能注冊事件處理邏輯。

Akka里消費者可以跨網絡,事件驅動模型的具體實現如Vertx里,消費者也可以訂閱跨網絡的事件,從這個角度看,大家都在取長補短。

【本文來自51CTO專欄作者張開濤的微信公眾號(開濤的博客),公眾號id: kaitao-1234567】

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2018-06-29 09:59:26

高并發互聯網網卡

2015-05-14 15:36:59

阿里云亞馬遜云計算

2018-07-04 13:41:17

架構系統結構數據庫

2020-01-16 15:35:00

高并發架構服務器

2018-02-05 09:30:23

高性能高并發服務

2019-07-31 07:36:12

架構運維技術

2019-11-08 08:40:29

Java高并發流量

2015-12-09 15:16:03

架構師京東架構

2014-04-09 18:01:42

京東

2017-09-16 18:29:00

代碼數據庫線程

2019-02-22 10:19:09

AI 行業 人工智能

2014-03-18 16:04:45

亞馬遜AWS

2012-08-04 16:02:00

架構師

2017-02-20 07:47:04

緩存HASH高并發

2016-12-28 14:16:25

京東高并發系統設計

2018-09-17 05:00:59

架構系統練級

2016-04-20 17:18:29

分布式數據庫京東WOT

2019-03-18 05:02:30

高并發京東架構

2011-04-07 16:20:24

軟件架構師架構師架構

2016-08-29 11:33:23

京東云云計算云安全
點贊
收藏

51CTO技術棧公眾號

91性高湖久久久久久久久_久久99| 91精品国产色综合久久| 欧美日韩一区二区三区在线观看免| 看片网址国产福利av中文字幕| 国产区精品区| 91精品国产综合久久蜜臀| 一本大道东京热无码aⅴ| 三级视频在线看| 蜜桃视频在线一区| 欧美激情一二三| av电影在线不卡| 涩涩屋成人免费视频软件| 色88888久久久久久影院野外| 正在播放一区二区三区| 日本波多野结衣在线| 蜜臀91精品一区二区三区| 久久久久久久久网站| 亚洲综合欧美综合| 国偷自产av一区二区三区| 欧美日韩亚洲国产综合| 精品久久一二三| 国产在线更新| xnxx国产精品| 老熟女高潮一区二区三区| 夜级特黄日本大片_在线| 成人性视频免费网站| 日韩免费观看av| 久久久久亚洲AV| 91视频久久| 亚洲欧美日韩一区在线| 无码人妻丰满熟妇啪啪网站| 国产极品嫩模在线观看91精品| 亚洲国产视频一区二区| 中文字幕免费在线不卡| 青草久久伊人| 波多野洁衣一区| αv一区二区三区| 91精品人妻一区二区三区果冻| 性伦欧美刺激片在线观看| 欧美大片在线看免费观看| 91禁男男在线观看| 狠狠色丁香婷婷综合影院| 亚洲精品一区久久久久久| 永久免费未满蜜桃| 日韩av综合| 91精品欧美综合在线观看最新| 亚洲xxxx2d动漫1| 亚洲日本天堂| 日韩欧美a级成人黄色| 无码 制服 丝袜 国产 另类| 羞羞电影在线观看www| 成人免费在线观看入口| 亚洲一二区在线| yw视频在线观看| 欧美国产丝袜视频| 日韩欧美精品一区二区| 国产在线三区| 久久久国产精品午夜一区ai换脸| 欧美不卡三区| 黑人与亚洲人色ⅹvideos| 久久久亚洲高清| 含羞草久久爱69一区| 免费观看a视频| av亚洲精华国产精华精华| 国产精品国产三级国产专区53| 午夜久久久久久久久久| 成人综合婷婷国产精品久久免费| 国产精品久久九九| 少妇高潮一区二区三区69| 99精品久久99久久久久| 欧美日韩一区二区视频在线| 精品资源在线看| 国产精品素人一区二区| 性欧美18一19内谢| 欧美hdxxxxx| 精品国产乱码久久久久久天美| 欧美极品欧美精品欧美| 精品视频在线一区二区在线| 91超碰这里只有精品国产| 国产精品久久久久野外| 第四色中文综合网| 日韩电视剧在线观看免费网站| 中文幕无线码中文字蜜桃| 日韩大片在线| 欧美激情高清视频| 少妇太紧太爽又黄又硬又爽| 免费久久精品视频| 97国产超碰| 深夜福利视频在线观看| 国产精品欧美久久久久一区二区| 91麻豆天美传媒在线| 高潮在线视频| 精品污污网站免费看| 久久av一区二区三| 曰本一区二区三区视频| 久久精品国产视频| 色网站在线播放| 加勒比av一区二区| 麻豆传媒一区| 3d玉蒲团在线观看| 欧美性极品少妇精品网站| 亚洲国产日韩欧美在线观看| 视频免费一区二区| 亚洲丝袜在线视频| 久久久久亚洲av无码专区| 天堂av在线一区| 国产成人免费观看| 日本成人网址| 色婷婷一区二区三区四区| 69久久精品无码一区二区| 亚洲专区视频| 欧美日韩国产成人在线| 波多野结衣视频免费观看| 国产成a人亚洲精| 亚洲一区三区在线观看| 亚洲福利影院| 精品女同一区二区| 99热在线观看精品| 午夜在线a亚洲v天堂网2018| 亚洲r级在线观看| 国产美女性感在线观看懂色av| 亚洲一区二区视频在线| 精品久久久99| 欧美色蜜桃97| 人体精品一二三区| 色哟哟国产精品色哟哟| 亚洲激情欧美激情| 亚洲一区精品视频在线观看| 国产成人调教视频在线观看 | 熟妇人妻系列aⅴ无码专区友真希| 国产亚洲欧美一区在线观看| 国产原创中文在线观看| 亚洲乱码一区| 麻豆成人在线看| 一级视频在线播放| 中文字幕一区免费在线观看| wwwwxxxx日韩| 国产成人精品999在线观看| 777777777亚洲妇女| 人妻精品一区一区三区蜜桃91| 亚洲日本va在线观看| 911福利视频| 久久精品国产亚洲夜色av网站| 国产精品扒开腿爽爽爽视频| 欧美新色视频| 色婷婷久久久亚洲一区二区三区| 国产三级视频网站| 久久久久久一区二区| 欧美日韩一区二| 欧美日韩尤物久久| 中文字幕亚洲欧美日韩在线不卡| 一区二区三区麻豆| 日本一二三四高清不卡| 91欧美视频在线| 国产精品99久久久久久动医院| 91精品久久久久久久久中文字幕 | 欧美亚洲另类在线| 青青免费在线视频| 日本精品一区二区三区四区的功能| www.av欧美| 男女男精品视频| 一区二区在线不卡| 视频一区国产| 91禁外国网站| 国产精品ⅴa有声小说| 欧美三级日韩在线| 加勒比婷婷色综合久久| 国产风韵犹存在线视精品| 国产精彩视频一区二区| 亚洲国产网址| 国产精品视频免费观看www| 精品176二区| 欧美精品一区二区久久久| av资源免费观看| 国产精品久久久久aaaa樱花 | 国产精品久久一卡二卡| 成人综合久久网| 欧美精品18| 九色91在线视频| 成人免费视频观看| 九九久久综合网站| 午夜在线观看视频18| 欧美亚洲禁片免费| 麻豆国产尤物av尤物在线观看| 99久久精品国产麻豆演员表| 在线观看的毛片| 红桃视频国产一区| 欧洲精品在线一区| 视频在线一区| 国产成人精品午夜| 亚洲区欧洲区| 国产一区二区三区在线视频| 国产精品久久久久毛片| 亚洲成人tv网| 免费黄色激情视频| 99视频精品在线| 成年人三级黄色片| 亚洲九九精品| 国产欧美综合一区| 九一精品国产| 国产精品国产三级国产专区53 | 欧美日韩综合在线免费观看| 亚洲国产精品成人无久久精品| 日本一区二区动态图| 国产伦精品一区三区精东| 九色porny丨国产精品| 九九九九免费视频| 欧美日韩国产在线一区| 日韩中文字幕av在线| 国产欧美一区二区三区米奇| 成人国产精品久久久| 免费成人直播| 久久久久久久久亚洲| 麻豆网站在线| 夜夜嗨av色综合久久久综合网| 五月天丁香视频| 日韩欧美国产一区二区在线播放 | 不卡中文字幕在线| 在线日本制服中文欧美| 国产三区精品| 白嫩白嫩国产精品| 亚洲一区二区三| 四虎精品在线观看| 国产精品成人va在线观看| 人在线成免费视频| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 国产探花在线免费观看| 国产精品欧美一区喷水| 免费人成又黄又爽又色| 91视视频在线观看入口直接观看www| 亚洲熟女乱综合一区二区| 久久99精品久久久久久国产越南 | 亚洲日本一区二区三区在线不卡| 亚洲+变态+欧美+另类+精品| 国产日韩精品一区观看| 91精品短视频| 国产精品毛片va一区二区三区| 精品午夜av| 91色视频在线导航| 成人在线精品| 亚洲最大av网站| 国产精品亚洲综合在线观看| 国产欧美一区二区三区在线看| 成人国产一区| 国产精品自产拍在线观| 欧美一区二区三区婷婷| 国产精品丝袜白浆摸在线| 777午夜精品电影免费看| 国产精品偷伦视频免费观看国产| 99热播精品免费| 国产精品美女在线| 日韩久久一区| 亚洲一区二区三区四区在线播放| 日韩精品久久久久久久软件91| 91av免费看| 国产 日韩 欧美 综合 一区| 国产综合欧美在线看| 日本久久成人网| 欧美人与物videos另类| 秋霞欧美视频| 97av中文字幕| 日韩视频一区| 国产福利一区视频| 蜜臀av性久久久久蜜臀av麻豆 | 91在线国产观看| 37p粉嫩大胆色噜噜噜| 欧美激情在线观看视频免费| 国产又色又爽又高潮免费| 亚洲免费观看高清完整版在线| 久久久久久激情| 精品久久久免费| 欧美成人一区二区视频| 欧美一区二区三区四区视频| 亚洲精品一区二区三区不卡| 亚洲精品一区二区三区不| 永久免费av片在线观看全网站| 欧美精品日韩三级| 手机在线观看av网站| 国产精品专区h在线观看| 91精品啪在线观看国产手机| 日本不卡二区| 午夜激情一区| 成年人黄色片视频| 久久99久久99精品免视看婷婷| 亚洲av人人澡人人爽人人夜夜| 久久婷婷色综合| 国内偷拍精品视频| 色菇凉天天综合网| 国内老熟妇对白xxxxhd| 亚洲欧美另类国产| av毛片在线| 国产成人aa精品一区在线播放| 国内精品视频| 欧美午夜精品理论片a级大开眼界| 91精品国产91久久久久久密臀| 丰满少妇久久久| 久久97超碰色| 一卡二卡三卡四卡| 亚洲乱码国产乱码精品精可以看| 亚洲欧美自拍视频| 日韩三级av在线播放| 成人av毛片| 91chinesevideo永久地址| 91麻豆精品| 日本不卡一区二区三区在线观看| 欧美视频导航| 亚洲va综合va国产va中文| 久久综合色婷婷| 久草国产在线观看| 欧美三电影在线| 牛牛澡牛牛爽一区二区| 欧美国产乱视频| 日韩欧乱色一区二区三区在线 | 成人在线小视频| 欧美理论电影大全| 国产在线青青草| www.激情成人| 免费在线观看av网址| 日韩一区二区三区色| 亚洲精品成人久久| 51xtv成人影院| 国产综合香蕉五月婷在线| 精品中文一区| 人妻av中文系列| 国产成人免费视频网站| 欧美日韩午夜视频| 欧美日韩你懂的| 成人18在线| 国产精品一区二区三| 欧美少妇性xxxx| 三年中国国语在线播放免费| 久久在线观看免费| 精品在线播放视频| 日韩av在线免费观看一区| av中文字幕在线看| 国产三级精品在线不卡| 99综合在线| 亚洲色图14p| 色又黄又爽网站www久久| 你懂的在线视频| 欧洲成人在线视频| 最新亚洲精品| www黄色在线| 国产精品免费网站在线观看| 中文字幕乱码在线观看| 最近2019中文字幕第三页视频| 韩日一区二区| 一区精品视频| 国产麻豆午夜三级精品| 亚洲熟女乱综合一区二区| 亚洲动漫第一页| 亚洲三区在线播放| 国产成一区二区| 成人一区二区| 肉色超薄丝袜脚交| 亚洲综合色在线| 日本在线丨区| 国产精品都在这里| 天天射综合网视频| 亚洲成人福利视频| 图片区日韩欧美亚洲| 欧洲亚洲在线| 成人久久一区二区三区| 欧美体内she精视频在线观看| 欧美xxxxx少妇| 在线观看免费一区| 黄色小网站在线观看| 成人区精品一区二区| 久久国产精品久久w女人spa| 长河落日免费高清观看| 日韩一区二区三区视频在线| 国产盗摄在线视频网站| 日韩亚洲视频在线| 久久99久久久久| 波多野结衣国产| 色偷偷偷亚洲综合网另类| 视频在线观看免费影院欧美meiju| 欧美日韩一道本| 国产精品欧美综合在线| 动漫av一区二区三区| 国产精品一区在线| a资源在线观看| 日韩欧美激情在线| 日本成人三级电影| 在线视频福利一区| 成人99免费视频| 中文字幕福利视频| 色综合视频网站| av亚洲免费| 蜜臀av粉嫩av懂色av| 欧美综合在线视频| 色呦呦网站在线观看| 欧美日韩在线一二三| 国产一区二区三区香蕉| 久久中文字幕免费| 欧美区二区三区| 大胆日韩av| 亚洲精品乱码久久久久久久| 欧美猛男超大videosgay| 麻豆mv在线看|