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

Kafka消費者那些事兒

開發 架構
kafka消費是很重要的一個環節,本文總結kafka消費者的一些重要機制,包括消費者的整個流程,消費的分區策略,消費的再平衡以及消費的位移管理。在明白這些機制以后,簡單講解了如何使用消費者consumer的API以及消費者中重要的參數。

前言

消息的消費一般有兩種模式,推模式和拉模式。推模式是服務端主動將消息推送給消費者,而拉模式是消費者主動向服務端發起請求來拉取消息。kakfa采用的是拉模式,這樣可以很好的控制消費速率。那么kafka消費的具體工作流程是什么樣的呢?kafka的位移管理又是怎么樣的呢?

消費者消費規則

kafka是以消費者組進行消費,一個消費者組,由多個consumer組成,他們和topic的消費規則如下:

圖片

  • topic的一個分區只能被消費組中的一個消費者消費。
  • 消費者組中的一個消費者可以消費topic一個或者多個分區。

通過這種分組、分區的消費方式,可以提高消費者的吞吐量,同時也能夠實現消息的發布/訂閱模式和點對點兩種模式。

消費者整體工作流程

消費者消費總體分為兩個步驟,第一步是制定消費的方案,就是這個組下哪個消費者消費哪個分區,第二個是建立網絡連接,獲取消息數據。

一、制定消費方案

圖片

  1. 消費者consumerA,consumerB, consumerC向kafka集群中的協調器coordinator發送JoinGroup的請求。coordinator主要是用來輔助實現消費者組的初始化和分區的分配。
  • coordinator老大節點選擇 = groupid的hashcode值 % 50( __consumer_offsets內置主題位移的分區數量)例如: groupid的hashcode值 為1,1% 50 = 1,那么__consumer_offsets 主題的1號分區,在哪個broker上,就選擇這個節點的coordinator作為這個消費者組的老大。消費者組下的所有的消費者提交offset的時候就往這個分區去提交offset。
  1. 選出一個 consumer作為消費中的leader,比如上圖中的consumerB。
  2. 消費者leader制定出消費方案,比如誰來消費哪個分區等,有Range分區策略、RoundRobin分區策略等。
  3. 把消費方案告訴給coordinator
  4. 最后coordinator就把消費方案下發給各個consumer, 圖中只畫了一條線,實際上是會下發到各個consumer。

二、消費者消費細節

現在已經初始化消費者組信息,知道哪個消費者消費哪個分區,接著我們來看看消費者細節。

圖片

  1. 消費者創建一個網絡連接客戶端ConsumerNetworkClient, 發送消費請求,可以進行如下配置:
  • fetch.min.bytes: 每批次最小抓取大小,默認1字節
  • fetch.max.bytes: 每批次最大抓取大小,默認50M
  • fetch.max.wait.ms:最大超時時間,默認500ms
  1. 發送請求到kafka集群
  2. 獲取數據成功,會將數據保存到completedFetches隊列中
  3. 消費者從隊列中抓取數據,根據配置max.poll.records一次拉取數據返回消息的最大條數,默認500條。
  4. 獲取到數據后,經過反序列化器、攔截器后,得到最終的消息。
  5. 最后一步是提交保存消費的位移offset,也就是這個消費者消費到什么位置了,這樣下次重啟也可以繼續從這個位置開始消費,關于offset的管理后面詳細介紹。

消費者分區策略

前面簡單提到了消費者組初始化的時候會對分區進行分配,那么具體的分配策略是什么呢,也就是哪個消費者消費哪個分區數據?

kafka有四種主流的分區分配策略: Range、RoundRobin、Sticky、CooperativeSticky。可以通過配置參數partition.assignment.strategy,修改分區的分配策略。默認策略是Range + CooperativeSticky。Kafka可以同時使用多個分區分配策略。

Range 分區策略

圖片

  • Range分區 是對每個 topic 而言的。對同一個 topic 里面的分區按照序號進行排序,并對消費者按照字母順序進行排序。
  • 通過 partitions數/consumer數 來決定每個消費者應該消費幾個分區。如果除不盡,那么前面幾個消費者將會多消費 1 個分區。

如上圖所示:有 7 個分區,3 個消費者,排序后的分區將會是0,1,2,3,4,5,6;消費者排序完之后將會是C0,C1,C2。7/3 = 2 余 1 ,除不盡,那么 消費者 C0 便會多消費 1 個分區。 8/3=2余2,除不盡,那么C0和C1分別多消費一個。

這種方式容易造成數據傾斜!如果有 N 多個 topic,那么針對每個 topic,消費者 C0都將多消費 1 個分區,topic越多,C0消費的分區會比其他消費者明顯多消費 N 個分區。

RoundRobin 分區策略

RoundRobin 針對集群中所有topic而言,RoundRobin 輪詢分區策略,是把所有的 partition 和所有的consumer 都列出來,然后按照 hashcode 進行排序,最后通過輪詢算法來分配 partition 給到各個消費者。

圖片

Sticky 和Cooperative Sticky分區策略

Sticky是粘性的意思,它是從 0.11.x 版本開始引入這種分配策略,首先會盡量均衡的放置分區到消費者上面,在出現同一消費者組內消費者出現問題的時候,在rebalance會盡量保持原有分配的分區不變化,這樣可以節省開銷。

Cooperative Sticky和Sticky類似,但是它會將原來的一次大規模rebalance操作,拆分成了多次小規模的rebalance,直至最終平衡完成,所以體驗上會更好。

關于什么是rebalance繼續往下看你就知道了。

消費者再均衡

上面也提到了rebalance,也就是再均衡。當kafka發生下面的情況會進行在均衡,也就是重新給消費者分配分區:

  • 有新的消費者加入消費組。 ?
  • 有消費者宕機下線,消費者并不一定需要真正下線,例如遇到長時間的 GC 、網絡延遲導致消費者長時間未向Group Coordinator發送心跳等情況時,GroupCoordinator 會認為消費者己下線。 ?
  • 有消費者主動退出消費組。
  • 消費組所對應的Group Coorinator節點發生了變更。 ?
  • 消費組內所訂閱的任一主題或者主題的分區數量發生變化。

消費者位移offset管理

消費者需要保存當前消費到分區的什么位置了,這樣哪怕消費者故障,重啟后也能繼續消費,這就是消費者的維護offset管理。

一、消費者位移offset存儲位置

消費者位移offset存儲在哪呢?

  • kafka0.9版本之前,consumer默認將offset保存在Zookeeper中
  • 從0.9版本開始,consumer默認將offset保存在Kafka一個內置的topic中,該topic為__consumer_offsets,這樣可以大量減少和zookeeper的交互。
  • __consumer_offsets 主題里面采用 key 和 value 的方式存儲數據。key 是 group.id+topic+分區號,value 就是當前 offset 的值。

如何查看__consumer_offsets主題內容?

  • 在配置文件 config/consumer.properties 中添加配置 exclude.internal.topics=false,默認是 true,表示不能消費系統主題。為了查看該系統主題數據,所以該參數修改為 false。
  • 查看消費者消費主題__consumer_offsets。
bin/kafka-console-consumer.sh --topic 
__consumer_offsets --bootstrap-server hadoop102:9092 --
consumer.config config/consumer.properties --formatter 
"kafka.coordinator.group.GroupMetadataManager$OffsetsMessageForm
atter" --from-beginning
## topic1 1號分區
[offset,topic1,1]::OffsetAndMetadata(offset=7, 
leaderEpoch=Optional[0], metadata=, commitTimestamp=1622442520203, 
expireTimestamp=None)
## topic1 0號分區
[offset,topic1,0]::OffsetAndMetadata(offset=8, 
leaderEpoch=Optional[0], metadata=, commitTimestamp=1622442520203, 
expireTimestamp=None)

二、消費者位移offset提交保存模式

消費者是如何提交保存位移offset呢?

自動提交

為了使我們能夠專注于自己的業務邏輯,kafka默認提供了自動提交offset的功能。這個由消費者客戶端參數 enable.auto.commit 配置, 默認值為 true 。當然這個默認的自動提交不是每消費一條消息就提交一次,而是定期提交,這個定期的周期時間由客戶端參數 auto.commit.interval.ms 配置,默認值為 5 秒。

圖片

  • 消費者每隔 5 秒會將拉取到的每個分區中最大的消息位移進行提交。
  • 自動位移提交 的動作是在 poll() 方法的邏輯里完成的,在每次真正向服務端發起拉取請求之前會檢查是否可以進行位移提交,如果可以,那么就會提交上一次輪詢的位移。

自動提交會帶來什么問題?

自動提交消費位移的方式非常簡便,但會帶來是重復消費的問題。

圖片

假設剛剛提交完一次消費位移,然后拉取一批消息進行消費,在下一次自動提交消費位移之前,消費者崩潰了,那么又得從上一次位移提交的地方重新開始消費,這樣便發生了重復消費的現象。

我們可以通過減小位移提交的時間間隔來減小重復消息的窗口大小,但這樣 并不能避免重復消費的發送,而且也會使位移提交更加頻繁。

手動提交

很多時候并不是說拉取到消息就算消費完成,而是需要將消息寫入數據庫、寫入本地緩存,或者是更 加復雜的業務處理。在這些場景下,所有的業務處理完成才能認為消息被成功消費。手動的提交方式可以讓開發人員根據程序的邏輯在合適的地方進行位移提交。

// 是否自動提交 offset
 properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);

手動提交可以細分為同步提交和異步提交,對應于 KafkaConsumer 中的 commitSync()和 commitAsync()兩種類型的方法。

  • 同步提交方式

同步提交會阻塞當前線程,一直到提交成功,并且會自動失敗重試(由不可控因素導致,也會出現提交失?。?,它必須等待offset提交完畢,再去消費下一批數據。

// 同步提交 offset
consumer.commitSync();
  • 異步提交方式

異步提交則沒有失敗重試機制,故有可能提交失敗。它發送完提交offset請求后,就開始消費下一批數據了。

// 異步提交 offset
consumer.commitAsync();

那么手動提交會帶來什么問題呢?可能會出現"漏消息"的情況。

圖片

設置offset為手動提交,當offset被提交時,數據還在內存中未落盤,此時剛好消費者線程被kill掉,那么offset已經提交,但是數據未處理,導致這部分內存中的數據丟失。

我們可以通過消費者事物來解決這樣的問題。

其實無論是手動提交還是自動提交,都有可能出現消息重復和是漏消息,與我們的編程模型有關,需要我們開發的時候根據消息的重要程度來選擇合適的消費方案。

消費者API

一個正常的消費邏輯需要具備以下幾個步驟:

(1)配置消費者客戶端參數及創建相應的消費者實例;

(2)訂閱主題;

(3)拉取消息并消費;

(4)提交消費位移 offset;

(5)關閉消費者實例。

public class MyConsumer { 
    public static void main(String[] args) { 
        Properties props = new Properties(); 
        // 定義 kakfa 服務的地址,不需要將所有 broker 指定上 
        props.put("bootstrap.servers", "doitedu01:9092"); 
        // 制定 consumer group 
        props.put("group.id", "g1"); 
        // 是否自動提交 offset 
        props.put("enable.auto.commit", "true"); 
        // 自動提交 offset 的時間間隔 
        props.put("auto.commit.interval.ms", "1000");
        // key 的反序列化類 
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 
        // value 的反序列化類
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 
        // 如果沒有消費偏移量記錄,則自動重設為起始 offset:latest, earliest, none 
        props.put("auto.offset.reset","earliest");
    
    	// 定義 consumer 
        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); 
        // 消費者訂閱的 topic, 可同時訂閱多個 
        consumer.subscribe(Arrays.asList("first", "test","test1"));
        while (true) { 
            // 讀取數據,讀取超時時間為 100ms 
            ConsumerRecords<String, String> records = consumer.poll(100); 
            for (ConsumerRecord<String, String> record : records) 
            	System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); 
        } 
	} 
}

訂閱主題

  • 指定集合方式訂閱主題
consumer.subscribe(Arrays.asList(topicl )); 
consumer subscribe(Arrays.asList(topic2))
  • 正則方式訂閱主題

如果消費者采用的是正則表達式的方式(subscribe(Pattern))訂閱, 在之后的過程中,如果 有人又創建了新的主題,并且主題名字與正表達式相匹配,那么這個消費者就可以消費到 新添加的主題中的消息。

consumer.subscribe(Pattern.compile ("topic.*" ));
  • 訂閱主題指定分區

消費者不僅可以通過 KafkaConsumer.subscribe()方法訂閱主題,還可直接訂閱某些主題的指定分區。

consumer.assign(Arrays.asList(new TopicPartition ("tpc_1" , 0),new TopicPartition(“tpc_2”,1))) ;

取消訂閱

通過unsubscribe()方法采取消主題的訂閱。

consumer.unsubscribe();

poll()拉取消息

kafka 中的消息消費是一個不斷輪詢的過程,消費者所要做的就是重復地調用 poll() 方法, poll()方法返回的是所訂閱的主題(分區)上的一組消息。

對于 poll () 方法而言,如果某些分區中沒有可供消費的消息,那么此分區對應的消息拉取的結果就為空。

public ConsumerRecords<K, V> poll(final Duration timeout)

超時時間參數 timeout ,用來控制 poll() 方法的阻塞時間,在消費者的緩沖區里沒有可用數據時會發生阻塞。

指定位移消費

有些時候,我們需要一種更細粒度的掌控,可以讓我們從特定的位移處開始拉取消息,而 KafkaConsumer 中的 seek( 方法正好提供了這個功能,讓我們可以追前消費或回溯消費。

public void seek(TopicPartiton partition,long offset)

消費者重要參數

最后我們總結一下消費者中重要的參數配置。

參數名稱

描述

bootstrap.servers

向 Kafka 集群建立初始連接用到的 host/port 列表。

key.deserializer 和value.deserializer

指定接收消息的 key 和 value 的反序列化類型。一定要寫全類名。

group.id

標記消費者所屬的消費者組。

enable.auto.commit

默認值為 true,消費者會自動周期性地向服務器提交偏移量。

auto.commit.interval.ms

如果設置了 enable.auto.commit 的值為 true, 則該值定義了消費者偏移量向 Kafka 提交的頻率,默認 5s。

auto.offset.reset

當 Kafka 中沒有初始偏移量或當前偏移量在服務器中不存在(如,數據被刪除了),該如何處理? earliest:自動重置偏移量到最早的偏移量。 latest:默認,自動重置偏移量為最新的偏移量。 none:如果消費組原來的(previous)偏移量不存在,則向消費者拋異常。 anything:向消費者拋異常。

offsets.topic.num.partitions

__consumer_offsets 的分區數,默認是 50 個分區。

heartbeat.interval.ms

Kafka 消費者和 coordinator 之間的心跳時間,默認 3s。該條目的值必須小于 session.timeout.ms ,也不應該高于session.timeout.ms 的 1/3。

session.timeout.ms

Kafka 消費者和 coordinator 之間連接超時時間,默認 45s。超過該值,該消費者被移除,消費者組執行再平衡。

max.poll.interval.ms

消費者處理消息的最大時長,默認是 5 分鐘。超過該值,該消費者被移除,消費者組執行再平衡。

fetch.min.bytes

默認 1 個字節。消費者獲取服務器端一批消息最小的字節數。

fetch.max.wait.ms

默認 500ms。如果沒有從服務器端獲取到一批數據的最小字節數。該時間到,仍然會返回數據。

fetch.max.bytes

默認 Default: 52428800(50 m)。消費者獲取服務器端一批消息最大的字節數。如果服務器端一批次的數據大于該值(50m)仍然可以拉取回來這批數據,因此,這不是一個絕對最大值。一批次的大小受 message.max.bytes (broker config)or max.message.bytes (topic config)影響。

max.poll.records

一次 poll 拉取數據返回消息的最大條數,默認是 500 條。

總結

kafka消費是很重要的一個環節,本文總結kafka消費者的一些重要機制,包括消費者的整個流程,消費的分區策略,消費的再平衡以及消費的位移管理。在明白這些機制以后,簡單講解了如何使用消費者consumer的API以及消費者中重要的參數。

責任編輯:武曉燕 來源: JAVA旭陽
相關推薦

2021-07-08 05:52:34

Kafka架構主從架構

2021-10-26 10:50:25

Kafkabroker

2015-08-26 09:39:30

java消費者

2022-08-02 10:01:42

架構

2022-07-07 09:00:49

RocketMQ消費者消息消費

2011-08-05 16:21:24

2011-07-22 16:25:38

CA TechnoloIT消費化

2025-06-12 02:15:00

Kafka消費者高并發

2021-06-28 11:45:28

Kafka消費者參數

2009-08-13 13:14:31

C#生產者和消費者

2021-12-28 12:01:59

Kafka 消費者機制

2025-04-16 00:00:00

2015-06-15 11:29:34

數據中心綠色數據中心

2021-12-22 11:00:05

模型Golang語言

2009-04-15 11:17:23

2018-05-16 23:37:55

攜號轉網運營商網絡

2024-01-24 09:00:31

SSD訂閱關系內存

2015-08-31 10:45:02

數據

2022-01-04 06:51:53

AI消費者行為

2024-04-22 00:00:00

RocketMQ優化位點
點贊
收藏

51CTO技術棧公眾號

69av在线播放| 高清不卡一区二区| 这里只有精品在线播放| 欧美激情第3页| 污污的视频在线观看| 99精品视频免费在线观看| 国产亚洲精品久久久久久| 最新中文字幕2018| 色yeye免费人成网站在线观看| 妖精一区二区三区精品视频| 福利视频第一区| 影音先锋欧美在线| 午夜小视频免费| 国内外成人在线视频| 亚洲 日韩 国产第一| 国产免费嫩草影院| 日韩大胆成人| 亚洲综合激情网| 日日夜夜精品网站| 日本激情一区二区三区| 麻豆91在线播放| 69视频在线播放| 91视频综合网| 成人在线免费视频观看| 亚洲国产精品电影| 国内精品国产三级国产aⅴ久| www.av在线播放| 成人自拍视频在线观看| 国产欧美精品一区二区| 中文字幕黄色片| 激情综合自拍| 欧美另类极品videosbest最新版本| aa在线免费观看| 人妻va精品va欧美va| 紧缚捆绑精品一区二区| 国产精品高潮呻吟久久av野狼| 蜜桃av免费看| 99国产精品久久一区二区三区| 亚洲mv在线观看| 视频一区二区视频| eeuss影院在线播放| 91蜜桃在线免费视频| 国产女主播一区二区三区| 久久久久久国产精品免费播放| 在这里有精品| 欧美精品免费视频| 在线观看的毛片| 天堂av在线| 精品久久久久久亚洲精品| 久久亚洲国产成人精品无码区| 天堂成人在线| 久久久综合网| 91精品国产99| 国产黄色片免费看| 一区二区三区四区五区精品视频| 亚洲欧美成人精品| 添女人荫蒂视频| 午夜伦理福利在线| 精品高清一区二区三区| 男女啪啪免费视频网站| 黄视频免费在线看| 欧美性猛交xxxx乱大交蜜桃| 国产男女无遮挡| 成人做爰视频www网站小优视频| 亚洲视频在线观看一区| 色中文字幕在线观看| 黄色网在线播放| 亚洲另类在线视频| 国产又粗又猛又爽又黄的网站| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 在线免费看av的网站| 免费在线看一区| 欧美激情三级免费| 日韩 欧美 亚洲| 亚洲欧美视频| 国产精品第七十二页| 伊人网综合在线| 影音先锋国产精品| 欧美在线国产精品| 中文在线观看av| 久久99久久99| 国产福利不卡| 毛片在线能看| 国产v日产∨综合v精品视频| 国产成人精品免费视频大全最热| 中文字幕永久在线视频| 精品一区二区三区久久| 成人xxxxx色| 你懂得网站在线| 中文字幕一区二区三区av| 欧美日韩福利在线| 成人亚洲免费| 欧美tickling网站挠脚心| 草草影院第一页| 国产精品videosex性欧美| 久久久久久久国产精品视频| 高清乱码免费看污| 国产乱码精品1区2区3区| 国产欧美丝袜| 免费的黄网站在线观看| 偷拍与自拍一区| 亚洲午夜精品一区| 综合亚洲自拍| 久久这里有精品视频| 国产一级免费视频| 成人av资源在线| 伊人精品久久久久7777| 一个人www视频在线免费观看| 亚洲线精品一区二区三区八戒| 视频一区二区视频| xxxxxx欧美| 欧美成人精品1314www| 女女互磨互喷水高潮les呻吟| 国产一区二区三区91| 欧美日韩第一视频| 在线观看亚洲国产| 久久久久亚洲蜜桃| 国产尤物av一区二区三区| 成人视屏在线观看| 日韩精品在线观看一区| 国产亚洲自拍av| 韩国精品免费视频| 日韩中文一区二区三区| 日韩理论视频| 亚洲第一页在线| 久久国产精品二区| 欧美二区不卡| 国产精自产拍久久久久久| 无码精品视频一区二区三区| 一区二区国产视频| 日本r级电影在线观看| 日韩精品诱惑一区?区三区| 欧洲亚洲免费视频| 天堂在线视频观看| 亚洲国产日韩精品| wwwww在线观看| 欧美精品午夜| 欧美极品欧美精品欧美视频| 国产精品国产三级国产普通话对白| 国产精品99久久久久久有的能看| 成人18视频| 26uuu亚洲电影在线观看| 911精品国产一区二区在线| 波多野吉衣中文字幕| 国产精品资源| 国产精品久久久久久久app| 天堂av电影在线观看| 亚洲va欧美va国产va天堂影院| 日韩免费毛片视频| 亚洲人成精品久久久| 97av在线视频| 色综合成人av| 日本韩国欧美三级| 人妻aⅴ无码一区二区三区| 男人天堂欧美日韩| 亚洲第一综合| 999色成人| 欧美片一区二区三区| 亚洲AV午夜精品| 久久久不卡网国产精品二区| 草草草在线视频| 成人同人动漫免费观看| 国产精品高潮粉嫩av| 麻豆最新免费在线视频| 日韩一区二区三区观看| 久青草免费视频| 99久久精品免费看国产| 亚洲成人午夜在线| 四虎在线精品| 欧美二区在线播放| 亚洲欧美日本在线观看| 在线视频国内自拍亚洲视频| 欧美美女性生活视频| 亚洲精品影视| 欧美一区免费视频| 涩涩涩久久久成人精品| 精品中文字幕在线观看| 性猛交xxxx| 欧美日韩卡一卡二| 久久高清无码视频| 欧美经典一区二区| 精品人妻无码中文字幕18禁| 国产欧美日韩亚洲一区二区三区| 97人人干人人| 涩涩视频在线播放| 最新的欧美黄色| 国产乱叫456在线| 婷婷综合另类小说色区| 国产成人一区二区在线观看| 国产精品夜夜嗨| 久草青青在线观看| 亚洲综合色站| 免费成人看片网址| 波多野结依一区| 一色桃子一区二区| 国精产品一品二品国精品69xx | 久久久久久久久久久97| 91免费视频大全| 日韩av影视大全| 噜噜噜在线观看免费视频日韩| 国产一区二区三区奇米久涩| 欧美黑人巨大xxxxx| 久久亚洲精品国产亚洲老地址| 夜夜嗨av禁果av粉嫩avhd| 亚洲一级不卡视频| 久久人妻无码aⅴ毛片a片app| 麻豆91在线播放| 欧美日韩国产精品激情在线播放| 国产精品极品| 国产精品亚洲美女av网站| 国产网红女主播精品视频| 在线观看欧美www| 奇米影视888狠狠狠777不卡| 日韩午夜av电影| 一区二区精品视频在线观看| 黑人巨大精品欧美一区免费视频 | 亚洲高清久久久| 日本黄色激情视频| 2019国产精品| 亚洲熟妇一区二区| 久99久精品视频免费观看| 欧美黄色免费影院| 91久久夜色精品国产九色| 亚洲天堂第一区| 91精品综合久久久久久久久久久| 成人黄色在线观看| 成人黄色在线| 国产精品久久久久久久久粉嫩av| av一区在线观看| 欧美在线free| 国产成人免费观看视频| 亚洲综合在线视频| 加勒比av在线播放| 成人欧美一区二区三区白人| 内射毛片内射国产夫妻| 国产日本一区二区| 成人午夜剧场视频网站| 26uuuu精品一区二区| 北岛玲一区二区| 99久久伊人久久99| 欧美熟妇精品黑人巨大一二三区| 老司机一区二区三区| 精品这里只有精品| 亚洲深爱激情| 国产精品亚洲αv天堂无码| 久久高清一区| 欧美少妇性生活视频| 日本午夜一区二区| 日韩一区二区三区久久| 久久99久久精品| 一区二区三区欧美精品| 国内精品视频一区二区三区八戒| 欧美老熟妇喷水| 久久国产精品久久w女人spa| 国产乱子夫妻xx黑人xyx真爽| 91精品国产视频| 欧美少妇一级片| 黄色亚洲大片免费在线观看| 日韩美女爱爱视频| 国产亚洲一级| www.日日操| 久久99九九99精品| 亚洲精品成人无码毛片| 久久亚洲一区二区三区明星换脸| 日韩在线一区视频| 老司机免费视频久久| 日本成人在线免费视频| 久久成人久久爱| 日本少妇激三级做爰在线| 国产成人av网站| 中文字幕一区三区久久女搜查官| 久久99精品久久久久久| 色哟哟免费视频| 9久草视频在线视频精品| 日本黄色网址大全| 欧美激情一区二区在线| 三级av在线免费观看| 五月婷婷另类国产| 中文字幕丰满人伦在线| 日韩视频不卡中文| 久草在线青青草| 久久综合伊人77777| 国产网站在线| 国产视频观看一区| 麻豆一区二区麻豆免费观看| 人偷久久久久久久偷女厕| 国产精品99在线观看| 国产成人精品视频免费看| 理论片日本一区| 99久久人妻无码中文字幕系列| 国产乱码精品一区二区三区五月婷| 欧美精品aaaa| 国产成人av影院| 欧美人妻一区二区三区| 一区二区三区四区在线免费观看| 黄色香蕉视频在线观看| 亚洲电影在线播放| 国产影视一区二区| 国产人妻精品一区二区三区| 欧美综合在线视频| www.五月婷婷| 亚洲最新av在线网站| 国模雨婷捆绑高清在线| 国产在线视频欧美| 日本韩国欧美超级黄在线观看| 国产在线精品一区二区三区》| 视频免费一区二区| 亚洲精品第一区二区三区| 亚洲欧洲一区| 波多野结衣电影免费观看| 国产女同互慰高潮91漫画| 久久精品99久久久久久| 欧美猛男gaygay网站| 精品无人乱码| 2019av中文字幕| 超碰cao国产精品一区二区| 在线观看免费黄色片| 日韩大片在线| 国产成人无码精品久久久性色| 国产精品美女久久久| 亚洲黄色av片| 欧美国产1区2区| 日韩在线不卡av| 欧美中文字幕亚洲一区二区va在线 | 成人h动漫精品一区二区无码| 欧美一区二区三区日韩视频| 999久久久久| 在线午夜精品自拍| 久久sese| 欧美日韩在线一二三| 夜夜夜久久久| 中文字幕精品久久久| 亚洲午夜免费电影| 亚洲第一天堂网| 欧美极品在线视频| 在线精品国产亚洲| 又大又硬又爽免费视频| 国产999精品久久久久久| 欧美日韩偷拍视频| 一区二区三区欧美在线观看| 91国内精品久久久| 久久精品国产亚洲7777| 人交獸av完整版在线观看| 91在线网站视频| 欧美影院一区| 不许穿内裤随时挨c调教h苏绵| 2017欧美狠狠色| 中文字幕国产在线观看| 亚洲欧洲日产国码av系列天堂| 蜜桃视频在线观看www社区| 91精品久久久久久久久| 久久高清免费| 中文字幕1234区| 亚洲永久免费视频| 色一情一乱一区二区三区| 69av视频在线播放| 精品国产美女| xxww在线观看| 亚洲精品国产品国语在线app| 欧美亚洲另类小说| 中文字幕日韩欧美在线| 男人天堂久久| 国产福利久久| 性色一区二区三区| 国产三级在线观看完整版| 欧美日韩一本到| 免费黄色在线视频网站| 国产精品久久久久久久天堂 | 奇米影视一区二区三区小说| 我不卡一区二区| 欧美一区二区精品在线| av资源在线| 四虎一区二区| 国产精品一区二区视频| 亚洲黄色小说图片| 色偷偷av一区二区三区乱| 亚洲小说春色综合另类电影| 91猫先生在线| 中文字幕一区二区视频| 蜜臀久久久久久999| 国产精品白嫩初高中害羞小美女| 久久久久久毛片免费看 | 爱啪啪综合导航| 欧美在线3区| 国产精品99久久久| 麻豆成人免费视频| 欧美www在线| 久久99蜜桃| 制服.丝袜.亚洲.中文.综合懂| 亚洲免费在线电影| 亚洲av成人无码久久精品老人| 九色精品免费永久在线| 天美av一区二区三区久久| 538任你躁在线精品免费| 亚洲网友自拍偷拍| 日本网站在线免费观看视频| 久久99精品久久久久久水蜜桃| 男女精品视频| 久久婷婷国产麻豆91| 自拍亚洲一区欧美另类|