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

Kafka架構(gòu)原理,也就這么回事!

原創(chuàng)
開(kāi)發(fā) 架構(gòu) 開(kāi)發(fā)工具 Kafka
本文主要講解 Kafka 是什么、Kafka 的架構(gòu)包括工作流程和存儲(chǔ)機(jī)制,以及生產(chǎn)者和消費(fèi)者。

【51CTO.com原創(chuàng)稿件】本文主要講解 Kafka 是什么、Kafka 的架構(gòu)包括工作流程和存儲(chǔ)機(jī)制,以及生產(chǎn)者和消費(fèi)者。

[[317242]]

圖片來(lái)自 Pexels

最終大家會(huì)掌握 Kafka 中最重要的概念,分別是 Broker、Producer、Consumer、Consumer Group、Topic、Partition、Replica、Leader、Follower,這是學(xué)會(huì)和理解 Kafka 的基礎(chǔ)和必備內(nèi)容。

定義

Kafka 是一個(gè)分布式的基于發(fā)布/訂閱模式的消息隊(duì)列(Message Queue),主要應(yīng)用與大數(shù)據(jù)實(shí)時(shí)處理領(lǐng)域。

消息隊(duì)列

Kafka 本質(zhì)上是一個(gè) MQ(Message Queue),使用消息隊(duì)列的好處?(面試會(huì)問(wèn))

  • 解耦:允許我們獨(dú)立的擴(kuò)展或修改隊(duì)列兩邊的處理過(guò)程。
  • 可恢復(fù)性:即使一個(gè)處理消息的進(jìn)程掛掉,加入隊(duì)列中的消息仍然可以在系統(tǒng)恢復(fù)后被處理。
  • 緩沖:有助于解決生產(chǎn)消息和消費(fèi)消息的處理速度不一致的情況。
  • 靈活性&峰值處理能力:不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰,消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪(fǎng)問(wèn)壓力。
  • 異步通信:消息隊(duì)列允許用戶(hù)把消息放入隊(duì)列但不立即處理它。

發(fā)布/訂閱模式

一對(duì)多,生產(chǎn)者將消息發(fā)布到 Topic 中,有多個(gè)消費(fèi)者訂閱該主題,發(fā)布到 Topic 的消息會(huì)被所有訂閱者消費(fèi),被消費(fèi)的數(shù)據(jù)不會(huì)立即從 Topic 清除。

架構(gòu)

Kafka 存儲(chǔ)的消息來(lái)自任意多被稱(chēng)為 Producer 生產(chǎn)者的進(jìn)程。數(shù)據(jù)從而可以被發(fā)布到不同的 Topic 主題下的不同 Partition 分區(qū)。

在一個(gè)分區(qū)內(nèi),這些消息被索引并連同時(shí)間戳存儲(chǔ)在一起。其它被稱(chēng)為 Consumer 消費(fèi)者的進(jìn)程可以從分區(qū)訂閱消息。

Kafka 運(yùn)行在一個(gè)由一臺(tái)或多臺(tái)服務(wù)器組成的集群上,并且分區(qū)可以跨集群結(jié)點(diǎn)分布。

下面給出 Kafka 一些重要概念,讓大家對(duì) Kafka 有個(gè)整體的認(rèn)識(shí)和感知,后面還會(huì)詳細(xì)的解析每一個(gè)概念的作用以及更深入的原理:

  • Producer: 消息生產(chǎn)者,向 Kafka Broker 發(fā)消息的客戶(hù)端。
  • Consumer:消息消費(fèi)者,從 Kafka Broker 取消息的客戶(hù)端。
  • Consumer Group:消費(fèi)者組(CG),消費(fèi)者組內(nèi)每個(gè)消費(fèi)者負(fù)責(zé)消費(fèi)不同分區(qū)的數(shù)據(jù),提高消費(fèi)能力。一個(gè)分區(qū)只能由組內(nèi)一個(gè)消費(fèi)者消費(fèi),消費(fèi)者組之間互不影響。所有的消費(fèi)者都屬于某個(gè)消費(fèi)者組,即消費(fèi)者組是邏輯上的一個(gè)訂閱者。
  • Broker:一臺(tái) Kafka 機(jī)器就是一個(gè) Broker。一個(gè)集群由多個(gè) Broker 組成。一個(gè) Broker 可以容納多個(gè) Topic。
  • Topic:可以理解為一個(gè)隊(duì)列,Topic 將消息分類(lèi),生產(chǎn)者和消費(fèi)者面向的是同一個(gè) Topic。
  • Partition:為了實(shí)現(xiàn)擴(kuò)展性,提高并發(fā)能力,一個(gè)非常大的 Topic 可以分布到多個(gè) Broker (即服務(wù)器)上,一個(gè) Topic 可以分為多個(gè) Partition,每個(gè) Partition 是一個(gè) 有序的隊(duì)列。
  • Replica:副本,為實(shí)現(xiàn)備份的功能,保證集群中的某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),該節(jié)點(diǎn)上的 Partition 數(shù)據(jù)不丟失,且 Kafka 仍然能夠繼續(xù)工作,Kafka 提供了副本機(jī)制,一個(gè) Topic 的每個(gè)分區(qū)都有若干個(gè)副本,一個(gè) Leader 和若干個(gè) Follower。
  • Leader:每個(gè)分區(qū)多個(gè)副本的“主”副本,生產(chǎn)者發(fā)送數(shù)據(jù)的對(duì)象,以及消費(fèi)者消費(fèi)數(shù)據(jù)的對(duì)象,都是 Leader。
  • Follower:每個(gè)分區(qū)多個(gè)副本的“從”副本,實(shí)時(shí)從 Leader 中同步數(shù)據(jù),保持和 Leader 數(shù)據(jù)的同步。Leader 發(fā)生故障時(shí),某個(gè) Follower 還會(huì)成為新的 Leader。
  • Offset:消費(fèi)者消費(fèi)的位置信息,監(jiān)控?cái)?shù)據(jù)消費(fèi)到什么位置,當(dāng)消費(fèi)者掛掉再重新恢復(fù)的時(shí)候,可以從消費(fèi)位置繼續(xù)消費(fèi)。
  • Zookeeper:Kafka 集群能夠正常工作,需要依賴(lài)于 Zookeeper,Zookeeper 幫助 Kafka 存儲(chǔ)和管理集群信息。

工作流程

Kafka集群將 Record 流存儲(chǔ)在稱(chēng)為 Topic 的類(lèi)別中,每個(gè)記錄由一個(gè)鍵、一個(gè)值和一個(gè)時(shí)間戳組成。

Kafka 是一個(gè)分布式流平臺(tái),這到底是什么意思?

  • 發(fā)布和訂閱記錄流,類(lèi)似于消息隊(duì)列或企業(yè)消息傳遞系統(tǒng)。
  • 以容錯(cuò)的持久方式存儲(chǔ)記錄流。
  • 處理記錄流。

Kafka 中消息是以 Topic 進(jìn)行分類(lèi)的,生產(chǎn)者生產(chǎn)消息,消費(fèi)者消費(fèi)消息,面向的都是同一個(gè) Topic。

Topic 是邏輯上的概念,而 Partition 是物理上的概念,每個(gè) Partition 對(duì)應(yīng)于一個(gè) log 文件,該 log 文件中存儲(chǔ)的就是 Producer 生產(chǎn)的數(shù)據(jù)。

Producer 生產(chǎn)的數(shù)據(jù)會(huì)不斷追加到該 log 文件末端,且每條數(shù)據(jù)都有自己的 Offset。

消費(fèi)者組中的每個(gè)消費(fèi)者,都會(huì)實(shí)時(shí)記錄自己消費(fèi)到了哪個(gè) Offset,以便出錯(cuò)恢復(fù)時(shí),從上次的位置繼續(xù)消費(fèi)。

存儲(chǔ)機(jī)制

由于生產(chǎn)者生產(chǎn)的消息會(huì)不斷追加到 log 文件末尾,為防止 log 文件過(guò)大導(dǎo)致數(shù)據(jù)定位效率低下,Kafka 采取了分片和索引機(jī)制。

它將每個(gè) Partition 分為多個(gè) Segment,每個(gè) Segment 對(duì)應(yīng)兩個(gè)文件:“.index” 索引文件和 “.log” 數(shù)據(jù)文件。

這些文件位于同一文件下,該文件夾的命名規(guī)則為:topic 名-分區(qū)號(hào)。例如,first 這個(gè) topic 有三分分區(qū),則其對(duì)應(yīng)的文件夾為 first-0,first-1,first-2。

  1. # ls /root/data/kafka/first-0         
  2. 00000000000000009014.index     
  3. 00000000000000009014.log 
  4. 00000000000000009014.timeindex 
  5. 00000000000000009014.snapshot    
  6. leader-epoch-checkpoint 

index 和 log 文件以當(dāng)前 Segment 的第一條消息的 Offset 命名。下圖為 index 文件和 log 文件的結(jié)構(gòu)示意圖:

“.index” 文件存儲(chǔ)大量的索引信息,“.log” 文件存儲(chǔ)大量的數(shù)據(jù),索引文件中的元數(shù)據(jù)指向?qū)?yīng)數(shù)據(jù)文件中 Message 的物理偏移量。

生產(chǎn)者

分區(qū)策略

分區(qū)原因:

  • 方便在集群中擴(kuò)展,每個(gè) Partition 可以通過(guò)調(diào)整以適應(yīng)它所在的機(jī)器,而一個(gè) Topic 又可以有多個(gè) Partition 組成,因此可以以 Partition 為單位讀寫(xiě)了。
  • 可以提高并發(fā),因此可以以 Partition 為單位讀寫(xiě)了。

分區(qū)原則:我們需要將 Producer 發(fā)送的數(shù)據(jù)封裝成一個(gè) ProducerRecord 對(duì)象。

該對(duì)象需要指定一些參數(shù):

  • topic:string 類(lèi)型,NotNull。
  • partition:int 類(lèi)型,可選。
  • timestamp:long 類(lèi)型,可選。
  • key:string 類(lèi)型,可選。
  • value:string 類(lèi)型,可選。
  • headers:array 類(lèi)型,Nullable。

①指明 Partition 的情況下,直接將給定的 Value 作為 Partition 的值。

②沒(méi)有指明 Partition 但有 Key 的情況下,將 Key 的 Hash 值與分區(qū)數(shù)取余得到 Partition 值。

③既沒(méi)有 Partition 有沒(méi)有 Key 的情況下,第一次調(diào)用時(shí)隨機(jī)生成一個(gè)整數(shù)(后面每次調(diào)用都在這個(gè)整數(shù)上自增),將這個(gè)值與可用的分區(qū)數(shù)取余,得到 Partition 值,也就是常說(shuō)的 Round-Robin 輪詢(xún)算法。

數(shù)據(jù)可靠性保證

為保證 Producer 發(fā)送的數(shù)據(jù),能可靠地發(fā)送到指定的 Topic,Topic 的每個(gè) Partition 收到 Producer 發(fā)送的數(shù)據(jù)后,都需要向 Producer 發(fā)送 ACK(ACKnowledge 確認(rèn)收到)。

如果 Producer 收到 ACK,就會(huì)進(jìn)行下一輪的發(fā)送,否則重新發(fā)送數(shù)據(jù)。

①副本數(shù)據(jù)同步策略

何時(shí)發(fā)送 ACK?確保有 Follower 與 Leader 同步完成,Leader 再發(fā)送 ACK,這樣才能保證 Leader 掛掉之后,能在 Follower 中選舉出新的 Leader 而不丟數(shù)據(jù)。

多少個(gè) Follower 同步完成后發(fā)送 ACK?全部 Follower 同步完成,再發(fā)送 ACK。

②ISR

采用第二種方案,所有 Follower 完成同步,Producer 才能繼續(xù)發(fā)送數(shù)據(jù),設(shè)想有一個(gè) Follower 因?yàn)槟撤N原因出現(xiàn)故障,那 Leader 就要一直等到它完成同步。

這個(gè)問(wèn)題怎么解決?Leader維護(hù)了一個(gè)動(dòng)態(tài)的 in-sync replica set(ISR):和 Leader 保持同步的 Follower 集合。

當(dāng) ISR 集合中的 Follower 完成數(shù)據(jù)的同步之后,Leader 就會(huì)給 Follower 發(fā)送 ACK。

如果 Follower 長(zhǎng)時(shí)間未向 Leader 同步數(shù)據(jù),則該 Follower 將被踢出 ISR 集合,該時(shí)間閾值由 replica.lag.time.max.ms 參數(shù)設(shè)定。Leader 發(fā)生故障后,就會(huì)從 ISR 中選舉出新的 Leader。

③ACK 應(yīng)答機(jī)制

對(duì)于某些不太重要的數(shù)據(jù),對(duì)數(shù)據(jù)的可靠性要求不是很高,能夠容忍數(shù)據(jù)的少量丟失,所以沒(méi)必要等 ISR 中的 Follower 全部接受成功。

所以 Kafka 為用戶(hù)提供了三種可靠性級(jí)別,用戶(hù)根據(jù)可靠性和延遲的要求進(jìn)行權(quán)衡,選擇以下的配置。

Ack 參數(shù)配置:

  • 0:Producer 不等待 Broker 的 ACK,這提供了最低延遲,Broker 一收到數(shù)據(jù)還沒(méi)有寫(xiě)入磁盤(pán)就已經(jīng)返回,當(dāng) Broker 故障時(shí)有可能丟失數(shù)據(jù)。
  • 1:Producer 等待 Broker 的 ACK,Partition 的 Leader 落盤(pán)成功后返回 ACK,如果在 Follower 同步成功之前 Leader 故障,那么將會(huì)丟失數(shù)據(jù)。
  • -1(all):Producer 等待 Broker 的 ACK,Partition 的 Leader 和 Follower 全部落盤(pán)成功后才返回 ACK。但是在 Broker 發(fā)送 ACK 時(shí),Leader 發(fā)生故障,則會(huì)造成數(shù)據(jù)重復(fù)。

④故障處理細(xì)節(jié)

LEO:每個(gè)副本最大的 Offset。HW:消費(fèi)者能見(jiàn)到的最大的 Offset,ISR 隊(duì)列中最小的 LEO。

Follower 故障:Follower 發(fā)生故障后會(huì)被臨時(shí)踢出 ISR 集合,待該 Follower 恢復(fù)后,F(xiàn)ollower 會(huì) 讀取本地磁盤(pán)記錄的上次的 HW,并將 log 文件高于 HW 的部分截取掉,從 HW 開(kāi)始向 Leader 進(jìn)行同步數(shù)據(jù)操作。

等該 Follower 的 LEO 大于等于該 Partition 的 HW,即 Follower 追上 Leader 后,就可以重新加入 ISR 了。

Leader 故障:Leader 發(fā)生故障后,會(huì)從 ISR 中選出一個(gè)新的 Leader,之后,為保證多個(gè)副本之間的數(shù)據(jù)一致性,其余的 Follower 會(huì)先將各自的 log 文件高于 HW 的部分截掉,然后從新的 Leader 同步數(shù)據(jù)。

注意:這只能保證副本之間的數(shù)據(jù)一致性,并不能保證數(shù)據(jù)不丟失或者不重復(fù)。

Exactly Once 語(yǔ)義

將服務(wù)器的 ACK 級(jí)別設(shè)置為 -1,可以保證 Producer 到 Server 之間不會(huì)丟失數(shù)據(jù),即 At Least Once 語(yǔ)義。

相對(duì)的,將服務(wù)器 ACK 級(jí)別設(shè)置為 0,可以保證生產(chǎn)者每條消息只會(huì)被發(fā)送一次,即 At Most Once 語(yǔ)義。

At Least Once 可以保證數(shù)據(jù)不丟失,但是不能保證數(shù)據(jù)不重復(fù);相對(duì)的,At Most Once 可以保證數(shù)據(jù)不重復(fù),但是不能保證數(shù)據(jù)不丟失。

但是,對(duì)于一些非常重要的信息,比如交易數(shù)據(jù),下游數(shù)據(jù)消費(fèi)者要求數(shù)據(jù)既不重復(fù)也不丟失,即 Exactly Once 語(yǔ)義。

0.11 版本的 Kafka,引入了冪等性:Producer 不論向 Server 發(fā)送多少重復(fù)數(shù)據(jù),Server 端都只會(huì)持久化一條。

即:

  1. At Least Once + 冪等性 = Exactly Once 

要啟用冪等性,只需要將 Producer 的參數(shù)中 enable.idompotence 設(shè)置為 true 即可。

開(kāi)啟冪等性的 Producer 在初始化時(shí)會(huì)被分配一個(gè) PID,發(fā)往同一 Partition 的消息會(huì)附帶 Sequence Number。

而 Borker 端會(huì)對(duì)

但是 PID 重啟后就會(huì)變化,同時(shí)不同的 Partition 也具有不同主鍵,所以?xún)绲刃詿o(wú)法保證跨分區(qū)會(huì)話(huà)的 Exactly Once。

消費(fèi)者

消費(fèi)方式

Consumer 采用 Pull(拉取)模式從 Broker 中讀取數(shù)據(jù)。

Consumer 采用 Push(推送)模式,Broker 給 Consumer 推送消息的速率是由 Broker 決定的,很難適應(yīng)消費(fèi)速率不同的消費(fèi)者。

它的目標(biāo)是盡可能以最快速度傳遞消息,但是這樣很容易造成 Consumer 來(lái)不及處理消息,典型的表現(xiàn)就是拒絕服務(wù)以及網(wǎng)絡(luò)擁塞。

而 Pull 模式則可以根據(jù) Consumer 的消費(fèi)能力以適當(dāng)?shù)乃俾氏M(fèi)消息。Pull 模式不足之處是,如果 Kafka 沒(méi)有數(shù)據(jù),消費(fèi)者可能會(huì)陷入循環(huán)中,一直返回空數(shù)據(jù)。

因?yàn)橄M(fèi)者從 Broker 主動(dòng)拉取數(shù)據(jù),需要維護(hù)一個(gè)長(zhǎng)輪詢(xún),針對(duì)這一點(diǎn), Kafka 的消費(fèi)者在消費(fèi)數(shù)據(jù)時(shí)會(huì)傳入一個(gè)時(shí)長(zhǎng)參數(shù) timeout。

如果當(dāng)前沒(méi)有數(shù)據(jù)可供消費(fèi),Consumer 會(huì)等待一段時(shí)間之后再返回,這段時(shí)長(zhǎng)即為 timeout。

分區(qū)分配策略

一個(gè) Consumer Group 中有多個(gè) Consumer,一個(gè) Topic 有多個(gè) Partition,所以必然會(huì)涉及到 Partition 的分配問(wèn)題,即確定哪個(gè) Partition 由哪個(gè) Consumer 來(lái)消費(fèi)。

Kafka 有兩種分配策略,一個(gè)是 RoundRobin,一個(gè)是 Range,默認(rèn)為Range,當(dāng)消費(fèi)者組內(nèi)消費(fèi)者發(fā)生變化時(shí),會(huì)觸發(fā)分區(qū)分配策略(方法重新分配)。

①RoundRobin

RoundRobin 輪詢(xún)方式將分區(qū)所有作為一個(gè)整體進(jìn)行 Hash 排序,消費(fèi)者組內(nèi)分配分區(qū)個(gè)數(shù)最大差別為 1,是按照組來(lái)分的,可以解決多個(gè)消費(fèi)者消費(fèi)數(shù)據(jù)不均衡的問(wèn)題。

但是,當(dāng)消費(fèi)者組內(nèi)訂閱不同主題時(shí),可能造成消費(fèi)混亂,如下圖所示,Consumer0 訂閱主題 A,Consumer1 訂閱主題 B。

將 A、B 主題的分區(qū)排序后分配給消費(fèi)者組,TopicB 分區(qū)中的數(shù)據(jù)可能分配到 Consumer0 中。

②Range

Range 方式是按照主題來(lái)分的,不會(huì)產(chǎn)生輪詢(xún)方式的消費(fèi)混亂問(wèn)題。

但是,如下圖所示,Consumer0、Consumer1 同時(shí)訂閱了主題 A 和 B,可能造成消息分配不對(duì)等問(wèn)題,當(dāng)消費(fèi)者組內(nèi)訂閱的主題越多,分區(qū)分配可能越不均衡。

Offset 的維護(hù)

由于 Consumer 在消費(fèi)過(guò)程中可能會(huì)出現(xiàn)斷電宕機(jī)等故障,Consumer 恢復(fù)后,需要從故障前的位置繼續(xù)消費(fèi)。

所以 Consumer 需要實(shí)時(shí)記錄自己消費(fèi)到了哪個(gè) Offset,以便故障恢復(fù)后繼續(xù)消費(fèi)。

Kafka 0.9 版本之前,Consumer 默認(rèn)將 Offset 保存在 Zookeeper 中,從 0.9 版本開(kāi)始,Consumer 默認(rèn)將 Offset 保存在 Kafka 一個(gè)內(nèi)置的 Topic 中,該 Topic 為 __consumer_offsets。

總結(jié)

上面和大家一起深入探討了 Kafka 的架構(gòu),比較偏重理論和基礎(chǔ),這是掌握 Kafka 的必要內(nèi)容,接下來(lái)我會(huì)以代碼和實(shí)例的方式,更新 Kafka 有關(guān) API 以及事務(wù)、攔截器、監(jiān)控等高級(jí)篇,讓大家徹底理解并且會(huì)用 Kafka。

作者:臧遠(yuǎn)慧

簡(jiǎn)介:就職于中科星圖股份有限公司(北京),研發(fā)部后端技術(shù)組。個(gè)人擅長(zhǎng) Python/Java 開(kāi)發(fā),了解前端基礎(chǔ);熟練掌握 MySQL,MongoDB,了解 Redis;熟悉 Linux 開(kāi)發(fā)環(huán)境,掌握 Shell 編程,有良好的 Git 源碼管理習(xí)慣;精通 Nginx ,F(xiàn)lask、Swagger 開(kāi)發(fā)框架;有 Docker+Kubernetes 云服務(wù)開(kāi)發(fā)經(jīng)驗(yàn)。對(duì)人工智能、云原生技術(shù)有較大的興趣。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2022-10-21 08:17:13

MongoDB查詢(xún)Document

2020-06-17 14:13:29

索引數(shù)據(jù)庫(kù)場(chǎng)景

2022-08-15 08:01:00

三色標(biāo)記JVM算法

2020-06-30 08:12:32

VMwareKVMDocker

2018-06-04 08:40:20

磁盤(pán)分區(qū)MBR

2021-07-29 16:56:59

微信騰訊注冊(cè)

2025-04-03 10:39:56

2025-07-03 07:05:00

JavaScriptPromise代碼

2025-02-12 08:21:55

OllamaChatboxDeepSeek

2021-11-19 11:16:29

Git命令Linux

2020-11-27 09:20:56

零拷貝底層技術(shù)

2014-04-02 10:20:20

銳捷網(wǎng)絡(luò)云課堂

2010-04-22 14:38:24

培訓(xùn)

2015-05-07 10:10:06

云應(yīng)用開(kāi)發(fā)開(kāi)發(fā)者云平臺(tái)

2015-12-15 16:54:00

戴爾云計(jì)算

2016-05-09 10:27:36

MySQLHive數(shù)據(jù)遷移

2021-04-09 08:54:14

Kafka源碼架構(gòu)開(kāi)發(fā)技術(shù)

2021-06-09 10:29:23

Kafka架構(gòu)組件

2024-10-30 10:06:51

2021-12-07 07:32:09

kafka架構(gòu)原理
點(diǎn)贊
收藏

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

91在线小视频| 99精品国产在热久久下载| 欧美日韩一区在线| 小泽玛利亚av在线| 奇米影视888狠狠狠777不卡| 日韩成人免费在线| 欧美美女操人视频| 免费在线观看你懂的| 国产91亚洲精品久久久| 亚洲小说欧美激情另类| 亚洲国产精品日韩| 亚洲精品国产精品国| 日韩一区欧美二区| 欧美日韩成人精品| 国产精品国产三级国产专业不 | 91在线视频国产| 欧美三级不卡| 一道本无吗dⅴd在线播放一区| 亚洲女人在线观看| 春暖花开亚洲一区二区三区| 亚洲精品日日夜夜| 日本一区二区高清视频| 亚洲精品国偷拍自产在线观看蜜桃| 亚久久调教视频| 萌白酱国产一区二区| 一级肉体全黄裸片| 九九热hot精品视频在线播放| 欧美影院一区二区三区| 日韩精品―中文字幕| 麻豆影视国产在线观看| 青青青视频在线播放| 欧美成人国产精品一区二区| 狠狠躁少妇一区二区三区| 国产精品你懂的在线欣赏| 精品免费国产| 亚洲精品综合网| 国产在线乱码一区二区三区| 国产精品av在线| 粉嫩aⅴ一区二区三区| 亚洲精品二区三区| 三级精品视频久久久久| 精品人妻一区二区三区四区| 亚洲三级网页| 亚洲精品一区中文| 国产十八熟妇av成人一区| 欧美大片91| 欧美精品粉嫩高潮一区二区| 亚洲污视频在线观看| 三级成人在线| 日本乱人伦aⅴ精品| 欧美丰满熟妇bbbbbb百度| 丁香高清在线观看完整电影视频| 一区二区三区四区精品在线视频| 日本一区二区免费高清视频| 免费在线毛片网站| 综合久久久久综合| 国产精品美女在线播放| 国产精品刘玥久久一区| 亚洲日本乱码在线观看| 午夜探花在线观看| mm1313亚洲国产精品美女| 亚洲欧洲av色图| 国产四区在线观看| 在线观看午夜av| 亚洲摸摸操操av| 加勒比海盗1在线观看免费国语版| jizzjizz亚洲| 亚洲高清在线精品| 国产原创中文在线观看| 97成人资源| 欧美综合色免费| 九九热精品在线播放| 精品中文在线| 精品国产区一区| a级在线观看视频| 国产一区二区亚洲| 日韩在线激情视频| 精品国产乱码久久久久久鸭王1 | 亚洲美女自拍偷拍| av免费在线免费| 性久久久久久久| aa免费在线观看| 成人国产激情在线| 欧美一区二区美女| 国产性生活毛片| 国产日产精品_国产精品毛片| 中文字幕日韩精品在线| 老湿机69福利| 亚洲综合丁香| 国产一区二区香蕉| 人妻少妇精品无码专区久久| 久久亚区不卡日本| 在线观看成人一级片| 麻豆av在线免费观看| 色婷婷综合激情| 免费不卡av网站| 亚洲素人在线| 欧美老女人性视频| 黄色片网站在线免费观看| 久草在线在线精品观看| 国产一区二区三区无遮挡 | 久久久久久久久久看片| 一本一本a久久| 91破解版在线观看| 56国语精品自产拍在线观看| 日韩无码精品一区二区| 国产韩日影视精品| 欧美在线观看视频| www.日日夜夜| 欧美69xxxxx| 成人avav影音| 自拍偷拍亚洲色图欧美| 亚洲优女在线| 欧美一级欧美三级| 99精品欧美一区二区| 国内在线观看一区二区三区| 国产精品伦子伦免费视频| 日韩中文字幕免费观看| 中文字幕亚洲在| 国产在线观看福利| 6080成人| 日韩视频在线免费观看| 亚洲av中文无码乱人伦在线视色| 国产传媒一区在线| 一区二区视频在线观看| 经典三级一区二区| 日韩av综合网| 国产精品18p| 紧缚捆绑精品一区二区| 日韩精品久久久免费观看| 97天天综合网| 精品福利二区三区| 国产精品老熟女一区二区| 蜜桃av一区二区三区电影| 欧美日本韩国国产| 韩国成人二区| 亚洲精品ady| 国产一级片免费看| 国产91丝袜在线18| 久久精品国产精品亚洲精品色| 欧美日韩女优| 亚洲人在线视频| 欧美bbbbbbbbbbbb精品| 成人久久18免费网站麻豆| 日韩视频 中文字幕| 亚洲精品一区av| 最新日韩中文字幕| 中文字幕乱码无码人妻系列蜜桃| 久久久精品tv| 熟妇人妻无乱码中文字幕真矢织江| 天堂av一区二区三区在线播放| 久久久久国产视频| 国产成人三级在线观看视频| 亚洲一区二区在线免费看| av电影在线播放| 亚洲经典自拍| 久久久一本精品99久久精品| 日韩在线伦理| 亚洲人成网站777色婷婷| 精品国产一区二区三区四| 久久伊人蜜桃av一区二区| 久久久久狠狠高潮亚洲精品| 国产99精品| 国产精品欧美日韩久久| 色网站在线看| 欧美一区二视频| 久久综合激情网| av福利精品导航| 亚洲中文字幕无码不卡电影| 精品国产一区二区三区香蕉沈先生| 国产成+人+综合+亚洲欧美丁香花| se在线电影| 91精品蜜臀在线一区尤物| 免费又黄又爽又色的视频| www..com久久爱| 成人在线观看a| 日韩欧美精品一区| 92看片淫黄大片欧美看国产片| 影音先锋在线播放| 日韩成人av在线播放| 波多野结衣黄色网址| ㊣最新国产の精品bt伙计久久| 久久久国产精品久久久| 国产一区二区三区的电影| 欧美日韩精品免费看| 久草综合在线| 久久久人成影片一区二区三区| 亚洲av成人精品日韩在线播放| 欧洲人成人精品| 深夜福利影院在线观看| 91女神在线视频| 在线能看的av网站| 亚洲美女视频在线免费观看| 日韩资源av在线| 精品国产亚洲一区二区在线观看| 97精品免费视频| 9i精品一二三区| 精品国产a毛片| 丰满人妻一区二区三区四区| 夜夜嗨av一区二区三区四季av| 日本高清www| 国产一区二区精品久久91| 97超碰青青草| 欧美成人精品| 图片区小说区区亚洲五月| 成人中文字幕视频| 国产狼人综合免费视频| 麻豆理论在线观看| 美女av一区二区| 久久经典视频| 欧美日韩一本| www国产亚洲精品久久网站| 欧美一区二区公司| 欧美美女一区二区| www.伊人久久| 亚洲尤物在线视频观看| 女人黄色一级片| 91丨porny丨最新| 久久久久久久久久久影视| 日韩黄色在线观看| 久草视频国产在线| 99久久夜色精品国产亚洲96| 欧美黑人xxxxx| 久久草在线视频| 亚洲一区亚洲二区亚洲三区| 成人高清一区| 国产成人一区二区三区| 国产免费拔擦拔擦8x在线播放| 久久久97精品| 麻豆影院在线| 中文字幕日韩在线视频| 欧美成人综合在线| 亚洲高清免费观看高清完整版| 国产肥老妇视频| 欧美精品日韩一区| 中文字幕 国产精品| 精品久久久一区| 国产成人精品亚洲男人的天堂| 亚洲少妇屁股交4| 国产传媒视频在线| 欧美极品美女视频| www.黄色在线| 欧美国产成人精品| 成人在线观看免费高清| 国产亚洲一区二区三区四区| 最近中文字幕无免费| 成人中文字幕电影| 中文字幕99页| 成人激情黄色小说| 韩国三级hd两男一女| 风流少妇一区二区| 国产精品扒开腿做爽爽爽a片唱戏| 国产精品888| 中文字幕无码毛片免费看| 国产一区91精品张津瑜| 超碰91在线播放| 美女脱光内衣内裤视频久久网站| 中文字幕在线导航| 美女视频黄久久| 亚洲第一天堂久久| 国产一区二区三区免费在线观看| 日本网站在线看| 国产精品亚洲一区二区三区妖精| 18深夜在线观看免费视频| 国产91精品精华液一区二区三区| 中国特级黄色大片| 2020国产成人综合网| 国产jjizz一区二区三区视频| 欧美经典一区二区三区| 国产成人av免费在线观看| 亚洲一区影音先锋| 91精品国产高清一区二区三密臀| 在线精品观看国产| 97国产精品久久久| 欧美成人三级在线| 天堂a中文在线| 亚洲二区中文字幕| 免费黄网站在线观看| 日韩中文字幕精品| 丝袜在线视频| 欧洲一区二区视频| 95精品视频| 国产视频一区二区三区四区| 最近国产精品视频| 日韩在线三级| 亚洲午夜精品久久久久久app| 国产素人在线观看| 久久精品国产99国产精品| 日韩精品――色哟哟| 久久综合九色综合欧美98| 日本午夜精品视频| 亚洲va欧美va天堂v国产综合| 无码人妻av免费一区二区三区| 欧美剧情电影在线观看完整版免费励志电影 | 日韩一区日韩二区| 日韩av男人天堂| 精品视频在线看| 东京干手机福利视频| 亚洲日韩中文字幕在线播放| 99视频免费在线观看| 欧美在线观看网址综合| 二区三区精品| 免费在线国产精品| 欧美a级一区| 欧美午夜性生活| 成人av在线一区二区三区| 欧美成人久久久免费播放| 亚洲国产一区二区视频| 伊人免费在线观看| 日韩国产精品视频| 18+激情视频在线| 国产精品高潮呻吟久久av黑人| 91综合久久爱com| 亚洲人成人77777线观看| 亚洲精品在线二区| 在线播放黄色av| 国产午夜亚洲精品不卡| 日韩av片在线播放| 欧美一区二区国产| 天天影视久久综合| 日本久久久久亚洲中字幕| 99亚洲乱人伦aⅴ精品| 婷婷五月色综合| 老司机精品视频网站| 久久人妻少妇嫩草av无码专区| 亚洲精品国产精华液| 在线免费一级片| 亚洲一区www| 亚洲人成午夜免电影费观看| 9a蜜桃久久久久久免费| 欧美残忍xxxx极端| 日韩大片一区二区| 国产亚洲一区字幕| 欧美黄色一级大片| 精品视频久久久| 捆绑调教日本一区二区三区| 成人av资源| 欧美福利网址| 丰满少妇中文字幕| 亚洲欧美日韩一区二区| 亚洲一级视频在线观看| 在线播放日韩专区| 中文字幕系列一区| 日韩精品大片| 奇米777欧美一区二区| 精品一区二区三区蜜桃在线| 日本精品视频一区二区| 国产在线你懂得| 国产成人精品一区二区| 国产日产精品一区二区三区四区的观看方式 | 黄色免费在线网站| 成人国产精品一区二区| 久久久久久久久99精品大| 777一区二区| 综合激情成人伊人| av天堂一区二区三区| 欧美成人中文字幕在线| 日本一区二区三区播放| 91成人综合网| 99re热视频精品| 伊人中文字幕在线观看 | 免费a级黄色片| 色呦呦网站一区| fc2在线中文字幕| 国产在线精品播放| 亚洲午夜精品一区二区国产| 免费黄色av网址| 黑人精品xxx一区| 二区三区在线| 91性高湖久久久久久久久_久久99| 一区二区三区四区在线观看国产日韩 | 国产精品论坛| 日本午夜精品一区二区| 麻豆免费精品视频| 麻豆亚洲av熟女国产一区二 | 国产精品亚洲一区二区三区| 欧美国产一区二区三区激情无套| 又黄又爽又色的视频| 亚洲.国产.中文慕字在线| 日本a一级在线免费播放| 国产精品美乳一区二区免费| 小说区亚洲自拍另类图片专区| 久久精品aⅴ无码中文字字幕重口| 欧美色播在线播放| 日本三级视频在线播放| 成人区精品一区二区| 久久成人国产| 免费看一级大片| 亚洲激情在线观看| 本网站久久精品| 成人免费a级片| 国产午夜精品美女毛片视频| 精品国产99久久久久久宅男i| 97精品视频在线| 97精品视频| 女尊高h男高潮呻吟| 91 com成人网| 高潮一区二区| 国产精品久久久影院| 国产日韩av一区|