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

Kafka 為什么能那么快的 6 個原因

開源 Kafka
無論 kafka 作為 MQ 也好,作為存儲層也罷,無非就是兩個功能(好簡單的樣子),一是 Producer 生產(chǎn)的數(shù)據(jù)存到 broker,二是 Consumer 從 broker 讀取數(shù)據(jù)。

[[335450]]

本文轉(zhuǎn)載自微信公眾號「JavaKeeper」,作者不假。轉(zhuǎn)載本文請聯(lián)系JavaKeeper公眾號。 

無論 kafka 作為 MQ 也好,作為存儲層也罷,無非就是兩個功能(好簡單的樣子),一是 Producer 生產(chǎn)的數(shù)據(jù)存到 broker,二是 Consumer 從 broker 讀取數(shù)據(jù)。那 Kafka 的快也就體現(xiàn)在讀寫兩個方面了,下面我們就聊聊 Kafka 快的原因。

 

1. 利用 Partition 實現(xiàn)并行處理

我們都知道 Kafka 是一個 Pub-Sub 的消息系統(tǒng),無論是發(fā)布還是訂閱,都要指定 Topic。

Topic 只是一個邏輯的概念。每個 Topic 都包含一個或多個 Partition,不同 Partition 可位于不同節(jié)點。

一方面,由于不同 Partition 可位于不同機器,因此可以充分利用集群優(yōu)勢,實現(xiàn)機器間的并行處理。另一方面,由于 Partition 在物理上對應(yīng)一個文件夾,即使多個 Partition 位于同一個節(jié)點,也可通過配置讓同一節(jié)點上的不同 Partition 置于不同的磁盤上,從而實現(xiàn)磁盤間的并行處理,充分發(fā)揮多磁盤的優(yōu)勢。

能并行處理,速度肯定會有提升,多個工人肯定比一個工人干的快。

“可以并行寫入不同的磁盤?那磁盤讀寫的速度可以控制嗎?

那就先簡單扯扯磁盤/IO 的那些事

 

“硬盤性能的制約因素是什么?如何根據(jù)磁盤I/O特性來進行系統(tǒng)設(shè)計?硬盤內(nèi)部主要部件為磁盤盤片、傳動手臂、讀寫磁頭和主軸馬達。實際數(shù)據(jù)都是寫在盤片上,讀寫主要是通過傳動手臂上的讀寫磁頭來完成。實際運行時,主軸讓磁盤盤片轉(zhuǎn)動,然后傳動手臂可伸展讓讀取頭在盤片上進行讀寫操作。磁盤物理結(jié)構(gòu)如下圖所示:

由于單一盤片容量有限,一般硬盤都有兩張以上的盤片,每個盤片有兩面,都可記錄信息,所以一張盤片對應(yīng)著兩個磁頭。盤片被分為許多扇形的區(qū)域,每個區(qū)域叫一個扇區(qū)。盤片表面上以盤片中心為圓心,不同半徑的同心圓稱為磁道,不同盤片相同半徑的磁道所組成的圓柱稱為柱面。磁道與柱面都是表示不同半徑的圓,在許多場合,磁道和柱面可以互換使用。磁盤盤片垂直視角如下圖所示:

圖片來源:commons.wikimedia.org影響磁盤的關(guān)鍵因素是磁盤服務(wù)時間,即磁盤完成一個I/O請求所花費的時間,它由尋道時間、旋轉(zhuǎn)延遲和數(shù)據(jù)傳輸時間三部分構(gòu)成。機械硬盤的連續(xù)讀寫性能很好,但隨機讀寫性能很差,這主要是因為磁頭移動到正確的磁道上需要時間,隨機讀寫時,磁頭需要不停的移動,時間都浪費在了磁頭尋址上,所以性能不高。衡量磁盤的重要主要指標(biāo)是IOPS和吞吐量。在許多的開源框架如 Kafka、HBase 中,都通過追加寫的方式來盡可能的將隨機 I/O 轉(zhuǎn)換為順序 I/O,以此來降低尋址時間和旋轉(zhuǎn)延時,從而最大限度的提高 IOPS。感興趣的同學(xué)可以看看 磁盤I/O那些事[1]

 

磁盤讀寫的快慢取決于你怎么使用它,也就是順序讀寫或者隨機讀寫。

2. 順序?qū)懘疟P

圖片來源:kafka.apache.org

 

Kafka 中每個分區(qū)是一個有序的,不可變的消息序列,新的消息不斷追加到 partition 的末尾,這個就是順序?qū)憽?/p>

“很久很久以前就有人做過基準(zhǔn)測試:《每秒寫入2百萬(在三臺廉價機器上)》http://ifeve.com/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines/

由于磁盤有限,不可能保存所有數(shù)據(jù),實際上作為消息系統(tǒng) Kafka 也沒必要保存所有數(shù)據(jù),需要刪除舊的數(shù)據(jù)。又由于順序?qū)懭氲脑颍?Kafka 采用各種刪除策略刪除數(shù)據(jù)的時候,并非通過使用“讀 - 寫”模式去修改文件,而是將 Partition 分為多個 Segment,每個 Segment 對應(yīng)一個物理文件,通過刪除整個文件的方式去刪除 Partition 內(nèi)的數(shù)據(jù)。這種方式清除舊數(shù)據(jù)的方式,也避免了對文件的隨機寫操作。

3. 充分利用 Page Cache

“引入 Cache 層的目的是為了提高 Linux 操作系統(tǒng)對磁盤訪問的性能。Cache 層在內(nèi)存中緩存了磁盤上的部分數(shù)據(jù)。當(dāng)數(shù)據(jù)的請求到達時,如果在 Cache 中存在該數(shù)據(jù)且是最新的,則直接將數(shù)據(jù)傳遞給用戶程序,免除了對底層磁盤的操作,提高了性能。Cache 層也正是磁盤 IOPS 為什么能突破 200 的主要原因之一。在 Linux 的實現(xiàn)中,文件 Cache 分為兩個層面,一是 Page Cache,另一個 Buffer Cache,每一個 Page Cache 包含若干 Buffer Cache。Page Cache 主要用來作為文件系統(tǒng)上的文件數(shù)據(jù)的緩存來用,尤其是針對當(dāng)進程對文件有 read/write 操作的時候。Buffer Cache 則主要是設(shè)計用來在系統(tǒng)對塊設(shè)備進行讀寫的時候,對塊進行數(shù)據(jù)緩存的系統(tǒng)來使用。

使用 Page Cache 的好處:

  • I/O Scheduler 會將連續(xù)的小塊寫組裝成大塊的物理寫從而提高性能
  • I/O Scheduler 會嘗試將一些寫操作重新按順序排好,從而減少磁盤頭的移動時間
  • 充分利用所有空閑內(nèi)存(非 JVM 內(nèi)存)。如果使用應(yīng)用層 Cache(即 JVM 堆內(nèi)存),會增加 GC 負擔(dān)
  • 讀操作可直接在 Page Cache 內(nèi)進行。如果消費和生產(chǎn)速度相當(dāng),甚至不需要通過物理磁盤(直接通過 Page Cache)交換數(shù)據(jù)
  • 如果進程重啟,JVM 內(nèi)的 Cache 會失效,但 Page Cache 仍然可用

Broker 收到數(shù)據(jù)后,寫磁盤時只是將數(shù)據(jù)寫入 Page Cache,并不保證數(shù)據(jù)一定完全寫入磁盤。從這一點看,可能會造成機器宕機時,Page Cache 內(nèi)的數(shù)據(jù)未寫入磁盤從而造成數(shù)據(jù)丟失。但是這種丟失只發(fā)生在機器斷電等造成操作系統(tǒng)不工作的場景,而這種場景完全可以由 Kafka 層面的 Replication 機制去解決。如果為了保證這種情況下數(shù)據(jù)不丟失而強制將 Page Cache 中的數(shù)據(jù) Flush 到磁盤,反而會降低性能。也正因如此,Kafka 雖然提供了 flush.messages 和 flush.ms 兩個參數(shù)將 Page Cache 中的數(shù)據(jù)強制 Flush 到磁盤,但是 Kafka 并不建議使用。

4. 零拷貝技術(shù)

Kafka 中存在大量的網(wǎng)絡(luò)數(shù)據(jù)持久化到磁盤(Producer 到 Broker)和磁盤文件通過網(wǎng)絡(luò)發(fā)送(Broker 到 Consumer)的過程。這一過程的性能直接影響 Kafka 的整體吞吐量。

“操作系統(tǒng)的核心是內(nèi)核,獨立于普通的應(yīng)用程序,可以訪問受保護的內(nèi)存空間,也有訪問底層硬件設(shè)備的權(quán)限。為了避免用戶進程直接操作內(nèi)核,保證內(nèi)核安全,操作系統(tǒng)將虛擬內(nèi)存劃分為兩部分,一部分是內(nèi)核空間(Kernel-space),一部分是用戶空間(User-space)。

傳統(tǒng)的 Linux 系統(tǒng)中,標(biāo)準(zhǔn)的 I/O 接口(例如read,write)都是基于數(shù)據(jù)拷貝操作的,即 I/O 操作會導(dǎo)致數(shù)據(jù)在內(nèi)核地址空間的緩沖區(qū)和用戶地址空間的緩沖區(qū)之間進行拷貝,所以標(biāo)準(zhǔn) I/O 也被稱作緩存 I/O。這樣做的好處是,如果所請求的數(shù)據(jù)已經(jīng)存放在內(nèi)核的高速緩沖存儲器中,那么就可以減少實際的 I/O 操作,但壞處就是數(shù)據(jù)拷貝的過程,會導(dǎo)致 CPU 開銷。

我們把 Kafka 的生產(chǎn)和消費簡化成如下兩個過程來看[2]:

  • 網(wǎng)絡(luò)數(shù)據(jù)持久化到磁盤 (Producer 到 Broker)
  • 磁盤文件通過網(wǎng)絡(luò)發(fā)送(Broker 到 Consumer)

4.1 網(wǎng)絡(luò)數(shù)據(jù)持久化到磁盤 (Producer 到 Broker)

傳統(tǒng)模式下,數(shù)據(jù)從網(wǎng)絡(luò)傳輸?shù)轿募枰?4 次數(shù)據(jù)拷貝、4 次上下文切換和兩次系統(tǒng)調(diào)用。

  1. data = socket.read()// 讀取網(wǎng)絡(luò)數(shù)據(jù)  
  2. File file = new File()  
  3. file.write(data)// 持久化到磁盤  
  4. file.flush() 

這一過程實際上發(fā)生了四次數(shù)據(jù)拷貝:

  1. 首先通過 DMA copy 將網(wǎng)絡(luò)數(shù)據(jù)拷貝到內(nèi)核態(tài) Socket Buffer
  2. 然后應(yīng)用程序?qū)?nèi)核態(tài) Buffer 數(shù)據(jù)讀入用戶態(tài)(CPU copy)
  3. 接著用戶程序?qū)⒂脩魬B(tài) Buffer 再拷貝到內(nèi)核態(tài)(CPU copy)
  4. 最后通過 DMA copy 將數(shù)據(jù)拷貝到磁盤文件

“DMA(Direct Memory Access):直接存儲器訪問。DMA 是一種無需 CPU 的參與,讓外設(shè)和系統(tǒng)內(nèi)存之間進行雙向數(shù)據(jù)傳輸?shù)挠布C制。使用 DMA 可以使系統(tǒng) CPU 從實際的 I/O 數(shù)據(jù)傳輸過程中擺脫出來,從而大大提高系統(tǒng)的吞吐率。

同時,還伴隨著四次上下文切換,如下圖所示

 

數(shù)據(jù)落盤通常都是非實時的,kafka 生產(chǎn)者數(shù)據(jù)持久化也是如此。Kafka 的數(shù)據(jù)并不是實時的寫入硬盤,它充分利用了現(xiàn)代操作系統(tǒng)分頁存儲來利用內(nèi)存提高 I/O 效率,就是上一節(jié)提到的 Page Cache。

對于 kafka 來說,Producer 生產(chǎn)的數(shù)據(jù)存到 broker,這個過程讀取到 socket buffer 的網(wǎng)絡(luò)數(shù)據(jù),其實可以直接在內(nèi)核空間完成落盤。并沒有必要將 socket buffer 的網(wǎng)絡(luò)數(shù)據(jù),讀取到應(yīng)用進程緩沖區(qū);在這里應(yīng)用進程緩沖區(qū)其實就是 broker,broker 收到生產(chǎn)者的數(shù)據(jù),就是為了持久化。

在此特殊場景下:接收來自 socket buffer 的網(wǎng)絡(luò)數(shù)據(jù),應(yīng)用進程不需要中間處理、直接進行持久化時。可以使用 mmap 內(nèi)存文件映射。

“Memory Mapped Files:簡稱 mmap,也有叫 MMFile 的,使用 mmap 的目的是將內(nèi)核中讀緩沖區(qū)(read buffer)的地址與用戶空間的緩沖區(qū)(user buffer)進行映射。從而實現(xiàn)內(nèi)核緩沖區(qū)與應(yīng)用程序內(nèi)存的共享,省去了將數(shù)據(jù)從內(nèi)核讀緩沖區(qū)(read buffer)拷貝到用戶緩沖區(qū)(user buffer)的過程。它的工作原理是直接利用操作系統(tǒng)的 Page 來實現(xiàn)文件到物理內(nèi)存的直接映射。完成映射之后你對物理內(nèi)存的操作會被同步到硬盤上。使用這種方式可以獲取很大的 I/O 提升,省去了用戶空間到內(nèi)核空間復(fù)制的開銷。

mmap 也有一個很明顯的缺陷——不可靠,寫到 mmap 中的數(shù)據(jù)并沒有被真正的寫到硬盤,操作系統(tǒng)會在程序主動調(diào)用 flush 的時候才把數(shù)據(jù)真正的寫到硬盤。Kafka 提供了一個參數(shù)——producer.type 來控制是不是主動flush;如果 Kafka 寫入到 mmap 之后就立即 flush 然后再返回 Producer 叫同步(sync);寫入 mmap 之后立即返回 Producer 不調(diào)用 flush 就叫異步(async),默認是 sync。

 

“零拷貝(Zero-copy)技術(shù)指在計算機執(zhí)行操作時,CPU 不需要先將數(shù)據(jù)從一個內(nèi)存區(qū)域復(fù)制到另一個內(nèi)存區(qū)域,從而可以減少上下文切換以及 CPU 的拷貝時間。它的作用是在數(shù)據(jù)報從網(wǎng)絡(luò)設(shè)備到用戶程序空間傳遞的過程中,減少數(shù)據(jù)拷貝次數(shù),減少系統(tǒng)調(diào)用,實現(xiàn) CPU 的零參與,徹底消除 CPU 在這方面的負載。目前零拷貝技術(shù)主要有三種類型[3]:

  • 直接I/O:數(shù)據(jù)直接跨過內(nèi)核,在用戶地址空間與I/O設(shè)備之間傳遞,內(nèi)核只是進行必要的虛擬存儲配置等輔助工作;
  • 避免內(nèi)核和用戶空間之間的數(shù)據(jù)拷貝:當(dāng)應(yīng)用程序不需要對數(shù)據(jù)進行訪問時,則可以避免將數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間
    • mmap
    • sendfile
    • splice && tee
    • sockmap
  • copy on write:寫時拷貝技術(shù),數(shù)據(jù)不需要提前拷貝,而是當(dāng)需要修改的時候再進行部分拷貝。

4.2 磁盤文件通過網(wǎng)絡(luò)發(fā)送(Broker 到 Consumer)

傳統(tǒng)方式實現(xiàn):先讀取磁盤、再用 socket 發(fā)送,實際也是進過四次 copy

  1. buffer = File.read  
  2. Socket.send(buffer) 

這一過程可以類比上邊的生產(chǎn)消息:

  1. 首先通過系統(tǒng)調(diào)用將文件數(shù)據(jù)讀入到內(nèi)核態(tài) Buffer(DMA 拷貝)
  2. 然后應(yīng)用程序?qū)?nèi)存態(tài) Buffer 數(shù)據(jù)讀入到用戶態(tài) Buffer(CPU 拷貝)
  3. 接著用戶程序通過 Socket 發(fā)送數(shù)據(jù)時將用戶態(tài) Buffer 數(shù)據(jù)拷貝到內(nèi)核態(tài) Buffer(CPU 拷貝)
  4. 最后通過 DMA 拷貝將數(shù)據(jù)拷貝到 NIC Buffer

Linux 2.4+ 內(nèi)核通過 sendfile 系統(tǒng)調(diào)用,提供了零拷貝。數(shù)據(jù)通過 DMA 拷貝到內(nèi)核態(tài) Buffer 后,直接通過 DMA 拷貝到 NIC Buffer,無需 CPU 拷貝。這也是零拷貝這一說法的來源。除了減少數(shù)據(jù)拷貝外,因為整個讀文件 - 網(wǎng)絡(luò)發(fā)送由一個 sendfile 調(diào)用完成,整個過程只有兩次上下文切換,因此大大提高了性能。

 

Kafka 在這里采用的方案是通過 NIO 的 transferTo/transferFrom 調(diào)用操作系統(tǒng)的 sendfile 實現(xiàn)零拷貝。總共發(fā)生 2 次內(nèi)核數(shù)據(jù)拷貝、2 次上下文切換和一次系統(tǒng)調(diào)用,消除了 CPU 數(shù)據(jù)拷貝

5. 批處理

在很多情況下,系統(tǒng)的瓶頸不是 CPU 或磁盤,而是網(wǎng)絡(luò)IO。

因此,除了操作系統(tǒng)提供的低級批處理之外,Kafka 的客戶端和 broker 還會在通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)之前,在一個批處理中累積多條記錄 (包括讀和寫)。記錄的批處理分攤了網(wǎng)絡(luò)往返的開銷,使用了更大的數(shù)據(jù)包從而提高了帶寬利用率。

6. 數(shù)據(jù)壓縮

Producer 可將數(shù)據(jù)壓縮后發(fā)送給 broker,從而減少網(wǎng)絡(luò)傳輸代價,目前支持的壓縮算法有:Snappy、Gzip、LZ4。數(shù)據(jù)壓縮一般都是和批處理配套使用來作為優(yōu)化手段的。

小總結(jié) | 下次面試官問我 kafka 為什么快,我就這么說

  • partition 并行處理
  • 順序?qū)懘疟P,充分利用磁盤特性
  • 利用了現(xiàn)代操作系統(tǒng)分頁存儲 Page Cache 來利用內(nèi)存提高 I/O 效率
  • 采用了零拷貝技術(shù)
    • Producer 生產(chǎn)的數(shù)據(jù)持久化到 broker,采用 mmap 文件映射,實現(xiàn)順序的快速寫入
    • Customer 從 broker 讀取數(shù)據(jù),采用 sendfile,將磁盤文件讀到 OS 內(nèi)核緩沖區(qū)后,轉(zhuǎn)到 NIO buffer進行網(wǎng)絡(luò)發(fā)送,減少 CPU 消耗

參考資料

 

[1]美團——磁盤I/O那些事: https://tech.meituan.com/2017/05/19/about-desk-io.html

[2]Kafka零拷貝: https://zhuanlan.zhihu.com/p/78335525

[3]Linux - Zero-copy(零拷貝): https://cllc.fun/2020/03/18/linux-zero-copy/

 

責(zé)任編輯:武曉燕 來源: JavaKeeper
相關(guān)推薦

2023-10-15 12:23:10

單線程Redis

2023-06-08 18:25:40

Doris場景查詢

2021-06-09 09:32:58

Esbuild 工具前端

2019-10-18 14:54:04

Kafka寫入磁盤

2024-02-26 21:15:20

Kafka緩存參數(shù)

2020-03-30 15:05:46

Kafka消息數(shù)據(jù)

2019-05-10 09:47:33

2022-01-24 14:42:03

手機技術(shù)廠商

2023-11-07 15:11:46

Kafka技巧

2021-05-31 07:44:08

Kafka分布式系統(tǒng)

2015-11-06 09:41:03

圖標(biāo)可視化

2019-10-18 09:40:19

程序員固態(tài)硬盤Linux

2024-11-26 08:52:34

SQL優(yōu)化Kafka

2022-01-10 09:42:37

6G5G網(wǎng)絡(luò)

2024-09-26 00:00:25

2023-06-05 07:57:53

Kafka消息事務(wù)消息

2024-07-30 09:01:12

2024-09-14 09:41:17

2020-10-13 17:54:18

開發(fā)Kafka數(shù)據(jù)

2025-05-27 04:00:01

Docker容器掛載
點贊
收藏

51CTO技術(shù)棧公眾號

欧美精品三级日韩久久| 亚洲成人资源| 69成人精品免费视频| 嫩草影院中文字幕| 亚洲人妻一区二区| 免费在线看一区| 欧美另类xxx| 久久亚洲AV成人无码国产野外| 黄色成人在线观看网站| 亚洲一区二区三区国产| 色999五月色| 亚洲国产视频一区二区三区| 快she精品国产999| 欧美日韩国产成人| xxx在线播放| youjizz亚洲| 欧美日免费三级在线| av女优在线播放| 91短视频版在线观看www免费| 丁香激情综合五月| 国产一区二区在线播放| 五月天激情四射| 激情综合激情| 91欧美极品| 亚洲香蕉伊在人在线观| 性高潮久久久久久久久| 五月婷婷狠狠干| 国产成+人+日韩+欧美+亚洲| 国产精品视频免费在线| 三级黄色在线视频| 99久久婷婷| 日韩啪啪电影网| 国产美女娇喘av呻吟久久| 国产成人精品一区二区在线| 国产无码精品久久久| 香港欧美日韩三级黄色一级电影网站| 亚洲欧美国产制服动漫| 朝桐光av一区二区三区| 超碰精品在线观看| 日韩三级中文字幕| 奇米777在线| 国产精品视频一区视频二区 | 神马影院午夜我不卡| 天堂网2014av| 成人app下载| 国产精品免费在线播放| 欧美熟妇乱码在线一区| 国产精品一区二区在线播放| 亚洲va欧美va在线观看| 91美女精品网站| 精品综合免费视频观看| 91久久精品美女| 国产一区二区三区四区视频| 久久精品国产99久久6| 国产精品天天狠天天看| 中文字幕激情视频| 捆绑紧缚一区二区三区视频| 国产美女91呻吟求| 久章草在线视频| 亚洲精品国产91| 91精品久久久久久综合五月天| 日韩午夜激情电影| 韩国一区二区三区四区| 99这里只有精品视频| 精品国产污污免费网站入口 | 精品国产亚洲一区二区三区在线| 欧美一级日韩不卡播放免费| 丰满人妻一区二区三区大胸| 国产成人久久精品麻豆二区| 7777精品伊人久久久大香线蕉完整版 | 校园春色 亚洲| 欧美日韩免费观看一区=区三区| 欧美大尺度激情区在线播放| 国产在线视频99| 久久国产精品久久久久久电车 | 久久精品视频在线免费观看| 亚洲v欧美v另类v综合v日韩v| 黄色精品在线观看| 亚洲成人动漫一区| av黄色在线网站| 成人一级视频| 日韩免费一区二区三区在线播放| 亚洲精品乱码久久| 国产在线日韩精品| 久久久国产精品一区| 久久久香蕉视频| 久久免费国产| 亚洲一区二区少妇| 亚洲人妻一区二区三区| 中文无字幕一区二区三区| 好吊色视频988gao在线观看| av资源中文在线天堂| 欧美中文字幕一区| 黑人巨大猛交丰满少妇| 亚洲成在人线免费观看| 久久综合伊人77777尤物| 日韩三级免费看| 极品少妇一区二区| 久久艳妇乳肉豪妇荡乳av| 1区2区3区在线观看| 亚洲一区二区视频在线| 日韩一级理论片| 日本一区二区三区播放| 国产一区二区免费| 久久伊人成人网| 美国十次了思思久久精品导航| 国产精品99久久久久久久| 番号集在线观看| 亚洲高清一区二区三区| www.cao超碰| 蜜桃tv一区二区三区| 久久69精品久久久久久久电影好| 在线永久看片免费的视频| 成人亚洲精品久久久久软件| 在线视频福利一区| 国产精欧美一区二区三区蓝颜男同| 欧美一区二区视频在线观看2020| 午夜理伦三级做爰电影| 亚洲国产日韩在线| 91久久久久久久一区二区| 你懂的在线观看| 精品国产精品三级精品av网址| www.xx日本| 日本在线观看高清完整版| 一本在线高清不卡dvd| 白丝校花扒腿让我c| 欧美独立站高清久久| 清纯唯美日韩制服另类| 可以免费看毛片的网站| 亚洲欧美日韩国产成人精品影院| 日韩欧美资源站| fc2成人免费视频| 正在播放日韩欧美一页| 国产精品视频区1| 国产综合视频在线观看| 欧美精品成人久久| 久久er精品视频| 五月天亚洲综合| 国产综合色区在线观看| 亚洲三级av在线| 成人免费毛片男人用品| 91日韩一区二区三区| 少妇av一区二区三区无码| 视频一区日韩| 欧美大片欧美激情性色a∨久久| 国产深喉视频一区二区| 亚洲人成影院在线观看| 久久精品一卡二卡| 欧美ab在线视频| 91视频网页| 色yeye免费人成网站在线观看| 欧美一区二区免费观在线| www.99re7| 国产成人8x视频一区二区| 久久久久久av无码免费网站下载| 美女久久精品| 欧美国产中文字幕| 亚洲国产精品欧美久久| 午夜不卡在线视频| 亚洲AV无码片久久精品| 日韩精品一二区| 一级二级三级欧美| 欧美特黄色片| 九九久久国产精品| 色婷婷av一区二区三区之e本道| 伊人性伊人情综合网| 美女搡bbb又爽又猛又黄www| 亚洲精品555| 一区二区三区四区在线观看国产日韩| 69久久夜色精品国产69乱青草| 亚洲欧洲成人在线| 欧美亚洲尤物久久| 国语对白在线播放| av在线播放一区二区三区| 97xxxxx| 四虎成人精品永久免费av九九| 亚洲一区二区三区乱码aⅴ| bl视频在线免费观看| 欧美精品一区二区三区蜜臀| 国产精品suv一区| 亚洲特黄一级片| 国产伦精品一区三区精东| 日韩影院精彩在线| 免费看啪啪网站| 久久精品色综合| 国产裸体写真av一区二区 | 亚洲熟女乱色一区二区三区久久久| 综合精品久久久| 国产国语性生话播放| 麻豆精品一二三| 欧美日韩不卡在线视频| 成人高清电影网站| 成人免费在线看片| 久久久人成影片一区二区三区在哪下载 | 四虎影院观看视频在线观看| 亚洲精品福利资源站| 伊人22222| 黄色91在线观看| 日韩精品伦理第一区| 国产富婆一级全黄大片| 日韩欧美国产免费播放| 久久中文免费视频| 国产色综合久久| 国产乱国产乱老熟300部视频| 丝瓜av网站精品一区二区| 日本老太婆做爰视频| 欧美精选视频在线观看| 国产在线精品一区二区三区| 少妇高潮一区二区三区99| 欧美一级大片视频| 色综合999| 最近2019年日本中文免费字幕| 日韩一区二区三区在线观看视频| 欧美裸体bbwbbwbbw| 久久亚洲精品石原莉奈| 亚洲国产综合人成综合网站| 久久爱一区二区| 日本一区二区成人| 在线免费观看污视频| 国产精品一区二区在线观看不卡| 国产区二区三区| 久久国产高清| 岳毛多又紧做起爽| 伊人久久亚洲美女图片| 欧洲金发美女大战黑人| 日韩国产欧美一区二区| 欧美日韩国产精品一卡| 精品av导航| av免费观看久久| 激情视频亚洲| 91久久久久久国产精品| 亚洲精品自拍| 成人免费淫片视频软件| 久久亚洲人体| 国产精品网站入口| 欧美大片网站| 国产在线视频2019最新视频| 99久久伊人| 国产精品亚洲一区二区三区| 青青热久免费精品视频在线18| 国产99久久精品一区二区永久免费 | 91tv亚洲精品香蕉国产一区7ujn| 91九色在线播放| 久久全球大尺度高清视频| 91在线三级| 97久久精品人搡人人玩 | 国产精品视频久久久| 欧美亚洲二区| 亚洲最大的av网站| 日本免费一区二区三区视频| 成人免费观看网站| 成人在线视频中文字幕| 国产日韩欧美精品| 亚洲人成网站77777在线观看| 欧美日韩精品免费看| 国产亚洲一区| 亚洲欧洲国产精品久久| 天天综合国产| 久久www视频| 91久久亚洲| 国产第一页视频| 美国三级日本三级久久99| 婷婷激情综合五月天| 国产精品一区二区视频| 久久性爱视频网站| 91在线精品秘密一区二区| 国产123在线| 亚洲免费观看高清完整| 不卡的免费av| 色婷婷亚洲综合| 97超碰人人草| 亚洲精品在线免费观看视频| 三级av在线| 自拍偷拍亚洲区| 一二三四区在线观看| 午夜欧美大片免费观看| 久久青青视频| 91亚洲va在线va天堂va国| 国产精品乱战久久久| 日本一区二区三区免费观看| 小小影院久久| 国产精品50p| 久久se这里有精品| 日本一卡二卡在线| 国产精品理论片| 国产在线综合网| 欧美午夜精品一区二区蜜桃 | 日韩激情片免费| 1区2区3区在线观看| 国外成人在线视频| 国产一区精品福利| 国内精品视频在线播放| 99欧美视频| 日韩在线xxx| 国产精品99久久久久久似苏梦涵| 加勒比综合在线| 一区二区免费在线播放| 中文字幕1区2区3区| 精品99一区二区三区| 成人高清免费在线| 超碰精品一区二区三区乱码| 看黄在线观看| 国产原创欧美精品| 日韩精品免费一区二区三区竹菊| 天堂资源在线亚洲资源| 一本色道久久综合亚洲精品高清 | 神马日本精品| 国产又粗又爽又黄的视频 | 国产成人精品免高潮费视频| 欧美成人午夜精品免费| 久久久久久黄色| 久久精品国产亚洲AV无码麻豆| 欧美日韩国产欧美日美国产精品| 天天干,夜夜爽| 欧美劲爆第一页| 成人污污www网站免费丝瓜| 欧美日韩一区在线观看视频| 亚洲国产激情| 久久出品必属精品| 国产精品二三区| 99re热视频| 日韩大片在线观看视频| heyzo一区| 超碰97在线人人| 欧美 日韩 国产一区二区在线视频| 日本男人操女人| 91偷拍与自偷拍精品| 中文字幕第28页| 精品国产一区二区三区久久影院 | 无码国产伦一区二区三区视频 | 亚洲午夜精品久久久久久久久久久久| heyzo在线| 国产伦精品一区二区三区免费视频| 久久久久久久久久久9不雅视频| 色综合色综合色综合色综合| 日本一区二区在线不卡| 国产黄网在线观看| 亚洲欧美国产制服动漫| 台湾佬成人网| 免费日韩av电影| 免费在线观看成人av| 中文字幕丰满孑伦无码专区| 欧美日韩国产一区二区三区| 天堂8在线视频| 欧美综合国产精品久久丁香| 西野翔中文久久精品字幕| 日本日本19xxxⅹhd乱影响| 波多野结衣中文字幕一区| 日韩成人高清视频| 日韩精品视频观看| 欧美黑人粗大| 欧美性猛交一区二区三区精品| 午夜男人的天堂| 亚洲国产精品麻豆| 婷婷伊人综合中文字幕| 欧美一二三视频| 成人羞羞网站入口| 手机免费av片| 一区二区三区免费在线观看| 全部免费毛片在线播放一个| 午夜精品一区二区三区在线播放| 欧美中文一区| 国产精品igao| 18成人在线视频| 亚洲男人第一天堂| 97在线视频精品| 欧美丝袜一区| 国产永久免费网站| 亚洲一二三区视频在线观看| 五月天激情婷婷| 国产精品久久久久久婷婷天堂| 亚洲精品国产成人影院| 美女露出粉嫩尿囗让男人桶| 欧美日韩精品在线| 在线免费观看的av网站| 99久久99久久精品国产片| 国产视频一区在线观看一区免费| 在线观看日本中文字幕| 欧美一区二区视频网站| 黄视频网站在线观看| 一区二区三区精品国产| 岛国av在线一区| 成人一二三四区| 欧美寡妇偷汉性猛交| 自拍偷拍一区| 性色av浪潮av| 色菇凉天天综合网| 欧美黑人xx片| 三区精品视频观看| 成人动漫中文字幕| 一级二级三级视频| 国内精品小视频| 国产精品精品| 精品无码在线视频| 欧美一级夜夜爽| 高清电影一区| 日韩国产一级片| 亚洲欧洲精品一区二区三区不卡| 五月天激情开心网| 91免费看蜜桃|