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

僅需3分鐘,你就能明白Kafka的工作原理

開源 Kafka
周末無聊刷著手機(jī),某寶網(wǎng) App 突然蹦出來一條消息“為了回饋老客戶,女朋友買一送一,活動(dòng)僅限今天!”。

周末無聊刷著手機(jī),某寶網(wǎng) App 突然蹦出來一條消息“為了回饋老客戶,女朋友買一送一,活動(dòng)僅限今天!”。

買一送一還有這種好事,那我可不能錯(cuò)過!忍不住立馬點(diǎn)了去。于是選了兩個(gè)***款,下單、支付一氣呵成!滿足的躺在床上,想著馬上有女朋友了,竟然幸福的失眠了……

第二天正常上著班,突然接到快遞小哥的電話:

小哥:“你是 xx 嗎?你的女朋友到了,我現(xiàn)在在你樓下,你來拿一下吧!”。

我:“這……我在上班呢,可以晚上送過來嗎?“。

小哥:“晚上可不行哦,晚上我也下班了呢!”。

于是兩個(gè)人僵持了很久……

***小哥說,要不我?guī)湍惴诺綐窍滦》急憷臧?,你晚上下班了過來拿,尷尬的局面這才得以緩解!

為什么需要消息隊(duì)列

回到正題,如果沒有小芳便利店,那快遞小哥和我的交互圖就應(yīng):

會(huì)出現(xiàn)什么情況呢?

  • 為了這個(gè)女朋友,我請(qǐng)假回去拿(老板不批)。
  • 小哥一直在你樓下等(小哥還有其他的快遞要送)。
  • 周末再送(顯然等不及)。
  • 這個(gè)女朋友我不要了(絕對(duì)不可能)!

小芳便利店出現(xiàn)后,交互圖如下:

在上面例子中,“快遞小哥”和“買女朋友的我”就是需要交互的兩個(gè)系統(tǒng),小芳便利店就是我們本文要講的消息中間件。

總結(jié)下來小芳便利店(消息中間件)出現(xiàn)后有如下好處:

解耦

快遞小哥手上有很多快遞需要送,他每次都需要先電話一一確認(rèn)收貨人是否有空、哪個(gè)時(shí)間段有空,然后再確定好送貨的方案。這樣完全依賴收貨人了!如果快遞一多,快遞小哥估計(jì)得忙瘋了……

如果有了便利店,快遞小哥只需要將同一個(gè)小區(qū)的快遞放在同一個(gè)便利店,然后通知收貨人來取貨就可以了,這時(shí)候快遞小哥和收貨人就實(shí)現(xiàn)了解耦!

異步

快遞小哥打電話給我后需要一直在你樓下等著,直到我拿走你的快遞他才能去送其他人的。

快遞小哥將快遞放在小芳便利店后,又可以干其他的活兒去了,不需要等待你到來而一直處于等待狀態(tài),提高了工作的效率。

削峰

假設(shè)雙十一我買了不同店里的各種商品,而恰巧這些店發(fā)貨的快遞都不一樣,有中通、圓通、申通、各種通等……更巧的是他們都同時(shí)到貨了!

中通的小哥打來電話叫我去北門取快遞、圓通小哥叫我去南門、申通小哥叫我去東門。我一時(shí)手忙腳亂……

我們能看到在系統(tǒng)需要交互的場(chǎng)景中,使用消息隊(duì)列中間件真的是好處多多,基于這種思路,就有了豐巢、菜鳥驛站等比小芳便利店更專業(yè)的“中間件”了。

***,上面的故事純屬虛構(gòu)……

消息隊(duì)列通信的模式

通過上面的例子我們引出了消息中間件,并且介紹了消息隊(duì)列出現(xiàn)后的好處,這里就需要介紹消息隊(duì)列通信的兩種模式了:

點(diǎn)對(duì)點(diǎn)模式

如上圖所示,點(diǎn)對(duì)點(diǎn)模式通常是基于拉取或者輪詢的消息傳送模型,這個(gè)模型的特點(diǎn)是發(fā)送到隊(duì)列的消息被一個(gè)且只有一個(gè)消費(fèi)者進(jìn)行處理。

生產(chǎn)者將消息放入消息隊(duì)列后,由消費(fèi)者主動(dòng)的去拉取消息進(jìn)行消費(fèi)。點(diǎn)對(duì)點(diǎn)模型的優(yōu)點(diǎn)是消費(fèi)者拉取消息的頻率可以由自己控制。

但是消息隊(duì)列是否有消息需要消費(fèi),在消費(fèi)者端無法感知,所以在消費(fèi)者端需要額外的線程去監(jiān)控。

發(fā)布訂閱模式

如上圖所示,發(fā)布訂閱模式是一個(gè)基于消息送的消息傳送模型,該模型可以有多種不同的訂閱者。

生產(chǎn)者將消息放入消息隊(duì)列后,隊(duì)列會(huì)將消息推送給訂閱過該類消息的消費(fèi)者(類似微信公眾號(hào))。

由于是消費(fèi)者被動(dòng)接收推送,所以無需感知消息隊(duì)列是否有待消費(fèi)的消息!但是 Consumer1、Consumer2、Consumer3 由于機(jī)器性能不一樣,所以處理消息的能力也會(huì)不一樣,但消息隊(duì)列卻無法感知消費(fèi)者消費(fèi)的速度!

所以推送的速度成了發(fā)布訂閱模式的一個(gè)問題!假設(shè)三個(gè)消費(fèi)者處理速度分別是 8M/s、5M/s、2M/s,如果隊(duì)列推送的速度為 5M/s,則 Consumer3 無法承受!

如果隊(duì)列推送的速度為 2M/s,則 Consumer1、Consumer2 會(huì)出現(xiàn)資源的極大浪費(fèi)!

Kafka

上面簡(jiǎn)單的介紹了為什么需要消息隊(duì)列以及消息隊(duì)列通信的兩種模式,接下來就到了我們本文的主角 Kafka 閃亮登場(chǎng)的時(shí)候了!

Kafka 是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動(dòng)作流數(shù)據(jù),具有高性能、持久化、多副本備份、橫向擴(kuò)展能力………

基礎(chǔ)架構(gòu)及術(shù)語

話不多說,先看圖,通過這張圖我們來捋一捋相關(guān)的概念及之間的關(guān)系:

如果看到這張圖你很懵逼,木有關(guān)系!我們先來分析相關(guān)概念:

  • Producer:Producer 即生產(chǎn)者,消息的產(chǎn)生者,是消息的入口。
  • Kafka Cluster:

Broker:Broker 是 Kafka 實(shí)例,每個(gè)服務(wù)器上有一個(gè)或多個(gè) Kafka 的實(shí)例,我們姑且認(rèn)為每個(gè) Broker 對(duì)應(yīng)一臺(tái)服務(wù)器。

每個(gè) Kafka 集群內(nèi)的 Broker 都有一個(gè)不重復(fù)的編號(hào),如圖中的 Broker-0、Broker-1 等……

Topic:消息的主題,可以理解為消息的分類,Kafka 的數(shù)據(jù)就保存在 Topic。在每個(gè) Broker 上都可以創(chuàng)建多個(gè) Topic。

Partition:Topic 的分區(qū),每個(gè) Topic 可以有多個(gè)分區(qū),分區(qū)的作用是做負(fù)載,提高 Kafka 的吞吐量。

同一個(gè) Topic 在不同的分區(qū)的數(shù)據(jù)是不重復(fù)的,Partition 的表現(xiàn)形式就是一個(gè)一個(gè)的文件夾!

Replication:每一個(gè)分區(qū)都有多個(gè)副本,副本的作用是做備胎。當(dāng)主分區(qū)(Leader)故障的時(shí)候會(huì)選擇一個(gè)備胎(Follower)上位,成為 Leader。

在 Kafka 中默認(rèn)副本的***數(shù)量是 10 個(gè),且副本的數(shù)量不能大于 Broker 的數(shù)量,F(xiàn)ollower 和 Leader 絕對(duì)是在不同的機(jī)器,同一機(jī)器對(duì)同一個(gè)分區(qū)也只可能存放一個(gè)副本(包括自己)。

  • Message:每一條發(fā)送的消息主體。
  • Consumer:消費(fèi)者,即消息的消費(fèi)方,是消息的出口。
  • Consumer Group:我們可以將多個(gè)消費(fèi)組組成一個(gè)消費(fèi)者組,在 Kafka 的設(shè)計(jì)中同一個(gè)分區(qū)的數(shù)據(jù)只能被消費(fèi)者組中的某一個(gè)消費(fèi)者消費(fèi)。

同一個(gè)消費(fèi)者組的消費(fèi)者可以消費(fèi)同一個(gè) Topic 的不同分區(qū)的數(shù)據(jù),這也是為了提高 Kafka 的吞吐量!

  • Zookeeper:Kafka 集群依賴 Zookeeper 來保存集群的的元信息,來保證系統(tǒng)的可用性。

工作流程分析

上面介紹了 Kafka 的基礎(chǔ)架構(gòu)及基本概念,不知道大家看完有沒有對(duì) Kafka 有個(gè)大致印象,如果還比較懵也沒關(guān)系!

我們接下來再結(jié)合上面的結(jié)構(gòu)圖分析 Kafka 的工作流程,***再回來整個(gè)梳理一遍我相信你會(huì)更有收獲!

發(fā)送數(shù)據(jù)

我們看上面的架構(gòu)圖中,Producer 就是生產(chǎn)者,是數(shù)據(jù)的入口。注意看圖中的紅色箭頭,Producer 在寫入數(shù)據(jù)的時(shí)候永遠(yuǎn)在找 Leader,不會(huì)直接將數(shù)據(jù)寫入 Follower!

那 Leader 怎么找呢?寫入的流程又是什么樣的呢?我們看下圖:

發(fā)送的流程就在圖中已經(jīng)說明了,就不單獨(dú)在文字列出來了!需要注意的一點(diǎn)是,消息寫入 Leader 后,F(xiàn)ollower 是主動(dòng)的去 Leader 進(jìn)行同步的!

Producer 采用 Push 模式將數(shù)據(jù)發(fā)布到 Broker,每條消息追加到分區(qū)中,順序?qū)懭氪疟P,所以保證同一分區(qū)內(nèi)的數(shù)據(jù)是有序的!

寫入示意圖如下:

上面說到數(shù)據(jù)會(huì)寫入到不同的分區(qū),那 Kafka 為什么要做分區(qū)呢?相信大家應(yīng)該也能猜到,分區(qū)的主要目的是:

  • 方便擴(kuò)展。因?yàn)橐粋€(gè) Topic 可以有多個(gè) Partition,所以我們可以通過擴(kuò)展機(jī)器去輕松的應(yīng)對(duì)日益增長(zhǎng)的數(shù)據(jù)量。
  • 提高并發(fā)。以 Partition 為讀寫單位,可以多個(gè)消費(fèi)者同時(shí)消費(fèi)數(shù)據(jù),提高了消息的處理效率。

熟悉負(fù)載均衡的朋友應(yīng)該知道,當(dāng)我們向某個(gè)服務(wù)器發(fā)送請(qǐng)求的時(shí)候,服務(wù)端可能會(huì)對(duì)請(qǐng)求做一個(gè)負(fù)載,將流量分發(fā)到不同的服務(wù)器。

那在 Kafka 中,如果某個(gè) Topic 有多個(gè) Partition,Producer 又怎么知道該將數(shù)據(jù)發(fā)往哪個(gè) Partition 呢?

Kafka 中有幾個(gè)原則:

  • Partition 在寫入的時(shí)候可以指定需要寫入的 Partition,如果有指定,則寫入對(duì)應(yīng)的 Partition。
  • 如果沒有指定 Partition,但是設(shè)置了數(shù)據(jù)的 Key,則會(huì)根據(jù) Key 的值 Hash 出一個(gè) Partition。
  • 如果既沒指定 Partition,又沒有設(shè)置 Key,則會(huì)輪詢選出一個(gè) Partition。

保證消息不丟失是一個(gè)消息隊(duì)列中間件的基本保證,那 Producer 在向 Kafka 寫入消息的時(shí)候,怎么保證消息不丟失呢?

其實(shí)上面的寫入流程圖中有描述出來,那就是通過 ACK 應(yīng)答機(jī)制!在生產(chǎn)者向隊(duì)列寫入數(shù)據(jù)的時(shí)候可以設(shè)置參數(shù)來確定是否確認(rèn) Kafka 接收到數(shù)據(jù),這個(gè)參數(shù)可設(shè)置的值為 0、1、all:

  • 0 代表 Producer 往集群發(fā)送數(shù)據(jù)不需要等到集群的返回,不確保消息發(fā)送成功。安全性***但是效率***。
  • 1 代表 Producer 往集群發(fā)送數(shù)據(jù)只要 Leader 應(yīng)答就可以發(fā)送下一條,只確保 Leader 發(fā)送成功。
  • all 代表 Producer 往集群發(fā)送數(shù)據(jù)需要所有的 Follower 都完成從 Leader 的同步才會(huì)發(fā)送下一條,確保 Leader 發(fā)送成功和所有的副本都完成備份。安全性***,但是效率***。

***要注意的是,如果往不存在的 Topic 寫數(shù)據(jù),能不能寫入成功呢?Kafka 會(huì)自動(dòng)創(chuàng)建 Topic,分區(qū)和副本的數(shù)量根據(jù)默認(rèn)配置都是 1。

保存數(shù)據(jù)

Producer 將數(shù)據(jù)寫入 Kafka 后,集群就需要對(duì)數(shù)據(jù)進(jìn)行保存了!Kafka 將數(shù)據(jù)保存在磁盤,可能在我們的一般的認(rèn)知里,寫入磁盤是比較耗時(shí)的操作,不適合這種高并發(fā)的組件。

Kafka 初始會(huì)單獨(dú)開辟一塊磁盤空間,順序?qū)懭霐?shù)據(jù)(效率比隨機(jī)寫入高)。

①Partition 結(jié)構(gòu)

前面說過了每個(gè) Topic 都可以分為一個(gè)或多個(gè) Partition,如果你覺得 Topic 比較抽象,那 Partition 就是比較具體的東西了!

Partition 在服務(wù)器上的表現(xiàn)形式就是一個(gè)一個(gè)的文件夾,每個(gè) Partition 的文件夾下面會(huì)有多組 Segment 文件。

每組 Segment 文件又包含 .index 文件、.log 文件、.timeindex 文件(早期版本中沒有)三個(gè)文件。

Log 文件就是實(shí)際存儲(chǔ) Message 的地方,而 Index 和 Timeindex 文件為索引文件,用于檢索消息。

如上圖,這個(gè) Partition 有三組 Segment 文件,每個(gè) Log 文件的大小是一樣的,但是存儲(chǔ)的 Message 數(shù)量是不一定相等的(每條的 Message 大小不一致)。

文件的命名是以該 Segment 最小 Offset 來命名的,如 000.index 存儲(chǔ) Offset 為 0~368795 的消息,Kafka 就是利用分段+索引的方式來解決查找效率的問題。

②Message 結(jié)構(gòu)

上面說到 Log 文件就實(shí)際是存儲(chǔ) Message 的地方,我們?cè)?Producer 往 Kafka 寫入的也是一條一條的 Message。

那存儲(chǔ)在 Log 中的 Message 是什么樣子的呢?消息主要包含消息體、消息大小、Offset、壓縮類型……等等!

我們重點(diǎn)需要知道的是下面三個(gè):

  • Offset:Offset 是一個(gè)占 8byte 的有序 id 號(hào),它可以唯一確定每條消息在 Parition 內(nèi)的位置!
  • 消息大?。合⒋笮≌加?4byte,用于描述消息的大小。
  • 消息體:消息體存放的是實(shí)際的消息數(shù)據(jù)(被壓縮過),占用的空間根據(jù)具體的消息而不一樣。

③存儲(chǔ)策略

無論消息是否被消費(fèi),Kafka 都會(huì)保存所有的消息。那對(duì)于舊數(shù)據(jù)有什么刪除策略呢?

  • 基于時(shí)間,默認(rèn)配置是 168 小時(shí)(7 天)。
  • 基于大小,默認(rèn)配置是 1073741824。

需要注意的是,Kafka 讀取特定消息的時(shí)間復(fù)雜度是 O(1),所以這里刪除過期的文件并不會(huì)提高 Kafka 的性能!

消費(fèi)數(shù)據(jù)

消息存儲(chǔ)在 Log 文件后,消費(fèi)者就可以進(jìn)行消費(fèi)了。在講消息隊(duì)列通信的兩種模式的時(shí)候講到過點(diǎn)對(duì)點(diǎn)模式和發(fā)布訂閱模式。

Kafka 采用的是點(diǎn)對(duì)點(diǎn)的模式,消費(fèi)者主動(dòng)的去 Kafka 集群拉取消息,與 Producer 相同的是,消費(fèi)者在拉取消息的時(shí)候也是找 Leader 去拉取。

多個(gè)消費(fèi)者可以組成一個(gè)消費(fèi)者組(Consumer Group),每個(gè)消費(fèi)者組都有一個(gè)組 id!

同一個(gè)消費(fèi)組者的消費(fèi)者可以消費(fèi)同一 Topic 下不同分區(qū)的數(shù)據(jù),但是不會(huì)組內(nèi)多個(gè)消費(fèi)者消費(fèi)同一分區(qū)的數(shù)據(jù)!

是不是有點(diǎn)繞?我們看下圖:

圖示是消費(fèi)者組內(nèi)的消費(fèi)者小于 Partition 數(shù)量的情況,所以會(huì)出現(xiàn)某個(gè)消費(fèi)者消費(fèi)多個(gè) Partition 數(shù)據(jù)的情況,消費(fèi)的速度也就不及只處理一個(gè) Partition 的消費(fèi)者的處理速度!

如果是消費(fèi)者組的消費(fèi)者多于 Partition 的數(shù)量,那會(huì)不會(huì)出現(xiàn)多個(gè)消費(fèi)者消費(fèi)同一個(gè) Partition 的數(shù)據(jù)呢?

上面已經(jīng)提到過不會(huì)出現(xiàn)這種情況!多出來的消費(fèi)者不消費(fèi)任何 Partition 的數(shù)據(jù)。

所以在實(shí)際的應(yīng)用中,建議消費(fèi)者組的 Consumer 的數(shù)量與 Partition 的數(shù)量一致!

在保存數(shù)據(jù)的小節(jié)里面,我們聊到了 Partition 劃分為多組 Segment,每個(gè) Segment 又包含 .log、.index、.timeindex 文件,存放的每條 Message 包含 Offset、消息大小、消息體……

我們多次提到 Segment 和 Offset,查找消息的時(shí)候是怎么利用 Segment+Offset 配合查找的呢?

假如現(xiàn)在需要查找一個(gè) Offset 為 368801 的 Message 是什么樣的過程呢?我們先看看下面的圖:

①先找到 Offset 的 368801message 所在的 Segment 文件(利用二分法查找),這里找到的就是在第二個(gè) Segment 文件。

②打開找到的 Segment 中的 .index 文件(也就是 368796.index 文件,該文件起始偏移量為 368796+1。

我們要查找的 Offset 為 368801 的 Message 在該 Index 內(nèi)的偏移量為 368796+5=368801,所以這里要查找的相對(duì) Offset 為 5)。

由于該文件采用的是稀疏索引的方式存儲(chǔ)著相對(duì) Offset 及對(duì)應(yīng) Message 物理偏移量的關(guān)系,所以直接找相對(duì) Offset 為 5 的索引找不到。

這里同樣利用二分法查找相對(duì) Offset 小于或者等于指定的相對(duì) Offset 的索引條目中***的那個(gè)相對(duì) Offset,所以找到的是相對(duì) Offset 為 4 的這個(gè)索引。

③根據(jù)找到的相對(duì) Offset 為 4 的索引確定 Message 存儲(chǔ)的物理偏移位置為 256。

打開數(shù)據(jù)文件,從位置為 256 的那個(gè)地方開始順序掃描直到找到 Offset 為 368801 的那條 Message。

這套機(jī)制是建立在 Offset 為有序的基礎(chǔ)上,利用 Segment+有序 Offset+稀疏索引+二分查找+順序查找等多種手段來高效的查找數(shù)據(jù)!

至此,消費(fèi)者就能拿到需要處理的數(shù)據(jù)進(jìn)行處理了。那每個(gè)消費(fèi)者又是怎么記錄自己消費(fèi)的位置呢?

在早期的版本中,消費(fèi)者將消費(fèi)到的 Offset 維護(hù)在 Zookeeper 中,Consumer 每間隔一段時(shí)間上報(bào)一次,這里容易導(dǎo)致重復(fù)消費(fèi),且性能不好!

在新的版本中消費(fèi)者消費(fèi)到的 Offset 已經(jīng)直接維護(hù)在 Kafka 集群的 __consumer_offsets 這個(gè) Topic 中!

作者:蘇靜

簡(jiǎn)介:有過多年大型互聯(lián)網(wǎng)項(xiàng)目的開發(fā)經(jīng)驗(yàn),對(duì)高并發(fā)、分布式、以及微服務(wù)技術(shù)有深入的研究及相關(guān)實(shí)踐經(jīng)驗(yàn)。經(jīng)歷過自學(xué),熱衷于技術(shù)研究與分享!格言:始終保持虛心學(xué)習(xí)的態(tài)度!

 

責(zé)任編輯:武曉燕 來源: 17coding 技術(shù)博客
相關(guān)推薦

2017-06-07 18:40:33

PromiseJavascript前端

2022-12-19 10:32:23

算法測(cè)量

2021-06-18 07:34:12

Kafka中間件微服務(wù)

2023-10-06 19:21:49

Initializr應(yīng)用Spring

2019-10-12 08:36:48

Java程序員數(shù)據(jù)結(jié)構(gòu)

2017-11-20 10:25:20

數(shù)據(jù)庫MySQL索引

2021-11-11 15:03:35

MySQLSQL索引

2009-11-25 09:02:12

2021-11-07 23:46:32

MySQLSQL索引

2020-05-12 09:10:24

瀏覽器服務(wù)器網(wǎng)絡(luò)

2009-03-23 09:07:04

2017-12-15 10:37:22

2021-05-21 06:44:43

AI人工智能GPU

2017-09-09 13:29:22

ARCoreAndroid移動(dòng)設(shè)備

2020-11-06 08:54:43

Vue 3.0函數(shù)代碼

2019-11-20 10:38:59

MySQLSQL數(shù)據(jù)庫

2024-11-21 14:30:00

模型訓(xùn)練

2021-04-23 09:50:41

topLinux命令

2014-11-10 12:29:52

客服網(wǎng)站

2021-12-01 06:50:50

Docker底層原理
點(diǎn)贊
收藏

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

99re6热在线精品视频播放速度| 日韩有码在线电影| 激情六月丁香婷婷| 色的视频在线免费看| 国产成人精品免费在线| 91sa在线看| 日韩一卡二卡在线观看| 久久夜色电影| 欧美巨大另类极品videosbest| 国产又粗又长又爽视频| 男人天堂网在线观看| 久久精品久久久精品美女| 久久久久久久久久婷婷| 一级黄色录像毛片| 国产精品毛片视频| 欧美日韩成人高清| 久久无码高潮喷水| av官网在线播放| 国产日韩欧美综合在线| 豆国产97在线| 国产精品人人妻人人爽| 亚洲伊人观看| 欧美精品福利视频| 免费在线观看黄色小视频| 亚洲精品小区久久久久久| 日韩欧美综合一区| 亚洲天堂2018av| 性欧美18xxxhd| 一区二区国产视频| 一区二区三区的久久的视频| 你懂的在线播放| 国产成人免费av在线| 国产精品视频内| 国产成人无码精品久在线观看| 中文字幕一区二区三区久久网站| 亚洲视频在线观看免费| 国产激情第一页| 欧美激情精品| 777久久久精品| 亚洲黄色av网址| 日韩影片中文字幕| 黑人巨大精品欧美一区免费视频| 精品无码一区二区三区爱欲| 成人高清免费在线| 国产精品理论片在线观看| 日韩av一级大片| 黄色av网站在线看| 91一区二区在线| 国产专区一区二区三区| 人妻夜夜爽天天爽| 懂色av一区二区三区蜜臀| 97视频资源在线观看| 99视频国产精品免费观看a| 精品一区二区在线观看| 成人av番号网| 国产福利视频导航| 国产精品99久久久久| av一区二区三区免费| 99国产精品欲| 国产ts人妖一区二区| 成人免费看片网站| 免费av网站在线播放| 国产99一区视频免费| 粉嫩精品一区二区三区在线观看| 懂色av成人一区二区三区| 成人av在线资源网| 久久99九九| 国产在线一在线二| 国产欧美中文在线| 亚洲一一在线| 在线免费观看a视频| 一区二区免费在线播放| 男女激情无遮挡| 成人直播视频| 欧美日韩成人在线一区| 国产精品嫩草69影院| 欧美a大片欧美片| 亚洲色在线视频| 来吧亚洲综合网| 红桃视频欧美| 国产成人jvid在线播放| 97精品人妻一区二区三区在线| 美女久久久精品| 亚洲自拍小视频免费观看| 动漫av一区二区三区| www激情久久| 视频一区二区三| 日本三级韩国三级欧美三级| 精品日韩中文字幕| 波多野结衣xxxx| 91久久偷偷做嫩草影院电| 日韩高清欧美高清| 顶级黑人搡bbw搡bbbb搡| 午夜亚洲福利| 国产国语videosex另类| 99在线观看免费| 久久久久久久久久看片| 天天爱天天做天天操| www欧美xxxx| 欧美午夜精品久久久久久孕妇| 91网址在线观看精品| 亚洲欧美成人vr| 欧美成人h版在线观看| 女人十八岁毛片| 精品在线免费视频| 欧美12av| 欧美videos另类精品| 色天天综合久久久久综合片| 色偷偷中文字幕| 国产真实有声精品录音| 欧美黑人一区二区三区| 日韩乱码一区二区三区| 不卡视频一二三四| 在线观看日韩羞羞视频| 夜鲁夜鲁夜鲁视频在线播放| 91精品国产高清一区二区三区| 日本一区二区三区网站| 欧美日韩第一区| 国产精品人人做人人爽| 天堂在线一二区| 亚洲精品免费在线| 午夜剧场高清版免费观看| 免费成人av| 8090成年在线看片午夜| 亚洲国产精品二区| 国产精品毛片高清在线完整版| 成年人视频网站免费观看| 午夜免费欧美电影| 日韩中文在线视频| 中文字幕手机在线视频| 97精品国产露脸对白| 日韩视频 中文字幕| 色成人综合网| 中文字幕精品一区久久久久| 中文字幕一区在线播放| 成人激情综合网站| www插插插无码免费视频网站| 香蕉成人在线| 日韩在线不卡视频| 中文字幕在线观看免费| 国产精品网站导航| 天天操天天爱天天爽| 自拍偷拍精品| 日韩av片免费在线观看| 日本a一级在线免费播放| 精品国产乱码久久久久久天美| 制服.丝袜.亚洲.中文.综合懂| 欧美一区二区三区免费看| 91久久精品国产| 国产91在线视频蝌蚪| 欧美一区二区人人喊爽| 黄色录像一级片| 国产在线国偷精品产拍免费yy| 99精品视频网站| 国产精品1区| 欧美日韩国产999| 国产91免费看| 欧美日韩在线看| 亚洲图片另类小说| 免费在线观看一区二区三区| 在线视频91| 日本一区影院| 国内精品久久久久久久久| 色丁香婷婷综合久久| 日韩欧美国产网站| 亚洲图片第一页| 国内精品视频一区二区三区八戒| 成人免费看片视频在线观看| 国产精品sss在线观看av| 91大神福利视频在线| 高清美女视频一区| 6080日韩午夜伦伦午夜伦| 婷婷色中文字幕| 99久久精品99国产精品| 激情五月开心婷婷| 久久社区一区| 成人自拍爱视频| 在线最新版中文在线| 色妞久久福利网| 亚洲精品久久久久久久久久| 欧美性xxxx极品hd欧美风情| 中国1级黄色片| 国产69精品久久久久777| 久草热视频在线观看| 成人在线国产| 国产精品一区而去| 日韩高清在线| 欧美区二区三区| 欧美大片aaa| 欧美一区日本一区韩国一区| 黑人一级大毛片| 亚洲男人电影天堂| 特级西西人体4444xxxx| 蜜臀av性久久久久蜜臀aⅴ流畅 | 99中文字幕在线| 黄页网站一区| 一级做a爰片久久| 欧美日韩精品一区二区三区在线观看| 国产精品美女在线观看| 国产在线拍揄自揄拍视频| 中文字幕欧美日韩| 内射后入在线观看一区| 欧美日韩精品高清| 国产成人亚洲精品自产在线| 亚洲欧洲日韩综合一区二区| av鲁丝一区鲁丝二区鲁丝三区| 久久69国产一区二区蜜臀| 欧美黑人经典片免费观看| 日韩在线高清| 欧美xxxx黑人又粗又长密月| 91精品国产乱码久久久竹菊| 91精品久久久久久久久中文字幕 | 在线一区二区观看| 国产亚洲欧美精品久久久久久| 中文字幕av一区二区三区高| 亚洲天堂资源在线| 顶级嫩模精品视频在线看| 加勒比av中文字幕| 日韩国产一区二| 国产日产欧美视频| 亚洲高清激情| 青青视频免费在线| 国产精品毛片一区二区在线看| 日韩.欧美.亚洲| 综合干狼人综合首页| 国产精品久久久一区二区三区 | 国产在线精品一区二区中文| 精品一区二区三区四区五区 | 在线视频播放大全| 欧美午夜激情在线| 日本视频免费在线| 夜夜嗨av一区二区三区| 性欧美videos| 中文字幕一区二区三中文字幕| 国产精品20p| 久久久久久综合| 受虐m奴xxx在线观看| 久久众筹精品私拍模特| 国产网站无遮挡| 99久久精品情趣| 三级视频网站在线观看| av一区二区三区黑人| 在线观看国产免费视频| 99re成人在线| 五十路六十路七十路熟婆| av在线不卡电影| 午夜av免费看| 99国产精品99久久久久久| 亚洲男人在线天堂| 久久久久久久综合狠狠综合| 中文字幕免费视频| 中文一区在线播放| 中文字幕无码日韩专区免费| 中文字幕中文乱码欧美一区二区 | 韩国三级在线观看久| 国产一区二区三区在线视频| 国产高清在线观看| 精品国产欧美一区二区三区成人| 欧美a免费在线| 日韩一二三在线视频播| 老司机午夜在线视频| 久久国产精品影视| 2018av在线| 日韩美女主播视频| 福利精品在线| 99高清视频有精品视频| 精品精品国产毛片在线看| 麻豆亚洲一区| 日韩中文字幕高清在线观看| 天天操天天干天天玩| 极品裸体白嫩激情啪啪国产精品| 69堂免费视频| 理论片日本一区| 三大队在线观看| 91在线视频观看| 欧洲性xxxx| 亚洲综合色网站| 无码人妻黑人中文字幕| 欧美日本免费一区二区三区| 亚洲xxxx天美| 亚洲视频电影图片偷拍一区| 成人免费在线| 91精品国产高清自在线| 桃色一区二区| 91免费版网站在线观看| 一道本一区二区三区| 国产精品无码乱伦| 亚洲黄色影片| 污污网站在线观看视频| 成人在线一区二区三区| 成熟人妻av无码专区| 亚洲精品自拍动漫在线| 好看的av在线| 日韩一区二区三免费高清| 你懂的好爽在线观看| 精品自在线视频| 欧美大胆成人| 成人国产一区二区| 清纯唯美日韩| 我的公把我弄高潮了视频| 美女在线一区二区| 在线观看国产免费视频| 亚洲欧洲99久久| 午夜精品免费观看| 精品国产凹凸成av人网站| 波多野结衣在线影院| 久久久久久久久久久91| 国外成人福利视频| 久久精品国产理论片免费| 亚洲精品网址| 少妇激情一区二区三区| 99精品一区二区| 2021亚洲天堂| 欧美日免费三级在线| 欧美日韩伦理片| 高清一区二区三区日本久| 香蕉久久久久久| 日韩欧美视频一区二区| 性色一区二区三区| 极品白嫩的小少妇| 亚洲女子a中天字幕| 欧美三级网站在线观看| 日韩精品久久久久久久玫瑰园| 色女人在线视频| 亚洲最大福利视频| 日韩大片在线播放| 九色91popny| 久久久久亚洲综合| 欧美日韩精品区| 亚洲国产精品热久久| 国产丝袜在线播放| 亚洲一区二区三区四区视频| 久久国产亚洲| www欧美激情| 欧美高清在线精品一区| 中文字幕亚洲乱码熟女1区2区| 日韩av一卡二卡| 玖玖在线播放| 国产在线精品二区| 亚洲精品1区| 少妇精品无码一区二区三区| 亚洲一区二区三区影院| 亚洲黄色在线免费观看| 欧美精品生活片| 国产一区二区三区视频在线| 中文字幕免费高| 国产一区999| 国产乱国产乱老熟300| 日韩精品自拍偷拍| 人人澡人人添人人爽一区二区| 91国产丝袜在线放| 欧美日韩国产欧| 艳妇乳肉豪妇荡乳xxx| 午夜欧美大尺度福利影院在线看| 色偷偷在线观看| 奇米成人av国产一区二区三区| 亚洲影院天堂中文av色| 久久精品午夜福利| 日本一区二区三区视频视频| 中文字幕在线观看第二页| 久久精品国产99国产精品澳门 | 欧美日韩生活片| 欧美日韩极品在线观看一区| 精品国产99久久久久久| 91青青草免费观看| 最新亚洲一区| 丰腴饱满的极品熟妇| 欧美另类高清zo欧美| 2021国产在线| 国产在线观看一区| 日韩精品久久久久久| 99国产精品无码| 日韩女优制服丝袜电影| 伊人成综合网站| 亚洲一区二区三区精品动漫| 国产成人免费在线视频| 久久精品国产成人av| 伊人伊成久久人综合网小说| 日韩一区二区三区精品| 久久国产成人精品国产成人亚洲| 国产欧美日韩不卡| 国产av无码专区亚洲av| 2019中文字幕免费视频| 婷婷亚洲图片| 欲求不满的岳中文字幕| 欧美日韩国产美| 亚洲精品白浆| 欧美日韩高清免费| 国产一区二区三区免费看 | 国产精品一区二区三区四区五区 | 视频一区二区在线播放| 国产日韩精品在线观看| 在线观看日韩av电影| 日本高清黄色片| 亚洲福利影片在线| 四虎影视精品永久在线观看| 妞干网在线观看视频| 国产精品久久久久天堂| 天堂在线中文| www.久久爱.cn|