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

為什么 Kafka 的吞吐量那么高?

開發(fā) 前端
在眾多的消息中間件中,Kafka 的性能和吞吐量絕對是頂尖級別的,那么問題來了, Kafka 是如何做到高吞吐的。在性能優(yōu)化方面,它使用了哪些技巧呢?下面我們就來分析一下。

在眾多的消息中間件中,Kafka 的性能和吞吐量絕對是頂尖級別的,那么問題來了, Kafka 是如何做到高吞吐的。在性能優(yōu)化方面,它使用了哪些技巧呢?下面我們就來分析一下。

以'批'為單位

批量處理是一種非常有效的提升系統(tǒng)吞吐量的方法,操作系統(tǒng)提供的緩沖區(qū)也是如此。在 Kafka 內部,消息處理是以"批"為單位的,生產者、Broker、消費者,都是如此。

在 Kafka 的客戶端 SDK 中,生產者只提供了單條發(fā)送的 send() 方法,并沒有提供任何批量發(fā)送的接口。原因是 Kafka 根本就沒有提供單條發(fā)送的功能,是的你沒有看錯,雖然它提供的 API 每次只能發(fā)送一條消息,但實際上 Kafka 的客戶端 SDK 在實現消息發(fā)送邏輯的時候,采用了異步批量發(fā)送的機制。

當你調用 send() 方法發(fā)送一條消息之后,無論你是同步發(fā)送還是異步發(fā)送,Kafka 都不會立即就把這條消息發(fā)送出去。它會先把這條消息,存放在內存中緩存起來,然后選擇合適的時機把緩存中的所有消息組成一批,一次性發(fā)給 Broker。簡單地說,就是攢一波一起發(fā)。

而 Kafka Broker 在收到這一批消息后,也不會將其還原成多條消息、再一條一條地處理,這樣太慢了。Kafka 會直接將"批消息"作為一個整體,也就是說,在 Broker 整個處理流程中,無論是寫入磁盤、從磁盤讀出來、還是復制到其他副本,在這些流程中,批消息都不會被解開,而是一直作為一條"批消息"來進行處理的。

在消費時,消息同樣是以批為單位進行傳遞的,消費者會從 Broker 拉到一批消息。然后將批消息解開,再一條一條交給用戶代碼處理。

比如生產者發(fā)送 30 條消息,在業(yè)務程序看來雖然是發(fā)送了 30 條消息,但對于 Kafka 的 Broker 來說,它其實就是處理了 1 條包含 30 條消息的"批消息"而已。顯然處理 1 次請求要比處理 30 次請求快得多,因為構建批消息和解開批消息分別在生產者和消費者所在的客戶端完成,不僅減輕了 Broker 的壓力,最重要的是減少了 Broker 處理請求的次數,提升了總體的處理能力。

批處理只能算是一種常規(guī)的優(yōu)化手段,它是通過減少網絡 IO 從而實現優(yōu)化。而 Kafka 每天要處理海量日志,那么磁盤 IO 也是它的瓶頸。并且對于處在同一個內網的數據中心來說,相比讀寫磁盤,網絡傳輸是非常快的。

接下來我們看一下,Kafka 在磁盤 IO 這塊兒做了哪些優(yōu)化。

磁盤順序讀寫

我們知道 kafka 是將消息存儲在文件系統(tǒng)之上的,高度依賴文件系統(tǒng)來存儲和緩存消息,因此可能有人覺得這樣做效率是不是很低呢?因為要和磁盤打交道,而且使用的還是機械硬盤。

首先機械硬盤不適合隨機讀寫,但如果是順序讀寫,那么吞吐量實際上是不差的。在 SSD(固態(tài)硬盤)上,順序讀寫的性能要比隨機讀寫快幾倍,如果是機械硬盤,這個差距會達到幾十倍。因為操作系統(tǒng)每次從磁盤讀寫數據的時候,需要先尋址,也就是先要找到數據在磁盤上的物理位置,然后再進行數據讀寫。如果是機械硬盤,這個尋址需要比較長的時間,因為它要移動磁頭,這是個機械運動,機械硬盤工作的時候會發(fā)出咔咔的聲音,就是移動磁頭發(fā)出的聲音。

順序讀寫相比隨機讀寫省去了大部分的尋址時間,因為它只要尋址一次,就可以連續(xù)地讀寫下去,所以說性能要比隨機讀寫好很多。

而 kafka 正是利用了這個特性,任何發(fā)布到分區(qū)的消息都會被追加到 "分區(qū)數據文件" 的尾部,如果一個文件寫滿了,就創(chuàng)建一個新的文件繼續(xù)寫。消費的時候,也是從某個全局的位置開始,也就是某一個 log 文件中的某個位置開始,順序地把消息讀出來。這樣的順序寫操作讓 kafka 的效率非常高。

使用 PageCache

任何系統(tǒng),不管大小,如果想提升性能,使用緩存永遠是一個不錯的選擇,而 PageCache 就是操作系統(tǒng)在內存中給磁盤上的文件建立的緩存,它是由內核托管的。無論我們使用什么語言,編寫的程序在調用系統(tǒng)的 API 讀寫文件的時候,并不會直接去讀寫磁盤上的文件,應用程序實際操作的都是 PageCache,也就是文件在內存中緩存的副本。

應用程序在寫入文件的時候,操作系統(tǒng)會先把數據寫入到內存中的 PageCache,然后再一批一批地寫到磁盤上。讀取文件的時候,也是從 PageCache 中來讀取數據,這時候會出現兩種可能情況。

一種是 PageCache 中有數據,那就直接讀取,這樣就節(jié)省了從磁盤上讀取的時間;另一種情況是,PageCache 中沒有數據,這時候操作系統(tǒng)會引發(fā)一個缺頁中斷,應用程序的讀取線程會被阻塞,操作系統(tǒng)把數據從文件復制到 PageCache 中,然后應用程序再從 PageCache 繼續(xù)把數據讀出來,這時會真正讀一次磁盤上的文件,這個讀的過程就會比較慢。

用戶的應用程序在使用完某塊 PageCache 后,操作系統(tǒng)并不會立刻就清除這個 PageCache,而是盡可能地利用空閑的物理內存保存這些 PageCache,除非系統(tǒng)內存不夠用,操作系統(tǒng)才會清理掉一部分 PageCache。清理的策略一般是 LRU 或它的變種算法,核心邏輯就是:優(yōu)先保留最近一段時間最常使用的那些 PageCache。

另外 PageCache 還有預讀功能,假設我們讀取了 1M 的內容,但 Linux 實際讀取的卻并不止 1M,因為這樣你后續(xù)再讀取的時候就不需要從磁盤上加載了。因為從磁盤到內存的數據傳輸速度是很慢的,如果物理內存有空余,那么就可以多緩存一些內容。

而 Kafka 在讀寫消息文件的時候,充分利用了 PageCache 的特性。一般來說,消息剛剛寫入到服務端就會被消費,讀取的時候,對于這種剛剛寫入的 PageCache,命中的幾率會非常高。也就是說,大部分情況下,消費讀消息都會命中 PageCache,帶來的好處有兩個:一個是讀取的速度會非常快,另外一個是,給寫入消息讓出磁盤的 IO 資源,間接也提升了寫入的性能。

ZeroCopy(零拷貝)

Kafka 還使用了零拷貝技術,首先 Broker 將消息發(fā)送給消費者的過程如下:

  • 將指定的消息日志從文件讀到內存中;
  • 將消息通過網絡發(fā)送給消費者客戶端;

這個過程會經歷幾次復制,以及用戶空間和內核空間的切換,示意圖如下。

整個過程大概是以上 6 個步驟,我們分別解釋一下。

1)應用程序要讀取磁盤文件,但只有內核才能操作硬件設備,所以此時會從用戶空間切換到內核空間。

2)通過 DMA 將文件讀到 PageCache 中,此時的數據拷貝是由 DMA 來做的,不耗費 CPU。關于 DMA,它是一種允許硬件系統(tǒng)訪問計算機內存的技術,說白了就是給 CPU 打工的,幫 CPU 干一些搬運數據的簡單工作。

CPU 告訴 DMA 自己需要哪些數據,然后 DMA 負責搬運到 PageCache,等搬運完成后,DMA 控制器再通過中斷通知 CPU,這樣就極大地節(jié)省了 CPU 的資源。

但如果要讀取的內容已經命中 PageCache,那么這一步可以省略。

3)將文件內容從 PageCache 拷貝到用戶空間中,因為應用程序在用戶空間,磁盤數據必須從內核空間搬運到用戶空間,應用程序才能操作它。注意:這一步的數據搬運不再由 DMA 負責,而是由 CPU 負責。

因為 DMA 主要用于硬件設備與內存之間的數據傳輸,例如從磁盤到 RAM,從 RAM 到網卡。雖然 DMA 可以減少 CPU 的負擔,但通常不用于內核空間和用戶空間之間的數據搬運,至于原因也很簡單:

  • 操作系統(tǒng)需要保護內核空間,防止用戶程序直接訪問,以維護系統(tǒng)的安全和穩(wěn)定。通過 CPU 進行數據拷貝,操作系統(tǒng)可以控制哪些數據和資源可以被用戶程序訪問。
  • CPU 可以處理復雜的邏輯和任務調度,更適合執(zhí)行這種涉及系統(tǒng)安全和資源管理的任務。
  • 在數據從內核空間傳輸到用戶空間的過程中,可能需要進行一些額外的處理,例如格式轉換、權限檢查等,這些都是 CPU 更擅長的。

另外用戶空間和內核空間的切換,本質上就是 CPU 的執(zhí)行上下文和權限級別發(fā)生了改變。

因此這一步會涉及用戶態(tài)和內核態(tài)之間的切換,和一個數據的拷貝。

4) 文件內容讀取之后,要通過網絡發(fā)送給消費者客戶端。而內核提供了一個 Socket 緩沖區(qū),位于用戶空間的應用程序在發(fā)送數據時,會先通過 CPU 將數據拷貝到內核空間的 Socket 緩沖區(qū)中,再由內核通過網卡發(fā)送給消費者。

同樣的,當數據從網絡到達時,也會先被放在 Socket 緩沖區(qū)中。用程序從該緩沖區(qū)讀取數據,數據被拷貝到用戶空間。

所以應用程序在通過網絡收發(fā)數據時,其實都是在和 Socket 緩沖區(qū)打交道,具體的發(fā)送和接收任務都是由內核來做的,因為只有內核才能操作硬件設備。用戶空間的代碼要想與硬件設備交互,必須通過系統(tǒng)調用或操作系統(tǒng)提供的其它接口,然后由內核代為執(zhí)行。

所以通過網絡發(fā)送數據,會涉及一次數據的拷貝,以及用戶空間和內核空間的切換。因為 CPU 要將數據從用戶空間搬運到內核空間的 Socket 緩沖區(qū)中。

5) 內核要將 Socket 緩沖區(qū)里的數據通過網卡發(fā)送出去,于是再將數據從 Socket 緩沖區(qū)搬到網卡的緩沖區(qū)里面,而這一步搬運是由 DMA 來做的。只要不涉及用戶空間,大部分的數據搬運都可以由 DMA 來做,而一旦涉及到用戶空間,數據搬運就必須由 CPU 來做。

6) 發(fā)送完畢之后,再從內核空間切換到用戶空間,應用程序繼續(xù)干其它事情。

如果想要提升性能,那么關鍵就在于減少上下文切換的次數和數據拷貝的次數,因為用戶空間和內核空間的切換是需要成本的,至于數據拷貝就更不用說了。

而整個過程涉及了 4 次的上下文切換,因為用戶空間沒有權限操作磁盤或網卡,這些操作都需要交由操作系統(tǒng)內核來完成。而通過內核去完成某些任務的時候,需要使用操作系統(tǒng)提供的系統(tǒng)調用函數。而一次系統(tǒng)調用必然會發(fā)生兩次上下文切換:首先從用戶態(tài)切換到內核態(tài),當內核執(zhí)行完任務后,再切換回用戶態(tài)交由應用程序執(zhí)行其它代碼。

然后是數據拷貝,這個數據也被拷貝了 4 次,其中兩次拷貝由 DMA 負責,另外兩次由 CPU 負責。但很明顯,CPU 的兩次拷貝沒有太大必要,先將數據從 PageCache 拷貝到用戶空間,然后再從用戶空間拷貝到 Socket 緩沖區(qū)。既然這樣的話,那直接從 PageCache 拷貝到 Socket 緩沖區(qū)不行嗎。

如果文件在讀取之后不對它進行操作,或者說不對文件數據進行加工,只是單純地通過網卡發(fā)送出去,那么就沒必要到用戶空間這里繞一圈。

此時的 4 次上下文切換就變成了 2 次,因為系統(tǒng)調用只有 1 次。數據搬運也由 4 次變成了 3 次,所以總共減少了兩次上下文切換和一次數據拷貝。

而這種減少數據拷貝(特別是在用戶和內核之間的數據拷貝)的技術,便稱之為零拷貝。

Linux 內核提供了一個系統(tǒng)調用函數 sendfile(),便可以實現上面這個過程。

#include <sys/sendfile.h>

ssize_t sendfile(int out_fd, int in_fd, 
                 off_t *offset, size_t count);

out_fd 和 in_fd 均為文件描述符,分別代表要寫入的文件和要讀取的文件,offset 表示從文件的哪個位置開始讀,count 表示寫入多少個字節(jié)。返回值是實際寫入的長度。

當然像 Python、Java 都對 sendfile 進行了封裝,我們在使用 Python 進行 Socket 編程時,便可以使用該方法。

當然該方法會調用 os.sendfile(),它和 C 的 sendfile() 是一致的,如果是 Linux 系統(tǒng),那么不存在問題。如果是 Windows 系統(tǒng),os.sendfile() 則不可用,此時 Socket 的 sendfile 會退化為 send 方法。

然而目前來說,雖然實現了零拷貝,但還不是零拷貝的終極形態(tài)。我們看到 CPU 還是進行了一次拷貝,并且此時雖然不涉及用戶空間,但數據搬運依舊是 CPU 來做的。因為 DMA 主要負責硬件(例如磁盤或網卡)和內存的數據傳輸,但不適用于內存到內存的數據拷貝。

那么問題來了,數據文件從磁盤讀到 PageCache 之后,可不可以直接搬到網卡緩沖區(qū)里面呢?如果你的網卡支持 SG-DMA 技術,那么通過 CPU 將數據從 PageCache 拷貝到 socket 緩沖區(qū)這一步也可以省略。

你可以通過以下命令,查看網卡是否支持 SG(scatter-gather)特性:

[root@satori ~]# ethtool -k eth0 | grep scatter-gather
scatter-gather: on
 tx-scatter-gather: on
 tx-scatter-gather-fraglist: off [fixed]

Linux 內核從 2.4 版本開始起,對于那些支持 SG-DMA 技術的網卡,會進一步優(yōu)化 sendfile() 系統(tǒng)調用的過程,優(yōu)化后的過程如下:

  • DMA 將數據從磁盤拷貝到 PageCache;
  • 將描述符和數據長度發(fā)送到 Socket 緩沖區(qū),網卡的 SG-DMA 控制器基于該信息直接將 PageCache 的數據拷貝到網卡緩沖區(qū)中;

整個過程如下:

此時便是零拷貝(Zero-copy)技術的終極形態(tài),因為我們沒有在內存層面去拷貝數據,也就是說全程沒有通過 CPU 來搬運數據,所有的數據都是通過 DMA 來進行傳輸的。

使用零拷貝技術只需要兩次上下文切換和數據拷貝,就可以完成文件的傳輸,因為它通過一次系統(tǒng)調用(sendfile 方法)將磁盤讀取與網絡發(fā)送兩個操作給合并了,從而降低了上下文切換次數。而且兩次的數據拷貝過程也不需要通過 CPU,都是由 DMA 來搬運。所以總體來看,零拷貝技術可以把文件傳輸的性能提高至少一倍以上。

但需要注意的是,零拷貝技術不允許進程對文件內容作進一步加工,比如壓縮數據再發(fā)送。如果希望對讀取的文件內容做額外的操作,那么就只能拷貝到用戶空間了。

另外當傳輸大文件時,不建議使用零拷貝,因為 PageCache 可能被大文件占據,而導致「熱點」小文件無法利用到 PageCache,并且大文件的緩存命中率也不高,因此這種情況建議繞過 PageCache。

使用 PageCache 的 IO 叫做緩存 IO,不使用 PageCache 的 IO 叫做直接 IO。

小結

以上我們就探討了 Kafka 為什么會有如此高的吞吐量,在處理海量數據時為什么這么快。核心就在于以下幾點:

1)消息是以 "批" 為單位的。

2)利用磁盤的順序讀寫遠遠快于隨機讀寫。

3)使用 PageCache。

4)使用零拷貝技術。


責任編輯:華軒 來源: 古明地覺的編程教室
相關推薦

2024-05-23 16:41:40

2023-08-03 14:18:29

Rust阻塞函數

2024-11-08 13:36:09

2019-07-26 15:41:27

程序員技能開發(fā)者

2025-08-29 02:15:00

2013-04-19 09:45:20

AMPLabHadoopHDFS

2019-08-20 00:20:47

TCPHOL吞吐量

2023-02-09 08:57:11

Callable異步java

2024-09-12 15:24:29

2019-08-14 08:20:59

Iperf網絡吞吐量帶寬測試

2024-06-28 09:39:58

2024-09-09 14:12:38

2019-09-25 08:37:48

MySQL數據庫人生第一份工作

2020-07-29 08:06:30

Kafka MQ消息

2019-09-29 15:36:01

吞吐量MySQL數據庫

2009-02-24 09:28:00

2025-05-23 08:37:26

2013-10-11 11:22:14

GraphDBLinux內存管理數據庫

2024-03-20 10:39:52

微軟Garnet緩存存儲

2025-08-06 04:00:00

Spring響應式SSE
點贊
收藏

51CTO技術棧公眾號

下面一进一出好爽视频| 最近中文字幕日韩精品| 亚洲 自拍 另类小说综合图区| 午夜精品久久久久久久91蜜桃| 99精品国产福利在线观看免费| 亚洲天堂av在线播放| 亚洲AV无码久久精品国产一区| 乱人伦视频在线| 亚洲欧美综合在线精品| 蜜桃成人在线| 久久久久香蕉视频| 亚洲婷婷影院| 欧美成人性战久久| 欧美日韩在线观看不卡| √8天堂资源地址中文在线| 欧美激情一区不卡| 久久99精品久久久久久久久久| 一区二区视频免费观看| 亚洲视频成人| 欧美日韩高清在线观看| jizzjizz日本少妇| 妖精视频一区二区三区| 亚洲成人a**站| 婷婷激情综合五月天| 日韩a**中文字幕| 久久婷婷久久一区二区三区| 91在线在线观看| 曰批又黄又爽免费视频| 久久国产成人午夜av影院宅| 亚洲国内高清视频| 91猫先生在线| 黄色的视频在线观看| 国产精品传媒入口麻豆| 日本在线观看不卡| 视频二区在线| 免费成人美女在线观看| 日韩中文字幕欧美| 鲁丝一区二区三区| 日韩成人在线一区| 欧美性xxxx极品高清hd直播| 人妻少妇精品无码专区二区| 在线观看操人| 99精品视频一区| 青青草国产精品一区二区| 国产精品theporn动漫| 欧美女人交a| 久久夜精品va视频免费观看| 三级黄色免费观看| 99tv成人| 日韩一区二区三区视频在线| 国产成年人视频网站| 高清在线一区| 欧美嫩在线观看| 色戒在线免费观看| 亚洲视频自拍| 6080午夜不卡| 成人在线短视频| 狂野欧美xxxx韩国少妇| 91精品国产乱| 麻豆短视频在线观看| 1313精品午夜理伦电影| 精品国产精品网麻豆系列| 麻豆传传媒久久久爱| 最近在线中文字幕| 色噜噜狠狠色综合中国| 一区二区三区免费播放| 亚洲综合伊人| 日韩欧美国产午夜精品| 亚洲精品国产成人av在线| 美国成人xxx| 精品亚洲精品福利线在观看| 精品无码一区二区三区| 日韩免费看片| 欧美精品日韩三级| 美国美女黄色片| 久久久久午夜电影| 久久久伊人日本| 久久夜色精品国产噜噜亚洲av| 日韩精品成人一区二区在线| 91精品在线播放| 人妻精品无码一区二区| 国产亚洲一本大道中文在线| 国产精品久久亚洲7777| 天堂av网在线| 欧美激情一区二区三区在线| 国产又大又长又粗又黄| av第一福利在线导航| 91久久一区二区| www.51色.com| 四虎884aa成人精品最新| 中文字幕v亚洲ⅴv天堂| 青青草原免费观看| 国产精品91一区二区三区| 欧美日韩成人在线视频| 日日夜夜操视频| 中国女人久久久| 国产精品视频一| 囯产精品久久久久久| 国产日韩欧美一区二区三区乱码| 国产系列第一页| 中文字幕人成乱码在线观看| 91麻豆精品国产综合久久久久久| 日韩av一二区| 欧美一区二区三区久久精品茉莉花| 欧美在线视频导航| av免费在线观看不卡| 国产午夜精品福利| 久艹在线免费观看| 日本中文字幕中出在线| 91福利小视频| 男人网站在线观看| 性欧美69xoxoxoxo| 国产成人一区二区| 少妇高潮久久久| 亚洲丝袜制服诱惑| mm1313亚洲国产精品无码试看| 动漫3d精品一区二区三区乱码| 自拍偷拍亚洲欧美| 中文字幕在线播| av欧美精品.com| 男人j进女人j| 欧美天堂在线| 亚洲欧美日韩一区在线| 亚洲国产日韩一区无码精品久久久| 韩国av一区| 成人性生交大片免费观看嘿嘿视频| 欧美女v视频| 欧美日韩精品在线视频| 国产精品又粗又长| 亚洲欧美日本国产| 久久精品成人一区二区三区| 天堂免费在线视频| 久久精品国产精品亚洲红杏| 免费不卡亚洲欧美| 日韩精品极品| 亚洲精品www久久久| 国产一级一片免费播放| 国产精品一级在线| 一二三四中文字幕| 免费看一区二区三区| 久久久国产精品视频| 夜夜爽8888| 国产精品理伦片| 香蕉视频网站入口| 日韩欧美精品综合| 国产综合香蕉五月婷在线| av资源网站在线观看| 在线一区二区视频| www色com| 久久99久久精品| 五月天男人天堂| 精品一区二区三区中文字幕| 欧美大尺度激情区在线播放| 亚洲成熟女性毛茸茸| 午夜视频一区二区三区| 大乳护士喂奶hd| 亚洲一区观看| 欧洲视频一区二区三区| 国模一区二区| 精品国产欧美成人夜夜嗨| 国产精品久久777777换脸| 亚洲精品日韩综合观看成人91| 下面一进一出好爽视频| 一本久久知道综合久久| 欧洲亚洲一区二区| 亚洲视频自拍| 亚洲18私人小影院| 精品视频二区| 一区二区三区在线免费观看| 91视频免费入口| 亚洲人人精品| 日韩在线导航| 国产亚洲高清在线观看| 亚洲最大中文字幕| 一级全黄裸体免费视频| 亚洲一区在线免费观看| 中文字幕一区二区三区人妻不卡| 三级影片在线观看欧美日韩一区二区 | 日韩电影在线一区| 亚洲资源在线网| 97成人在线| 热草久综合在线| 欧美日韩在线看片| 亚洲国产成人一区| 中文字幕久久久久| 亚洲一区二区不卡免费| 丁香激情五月少妇| 国产成人av一区二区三区在线| 裸模一区二区三区免费| 免费污视频在线一区| 欧美区二区三区| 日本私人网站在线观看| 欧美一区二区三区视频在线观看| 国产午夜在线播放| 18成人在线观看| 不卡一区二区在线观看| 国内精品视频666| 亚洲一卡二卡三卡| 老司机凹凸av亚洲导航| 国产精品一区专区欧美日韩| 成人黄色动漫| 亚洲福利视频在线| 一二区在线观看| 动漫精品一区二区| 免费在线观看一级片| 久久精品在线免费观看| 精品人妻二区中文字幕| 亚洲精品国产偷自在线观看| 91丨九色丨国产在线| 五月天av在线| 久久99国产精品自在自在app| 国产三级在线看| 亚洲精品国产精品国自产观看浪潮 | 菠萝菠萝蜜在线视频免费观看| 亚洲老头老太hd| 国产91久久久| 欧美一卡二卡三卡| 亚洲一区二区激情| 在线视频国产一区| 全部毛片永久免费看| 亚洲一区在线视频| 校园春色 亚洲| 自拍偷拍亚洲激情| 精品一区二区6| 国产欧美一区二区在线观看| 中国极品少妇videossexhd| 国产成人午夜精品影院观看视频| 久久久久久蜜桃一区二区| 奇米综合一区二区三区精品视频| 337p粉嫩大胆噜噜噜鲁| 亚洲激情社区| 欧美高清中文字幕| 合欧美一区二区三区| 国产 国语对白 露脸| 亚洲精品一区二区妖精| 在线视频不卡国产| 98精品久久久久久久| 一区二区三区四区在线视频 | 亚洲国产精品女人| 精品精品视频| 国产美女91呻吟求| 国产一区二区三区四区五区3d| 日本精品免费观看| 国产黄在线观看| 亚洲欧美日韩精品久久亚洲区 | 国产调教视频一区| 日本精品在线观看视频| 国产日韩av一区二区| 亚洲精品国产一区黑色丝袜| 久久精品人人做| 国产欧美一区二区三区在线观看视频| 欧美激情在线一区二区| 战狼4完整免费观看在线播放版| 中文字幕av一区二区三区免费看| 九九九视频在线观看| 国产精品视频麻豆| 亚洲天堂网av在线| 亚洲精品成人悠悠色影视| 国产亚洲精品av| 黄色一区二区在线观看| 日日操免费视频| 国产精品国产三级国产aⅴ中文| www.黄色com| 一区二区三区中文在线| 精品一区免费观看| 精品国产鲁一鲁一区二区张丽| 中文字幕第15页| 91精品福利在线| 最好看的日本字幕mv视频大全| 欧美日本一区二区三区四区| 国产不卡av在线播放| 亚洲精品成人免费| 国产1区2区3区在线| 久久天天躁狠狠躁夜夜躁| 国产蜜臀av在线播放| 4k岛国日韩精品**专区| 高清在线一区| 韩国成人一区| 欧美日本三级| 国产一级特黄a大片99| 久久91精品| 国产日韩欧美大片| 国产亚洲精品v| 婷婷中文字幕在线观看| 99久久久精品| 三级影片在线观看| 亚洲成人自拍网| 亚洲怡红院av| 亚洲第一中文字幕在线观看| 高清中文字幕一区二区三区| 久久久久久久一区二区| 日韩不卡视频在线观看| www.久久艹| 成人亚洲精品| 久久国产精品一区二区三区四区 | 99热在这里有精品免费| 五月天婷婷丁香网| 午夜精品一区二区三区电影天堂 | av中文在线播放| 91麻豆精品国产91| 国产精品视频一区二区久久| 欧美精品videos另类日本| 福利一区和二区| 欧美理论一区二区| 伊人久久亚洲热| 三级黄色片免费观看| 国产亚洲一区二区三区在线观看| 国产一级一片免费播放放a| 欧美精品高清视频| 欧美套图亚洲一区| 久久免费福利视频| 日本亚州欧洲精品不卡| 一区二区三区不卡在线| 三级在线观看一区二区| 精品黑人一区二区三区观看时间| 亚洲男女一区二区三区| 中文字幕人妻互换av久久| 日韩成人在线观看| 男人添女人下部高潮视频在线观看| 国产日韩欧美视频在线| 国产精品视频一区二区三区四蜜臂| 成年女人18级毛片毛片免费| 韩国精品免费视频| 亚欧精品视频一区二区三区| 欧美日韩亚洲系列| 日韩中文字幕综合| 欧美高清在线观看| 涩涩屋成人免费视频软件 | 亚洲国产影院| 亚洲精品鲁一鲁一区二区三区 | 成人在线免费观看网址| 久久精品国产精品亚洲红杏| 纪美影视在线观看电视版使用方法| 在线精品视频免费观看| 巨骚激情综合| 国产精品99导航| 国内精品久久久久久久久电影网| 免费观看日韩毛片| 91免费视频观看| 青青草华人在线视频| 在线观看欧美日本| 成年网站在线| 国产精品一区二区久久精品| 日韩www.| 天堂av手机在线| 亚洲激情网站免费观看| 国产aⅴ一区二区三区| 久久99精品久久久久久青青91| 精品视频在线播放一区二区三区| 一级黄色录像免费看| 国产成人精品免费视频网站| 麻豆changesxxx国产| 亚洲电影天堂av | 色综合久久综合中文综合网| 欧美在线观看在线观看| 国产97在线观看| 久久精品国产68国产精品亚洲| 免费在线观看的毛片| 国产精品丝袜在线| 99精品人妻无码专区在线视频区| 欧美另类极品videosbestfree| 综合伊人久久| 日韩视频第二页| 国产精品卡一卡二卡三| jlzzjlzz亚洲女人18| 午夜精品美女自拍福到在线| 亚洲97av| 国产福利在线免费| 亚洲一区二区黄色| 久久久久久女乱国产| 国产精品永久在线| 欧美午夜不卡| 人妻少妇无码精品视频区| 欧美精品丝袜久久久中文字幕| 在线中文字幕第一页| 蜜桃精品久久久久久久免费影院| 日本三级亚洲精品| 男人操女人的视频网站| 亚洲精品99久久久久中文字幕| 日韩国产网站| www.18av.com| 国产色综合一区| www国产一区| 国产精品igao视频| 午夜精品电影| 亚洲av综合一区二区| 91精品一区二区三区久久久久久| 超碰资源在线| 中文字幕欧美人与畜| 91麻豆免费看片| 国产丝袜视频在线观看| 欧美在线视频a| 午夜性色一区二区三区免费视频| 国产精品久久久久久久无码| 欧美日韩亚洲综合一区二区三区| 国产偷倩在线播放| 亚洲一区二区三区免费观看| av在线一区二区| av中文字幕在线免费观看| 热久久99这里有精品|